diff options
author | Ryan Prichard <rprichard@google.com> | 2018-06-27 17:21:50 -0700 |
---|---|---|
committer | Ryan Prichard <rprichard@google.com> | 2018-06-28 14:03:10 -0700 |
commit | 4089f56e6c7438eb98cb86c249cf0c01e22219c5 (patch) | |
tree | 80affcdf249524cf1414767b8eb40f00ca8acd0b /gcc-4.9/gcc/ada/a-cogeso.ads | |
parent | 81788f3d99d2c5952fa9a6d673e8d6a53b76d511 (diff) | |
download | toolchain_gcc-4089f56e6c7438eb98cb86c249cf0c01e22219c5.tar.gz toolchain_gcc-4089f56e6c7438eb98cb86c249cf0c01e22219c5.tar.bz2 toolchain_gcc-4089f56e6c7438eb98cb86c249cf0c01e22219c5.zip |
libgcc: work around old Bionic loader bug
dl_iterate_phdr returns a 0 load_base for a PIE executable when it should
return the address where the executable was loaded (e.g. the load base or
load bias). Recalculate the load base when it is zero. This recalculation
should work on any ELF file with a PT_PHDR segment -- it will calculate 0
for a non-PIE executable.
The load base is added to an ELF virtual address to produce a run-time
address. Recalculate it by subtracting the PT_PHDR's virtual address from
its run-time address.
Bug: https://github.com/android-ndk/ndk/issues/505
Test: manual
Test: run NDK tests (./checkbuild.py && ./run_tests.py)
Change-Id: I7de46c07a8b04e794b59f07b4d554238cfd6d5d9
Diffstat (limited to 'gcc-4.9/gcc/ada/a-cogeso.ads')
0 files changed, 0 insertions, 0 deletions