diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-01-13 18:04:49 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-02-10 09:18:15 -0300 |
commit | 144761540a1e40b85997d195d9a226a500531dc9 (patch) | |
tree | 411791f3a2c8c5f7d838aa6e043d141e97f0523d | |
parent | d7703d3176d225d5743b21811d888619eba39e82 (diff) | |
download | glibc-144761540a1e40b85997d195d9a226a500531dc9.zip glibc-144761540a1e40b85997d195d9a226a500531dc9.tar.gz glibc-144761540a1e40b85997d195d9a226a500531dc9.tar.bz2 |
elf: Remove LD_USE_LOAD_BIAS
It is solely for prelink with PIE executables [1].
[1] https://sourceware.org/legacy-ml/libc-hacker/2003-11/msg00127.html
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | elf/dl-map-segments.h | 3 | ||||
-rw-r--r-- | elf/dl-support.c | 1 | ||||
-rw-r--r-- | elf/rtld.c | 13 | ||||
-rw-r--r-- | sysdeps/generic/ldsodefs.h | 5 | ||||
-rw-r--r-- | sysdeps/generic/unsecvars.h | 1 |
6 files changed, 4 insertions, 22 deletions
@@ -197,6 +197,9 @@ Deprecated and removed features, and other changes affecting compatibility: functionality to obtain the program mapping address can be achieved by using LD_TRACE_LOADED_OBJECTS to value of 2. +* The LD_USE_LOAD_BIAS has been removed. The variable was mainly used to + support prelink PIE binaries. + Changes to build and runtime requirements: * The audit module interface version LAV_CURRENT is increased to enable diff --git a/elf/dl-map-segments.h b/elf/dl-map-segments.h index 172692b..b3513e7 100644 --- a/elf/dl-map-segments.h +++ b/elf/dl-map-segments.h @@ -94,8 +94,7 @@ _dl_map_segments (struct link_map *l, int fd, prefer to map such objects at; but this is only a preference, the OS can do whatever it likes. */ ElfW(Addr) mappref - = (ELF_PREFERRED_ADDRESS (loader, maplength, - c->mapstart & GLRO(dl_use_load_bias)) + = (ELF_PREFERRED_ADDRESS (loader, maplength, c->mapstart) - MAP_BASE_ADDR (l)); /* Remember which part of the address space this object uses. */ diff --git a/elf/dl-support.c b/elf/dl-support.c index 0fff620..1977a2b 100644 --- a/elf/dl-support.c +++ b/elf/dl-support.c @@ -54,7 +54,6 @@ size_t _dl_platformlen; int _dl_debug_mask; int _dl_lazy; -ElfW(Addr) _dl_use_load_bias = -2; int _dl_dynamic_weak; /* If nonzero print warnings about problematic situations. */ @@ -365,7 +365,6 @@ struct rtld_global_ro _rtld_global_ro attribute_relro = ._dl_sysinfo = DL_SYSINFO_DEFAULT, #endif ._dl_debug_fd = STDERR_FILENO, - ._dl_use_load_bias = -2, ._dl_correct_cache_id = _DL_CACHE_DEFAULT_ID, #if !HAVE_TUNABLES ._dl_hwcap_mask = HWCAP_IMPORTANT, @@ -1742,12 +1741,6 @@ dl_main (const ElfW(Phdr) *phdr, ++GL(dl_ns)[LM_ID_BASE]._ns_nloaded; ++GL(dl_load_adds); - /* If LD_USE_LOAD_BIAS env variable has not been seen, default - to not using bias for non-prelinked PIEs and libraries - and using it for executables or prelinked PIEs or libraries. */ - if (GLRO(dl_use_load_bias) == (ElfW(Addr)) -2) - GLRO(dl_use_load_bias) = main_map->l_addr == 0 ? -1 : 0; - /* Starting from binutils-2.23, the linker will define the magic symbol __ehdr_start to point to our own ELF header if it is visible in a segment that also includes the phdrs. If that's not available, we use @@ -2657,12 +2650,6 @@ process_envvars (struct dl_main_state *state) #ifdef EXTRA_LD_ENVVARS_13 EXTRA_LD_ENVVARS_13 #endif - if (!__libc_enable_secure - && memcmp (envline, "USE_LOAD_BIAS", 13) == 0) - { - GLRO(dl_use_load_bias) = envline[14] == '1' ? -1 : 0; - break; - } break; case 14: diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index d1c6cd9..9878e7e 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -628,11 +628,6 @@ struct rtld_global_ro /* Location of the binary. */ EXTERN const char *_dl_origin_path; - /* -1 if the dynamic linker should honor library load bias, - 0 if not, -2 use the default (honor biases for normal - binaries, don't honor for PIEs). */ - EXTERN ElfW(Addr) _dl_use_load_bias; - /* Size of the static TLS block. */ EXTERN size_t _dl_tls_static_size; diff --git a/sysdeps/generic/unsecvars.h b/sysdeps/generic/unsecvars.h index 5ea8a4a..b50331b 100644 --- a/sysdeps/generic/unsecvars.h +++ b/sysdeps/generic/unsecvars.h @@ -22,7 +22,6 @@ "LD_PRELOAD\0" \ "LD_PROFILE\0" \ "LD_SHOW_AUXV\0" \ - "LD_USE_LOAD_BIAS\0" \ "LOCALDOMAIN\0" \ "LOCPATH\0" \ "MALLOC_TRACE\0" \ |