summaryrefslogtreecommitdiffstats
path: root/DEPS
diff options
context:
space:
mode:
authorsimonb <simonb@chromium.org>2015-06-05 06:22:56 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-05 13:23:26 +0000
commita0add2c099683dcfc16d3b67c6c1c438c36c2ce7 (patch)
tree69714e2dab510d2f91169f25871dc039522e94cf /DEPS
parentf26052cd0dd7cc6d6461bb4dee9d0742a0685035 (diff)
downloadchromium_src-a0add2c099683dcfc16d3b67c6c1c438c36c2ce7.zip
chromium_src-a0add2c099683dcfc16d3b67c6c1c438c36c2ce7.tar.gz
chromium_src-a0add2c099683dcfc16d3b67c6c1c438c36c2ce7.tar.bz2
crazy linker: Fix incorrect link map l_addr value.
Link map's l_addr field should contain the load bias: - https://android-review.googlesource.com/#/c/46470/2/linker/linker.cpp It currently contains the load address. Where the min vaddr of LOAD segments is zero, the load address and load bias are the same, and the problem remains hidden. Android's relocation packer generates a non-zero min vaddr, and this exposes the problem on arm64 platforms. The symptom is abort in uw_init_context_1, where uw_frame_state_for returns _URC_END_OF_STACK rather than (expected) _URC_NO_REASON. gcc's stack unwinding code does not find correct unwinding information after an incorrect l_addr has been used to convert from virtual to physical addresses. Arm32 does not show the problem because it uses dl_unwind_find_exidx in place of _Unwind_IteratePhdrCallback. See also line 196 of: - https://android.googlesource.com/platform/bionic/+/ lollipop-mr1-release/linker/linker.cpp BUG=385553 Review URL: https://codereview.chromium.org/1155973005 Cr-Commit-Position: refs/heads/master@{#333040}
Diffstat (limited to 'DEPS')
0 files changed, 0 insertions, 0 deletions