diff options
-rw-r--r-- | ldso/ldso/ldso.c | 8 |
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 |