summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ldso/ldso/ldso.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index b897c7dea..ad783774d 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -209,6 +209,7 @@ LD_BOOT(unsigned long args)
Elf32_auxv_t auxvt[AT_EGID + 1];
unsigned char *malloc_buffer, *mmap_zero;
Elf32_Dyn *dpnt;
+ Elf32_Dyn *dpnt_debug = NULL;
unsigned long *hash_addr;
struct r_debug *debug_addr;
int indx;
@@ -431,6 +432,8 @@ LD_BOOT(unsigned long args)
if (dpnt->d_tag == DT_DEBUG)
#ifdef FORCE_SHAREABLE_TEXT_SEGMENTS
dpnt->d_un.d_val = (unsigned long) debug_addr;
+#else
+ dpnt_debug = dpnt;
#endif
if (dpnt->d_tag == DT_TEXTREL)
app_tpnt->dynamic_info[DT_TEXTREL] = 1;
@@ -483,6 +486,11 @@ LD_BOOT(unsigned long args)
}
}
}
+
+ /* Now we can store the debug structure address */
+ if (dpnt_debug != NULL) {
+ dpnt_debug->d_un.d_val = (unsigned long) debug_addr;
+ }
#endif