diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2014-09-05 14:40:23 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2014-09-06 12:24:03 -0400 |
commit | 8622092d584962801e4248cd4bb4bef6e71827b0 (patch) | |
tree | 59a1913ca848fa3818327716497d4355afb667fa /nptl/shlib-versions | |
parent | 41488498b6d9440ee66ab033808cce8323bba7ac (diff) | |
download | glibc-8622092d584962801e4248cd4bb4bef6e71827b0.tar.gz glibc-8622092d584962801e4248cd4bb4bef6e71827b0.tar.xz glibc-8622092d584962801e4248cd4bb4bef6e71827b0.zip |
[BZ #17354] tile: Fix up corner cases with signed relocations
Some types of relocations technically need to be signed rather than unsigned: in particular ones that are used with moveli or movei, or for jump and branch. This is almost never a problem. Jump and branch opcodes are pretty much uniformly resolved by the static linker (unless you omit -fpic for a shared library, which is not recommended). The moveli and movei opcodes that need to be sign-extended generally are for positive displacements, like the construction of the address of main() from _start(). However, tst-pie1 ends up with main below _start (in a different module) and the test failed due to signedness issues in relocation handling. This commit treats the value as signed when shifting (to preserve the high bit) and also sign-extends the value generated from the updated bundle when comparing with the desired bundle, which we do to make sure no overflow occurred. As a result, the tst-pie1 test now passes.
Diffstat (limited to 'nptl/shlib-versions')
0 files changed, 0 insertions, 0 deletions