This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.21-541-ga2057c9


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  a2057c984e4314c3740f04cf54e36c824e4c8f32 (commit)
      from  a8e2112ae3e57fae592d84af2936a61d6239a248 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a2057c984e4314c3740f04cf54e36c824e4c8f32

commit a2057c984e4314c3740f04cf54e36c824e4c8f32
Author: Matthew Fortune <matthew.fortune@imgtec.com>
Date:   Thu Jun 11 10:43:48 2015 +0100

    Add support for DT_MIPS_RLD_MAP_REL.
    
    This tag allows debugging of MIPS position independent executables
    and provides access to shared library information.
    
    	* elf/elf.h (DT_MIPS_RLD_MAP_REL): New macro.
    	(DT_MIPS_NUM): Update.
    	* sysdeps/mips/dl-machine.h (ELF_MACHINE_DEBUG_SETUP): Handle
    	DT_MIPS_RLD_MAP_REL.

diff --git a/ChangeLog b/ChangeLog
index b61ea3c..b502c78 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-06-26  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* elf/elf.h (DT_MIPS_RLD_MAP_REL): New macro.
+	(DT_MIPS_NUM): Update.
+	* sysdeps/mips/dl-machine.h (ELF_MACHINE_DEBUG_SETUP): Handle
+	DT_MIPS_RLD_MAP_REL.
+
 2015-06-25  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #16559]
diff --git a/elf/elf.h b/elf/elf.h
index 12feb91..fbadda4 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -1727,7 +1727,11 @@ typedef struct
    PLT is writable.  For a non-writable PLT, this is omitted or has a zero
    value.  */
 #define DT_MIPS_RWPLT        0x70000034
-#define DT_MIPS_NUM	     0x35
+/* An alternative description of the classic MIPS RLD_MAP that is usable
+   in a PIE as it stores a relative offset from the address of the tag
+   rather than an absolute address.  */
+#define DT_MIPS_RLD_MAP_REL  0x70000035
+#define DT_MIPS_NUM	     0x36
 
 /* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */
 
diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h
index d63238a..8738564 100644
--- a/sysdeps/mips/dl-machine.h
+++ b/sysdeps/mips/dl-machine.h
@@ -68,10 +68,17 @@
    in l_info array.  */
 #define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM)
 
-/* If there is a DT_MIPS_RLD_MAP entry in the dynamic section, fill it in
-   with the run-time address of the r_debug structure  */
+/* If there is a DT_MIPS_RLD_MAP_REL or DT_MIPS_RLD_MAP entry in the dynamic
+   section, fill in the debug map pointer with the run-time address of the
+   r_debug structure.  */
 #define ELF_MACHINE_DEBUG_SETUP(l,r) \
-do { if ((l)->l_info[DT_MIPS (RLD_MAP)]) \
+do { if ((l)->l_info[DT_MIPS (RLD_MAP_REL)]) \
+       { \
+	 char *ptr = (char *)(l)->l_info[DT_MIPS (RLD_MAP_REL)]; \
+	 ptr += (l)->l_info[DT_MIPS (RLD_MAP_REL)]->d_un.d_val; \
+	 *(ElfW(Addr) *)ptr = (ElfW(Addr)) (r); \
+       } \
+     else if ((l)->l_info[DT_MIPS (RLD_MAP)]) \
        *(ElfW(Addr) *)((l)->l_info[DT_MIPS (RLD_MAP)]->d_un.d_ptr) = \
        (ElfW(Addr)) (r); \
    } while (0)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                 |    7 +++++++
 elf/elf.h                 |    6 +++++-
 sysdeps/mips/dl-machine.h |   13 ++++++++++---
 3 files changed, 22 insertions(+), 4 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]