ld.so: Replace (&bootstrap_map) with BOOTSTRAP_MAP
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 3 Oct 2017 08:55:00 +0000 (01:55 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 3 Oct 2017 08:55:12 +0000 (01:55 -0700)
(&_dl_main_map) is used instead of (&bootstrap_map) to bootstrap static
PIE.  Define BOOTSTRAP_MAP with (&_dl_main_map) to avoid hardcode to
(&bootstrap_map).

* elf/rtld.c (BOOTSTRAP_MAP): New.
(RESOLVE_MAP): Replace (&bootstrap_map) with BOOTSTRAP_MAP.
* sysdeps/hppa/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
Likewise.
* sysdeps/ia64/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
Likewise.
* sysdeps/mips/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
Likewise.

ChangeLog
elf/rtld.c
sysdeps/hppa/dl-machine.h
sysdeps/ia64/dl-machine.h
sysdeps/mips/dl-machine.h

index 9cbff97..d2444dd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2017-10-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * elf/rtld.c (BOOTSTRAP_MAP): New.
+       (RESOLVE_MAP): Replace (&bootstrap_map) with BOOTSTRAP_MAP.
+       * sysdeps/hppa/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
+       Likewise.
+       * sysdeps/ia64/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
+       Likewise.
+       * sysdeps/mips/dl-machine.h (ELF_MACHINE_BEFORE_RTLD_RELOC):
+       Likewise.
+
 2017-10-03  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
        * include/libc-symbols.h [NO_RTLD_HIDDEN] (rtld_hidden_proto,
index d8e75c0..90505ae 100644 (file)
@@ -454,7 +454,8 @@ _dl_start (void *arg)
      Since ld.so must not have any undefined symbols the result
      is trivial: always the map of ld.so itself.  */
 #define RTLD_BOOTSTRAP
-#define RESOLVE_MAP(sym, version, flags) (&bootstrap_map)
+#define BOOTSTRAP_MAP (&bootstrap_map)
+#define RESOLVE_MAP(sym, version, flags) BOOTSTRAP_MAP
 #include "dynamic-link.h"
 
   if (HP_TIMING_INLINE && HP_SMALL_TIMING_AVAIL)
index e24bd25..acfb9fc 100644 (file)
@@ -62,7 +62,7 @@ __hppa_init_bootstrap_fdesc_table (struct link_map *map)
 }
 
 #define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info)            \
-       __hppa_init_bootstrap_fdesc_table (&bootstrap_map);     \
+       __hppa_init_bootstrap_fdesc_table (BOOTSTRAP_MAP);      \
        _dl_fptr_init();
 
 /* Return nonzero iff ELF header is compatible with the running host.  */
index 8d0d3c9..b56f1c8 100644 (file)
@@ -45,7 +45,7 @@ __ia64_init_bootstrap_fdesc_table (struct link_map *map)
 }
 
 #define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info)            \
-       __ia64_init_bootstrap_fdesc_table (&bootstrap_map);
+       __ia64_init_bootstrap_fdesc_table (BOOTSTRAP_MAP);
 
 /* Return nonzero iff ELF header is compatible with the running host.  */
 static inline int __attribute__ ((unused))
index 8e9f685..b4fee49 100644 (file)
@@ -195,7 +195,7 @@ elf_machine_load_address (void)
    fiddles with global data.  */
 #define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info)                    \
 do {                                                                   \
-  struct link_map *map = &bootstrap_map;                               \
+  struct link_map *map = BOOTSTRAP_MAP;                                        \
   ElfW(Sym) *sym;                                                      \
   ElfW(Addr) *got;                                                     \
   int i, n;                                                            \