patches/eglibc/ports-2_16/003-mips-rld-map-check.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Thu Dec 27 12:53:32 2012 +0100 (2012-12-27)
changeset 3153 f6740f9e42de
permissions -rw-r--r--
scripts/addToolsVersion: handle elf2flt

The one was missing from the list.

It is very improbable that we ever need it, as elf2flt does no release,
and we always get it from CVS head. But for the sake of consistency, we
just add it.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
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)