summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@tilera.com>2014-09-05 14:40:23 -0400
committerChris Metcalf <cmetcalf@tilera.com>2014-09-06 12:24:03 -0400
commit8622092d584962801e4248cd4bb4bef6e71827b0 (patch)
tree59a1913ca848fa3818327716497d4355afb667fa /ChangeLog
parent41488498b6d9440ee66ab033808cce8323bba7ac (diff)
downloadglibc-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 'ChangeLog')
-rw-r--r--ChangeLog6
1 files changed, 6 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 498e493659..393d03cb9b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-09-06  Chris Metcalf  <cmetcalf@tilera.com>
+
+	[BZ #17354]
+	* sysdeps/tile/dl-machine.h (elf_machine_rela): Add a MUNGE_SIGNED
+	macro for handling signed relocations.
+
 2014-09-03  Florian Weimer  <fweimer@redhat.com>
 
 	[BZ #17325]