author | Titus von Boxberg <titus@v9g.de> |
Tue Nov 06 17:42:39 2012 +0100 (2012-11-06) | |
changeset 3116 | f7a40ba0b651 |
permissions | -rw-r--r-- |
graycells@3058 | 1 |
|
graycells@3058 | 2 |
On mips target, binutils currently sets DT_MIPS_RLD_MAP to 0 in dynamic |
graycells@3058 | 3 |
section if a --version-script sets _RLD_MAP to local. This is apparently |
graycells@3058 | 4 |
a binutils bug, but libc shouldn't segfault in this case. |
graycells@3058 | 5 |
|
graycells@3058 | 6 |
see also: http://sourceware.org/bugilla/show_bug.cgi?id=11615 |
graycells@3058 | 7 |
|
graycells@3058 | 8 |
Upstream-Status: Pending |
graycells@3058 | 9 |
|
graycells@3058 | 10 |
9/19/2010 - added by Qing He <qing.he@intel.com> |
graycells@3058 | 11 |
|
graycells@3058 | 12 |
|
graycells@3058 | 13 |
--- |
graycells@3058 | 14 |
diff -ru glibc-2.10.1.orig/ports/sysdeps/mips/dl-machine.h glibc-2.10.1/sysdeps/mips/dl-machine.h |
graycells@3058 | 15 |
--- glibc-2.10.1.orig/ports/sysdeps/mips/dl-machine.h 2009-05-16 16:36:20.000000000 +0800 |
graycells@3058 | 16 |
+++ glibc-2.10.1/ports/sysdeps/mips/dl-machine.h 2010-09-19 09:11:53.000000000 +0800 |
graycells@3058 | 17 |
@@ -70,7 +70,8 @@ |
graycells@3058 | 18 |
/* If there is a DT_MIPS_RLD_MAP entry in the dynamic section, fill it in |
graycells@3058 | 19 |
with the run-time address of the r_debug structure */ |
graycells@3058 | 20 |
#define ELF_MACHINE_DEBUG_SETUP(l,r) \ |
graycells@3058 | 21 |
-do { if ((l)->l_info[DT_MIPS (RLD_MAP)]) \ |
graycells@3058 | 22 |
+do { if ((l)->l_info[DT_MIPS (RLD_MAP)] && \ |
graycells@3058 | 23 |
+ (l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) \ |
graycells@3058 | 24 |
*(ElfW(Addr) *)((l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) = \ |
graycells@3058 | 25 |
(ElfW(Addr)) (r); \ |
graycells@3058 | 26 |
} while (0) |