Преглед на файлове

Looks like this is in fact needed to properly debug dynamically
linked stuff, so put it back but add a check for NULL

Eric Andersen преди 21 години
родител
ревизия
0d854372f7
променени са 1 файла, в които са добавени 8 реда и са изтрити 0 реда
  1. 8 0
      ldso/ldso/ldso.c

+ 8 - 0
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