x86-64: fix shared libs
commitf15c0a93336ef42cec51d00667b5fd60fb309cd5
authorMichael Matz <matz@suse.de>
Thu, 17 Dec 2015 18:41:20 +0000 (17 19:41 +0100)
committerMichael Matz <matz@suse.de>
Thu, 17 Dec 2015 18:41:20 +0000 (17 19:41 +0100)
tree9c085e51cc8754463d27fac5d516fe9d7533c3c6
parente264243adc0910fba204fd05292a8353e272bd0e
x86-64: fix shared libs

The introduction of read32le everywhere created a subtle issue, going
from
   x = *(int*)p;
to
   x = read32le(p);
is not equivalent if x is a larger than 32bit quantity, like an
address on x86_64, because read32le returns an unsigned int.  The first
sign extends, the latter zero extends.  This broke shared library
creation for gawk.  It's enough to amend the case of the above
situation, cases like "write32le(p, read32le(p) +- something)" are okay,
no extensions happen or matter.
tccelf.c