This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.21-541-ga2057c9
- From: mpf at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 26 Jun 2015 13:51:40 -0000
- Subject: 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