mirror of git://sourceware.org/git/glibc.git
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. |
||
|---|---|---|
| .. | ||
| bits | ||
| nptl | ||
| tilegx | ||
| tilepro | ||
| Implies | ||
| Makefile | ||
| Versions | ||
| __longjmp.S | ||
| __tls_get_addr.S | ||
| _mcount.S | ||
| abort-instr.h | ||
| backtrace.c | ||
| bsd-_setjmp.S | ||
| bsd-setjmp.S | ||
| bzero.S | ||
| crti.S | ||
| crtn.S | ||
| dl-lookupcfg.h | ||
| dl-machine.h | ||
| dl-runtime.c | ||
| dl-start.S | ||
| dl-tls.c | ||
| dl-tls.h | ||
| dl-trampoline.S | ||
| ffs.c | ||
| ffsll.c | ||
| gccframe.h | ||
| jmpbuf-offsets.h | ||
| jmpbuf-unwind.h | ||
| ldsodefs.h | ||
| libm-test-ulps | ||
| machine-gmon.h | ||
| math_private.h | ||
| memcopy.h | ||
| preconfigure | ||
| s_fma.c | ||
| s_fmaf.c | ||
| setjmp.S | ||
| sfp-machine.h | ||
| sotruss-lib.c | ||
| stackguard-macros.h | ||
| stackinfo.h | ||
| start.S | ||
| sysdep.h | ||
| tls-macros.h | ||
| tst-audit.h | ||
| wordcopy.c | ||