aboutsummaryrefslogtreecommitdiff
path: root/scripts/check-execstack.awk
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2021-10-07 11:55:02 -0700
committerCarlos O'Donell <carlos@redhat.com>2022-03-29 16:58:38 -0400
commit87bb97efa23eb2c332a81f00ad6a05540b39f3b9 (patch)
tree6411e2589f6c7b611476f9bd33fd7233eb5fcfe1 /scripts/check-execstack.awk
parentd53b9cc391c72a1011ea8fe7a9f70dc5060a0db2 (diff)
downloadglibc-87bb97efa23eb2c332a81f00ad6a05540b39f3b9.tar.xz
glibc-87bb97efa23eb2c332a81f00ad6a05540b39f3b9.zip
elf: Avoid nested functions in the loader [BZ #27220]
dynamic-link.h is included more than once in some elf/ files (rtld.c, dl-conflict.c, dl-reloc.c, dl-reloc-static-pie.c) and uses GCC nested functions. This harms readability and the nested functions usage is the biggest obstacle prevents Clang build (Clang doesn't support GCC nested functions). The key idea for unnesting is to add extra parameters (struct link_map *and struct r_scope_elm *[]) to RESOLVE_MAP, ELF_MACHINE_BEFORE_RTLD_RELOC, ELF_DYNAMIC_RELOCATE, elf_machine_rel[a], elf_machine_lazy_rel, and elf_machine_runtime_setup. (This is inspired by Stan Shebs' ppc64/x86-64 implementation in the google/grte/v5-2.27/master which uses mixed extra parameters and static variables.) Future simplification: * If mips elf_machine_runtime_setup no longer needs RESOLVE_GOTSYM, elf_machine_runtime_setup can drop the `scope` parameter. * If TLSDESC no longer need to be in elf_machine_lazy_rel, elf_machine_lazy_rel can drop the `scope` parameter. Tested on aarch64, i386, x86-64, powerpc64le, powerpc64, powerpc32, sparc64, sparcv9, s390x, s390, hppa, ia64, armhf, alpha, and mips64. In addition, tested build-many-glibcs.py with {arc,csky,microblaze,nios2}-linux-gnu and riscv64-linux-gnu-rv64imafdc-lp64d. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> (cherry picked from commit 490e6c62aa31a8aa5c4a059f6e646ede121edf0a)
Diffstat (limited to 'scripts/check-execstack.awk')
0 files changed, 0 insertions, 0 deletions