OSDN Git Service

Looks like this is in fact needed to properly debug dynamically
authorEric Andersen <andersen@codepoet.org>
Wed, 4 Dec 2002 05:47:30 +0000 (05:47 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 4 Dec 2002 05:47:30 +0000 (05:47 -0000)
linked stuff, so put it back but add a check for NULL

ldso/ldso/ldso.c

index b897c7d..ad78377 100644 (file)
@@ -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