[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gold/14097] New: Gold doesn't check R_X86_64_RELATIVE64 addend over
From: |
hjl.tools at gmail dot com |
Subject: |
[Bug gold/14097] New: Gold doesn't check R_X86_64_RELATIVE64 addend overflow |
Date: |
Fri, 11 May 2012 11:42:21 +0000 |
http://sourceware.org/bugzilla/show_bug.cgi?id=14097
Bug #: 14097
Summary: Gold doesn't check R_X86_64_RELATIVE64 addend overflow
Product: binutils
Version: 2.23 (HEAD)
Status: NEW
Severity: normal
Priority: P2
Component: gold
AssignedTo: address@hidden
ReportedBy: address@hidden
CC: address@hidden
Classification: Unclassified
R_X86_64_RELATIVE64 addend is 32-bit and can overflow.
Gold failed to check it:
address@hidden gold]$ cat tst-quadmod4.S
.section .data.rel.local,"aw",@progbits
.align 8
.Ljmp:
.quad func + 0x7fffffff
.text
.type func, @function
func:
ret
address@hidden gold]$ make bad LD=./ld.gold
gcc -B./ -mx32 -c -g -o tst-quadmod4.o tst-quadmod4.S
./ld.gold -shared -m elf32_x86_64 -o libtst-quadmod4.so tst-quadmod4.o
readelf -r --wide tst-quadmod4.o
Relocation section '.rela.data.rel.local' at offset 0x4c8 contains 1 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
00000000 00000101 R_X86_64_64 00000000 .text + 7fffffff
Relocation section '.rela.debug_line' at offset 0x4d4 contains 1 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
00000032 0000010a R_X86_64_32 00000000 .text + 0
Relocation section '.rela.debug_info' at offset 0x4e0 contains 4 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
00000006 0000070a R_X86_64_32 00000000 .debug_abbrev + 0
0000000c 0000080a R_X86_64_32 00000000 .debug_line + 0
00000010 0000010a R_X86_64_32 00000000 .text + 0
00000014 0000010a R_X86_64_32 00000000 .text + 1
Relocation section '.rela.debug_aranges' at offset 0x510 contains 2 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
00000006 0000060a R_X86_64_32 00000000 .debug_info + 0
00000010 0000010a R_X86_64_32 00000000 .text + 0
readelf -r --wide libtst-quadmod4.so
Relocation section '.rela.dyn' at offset 0x134 contains 1 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
000011c0 00000026 R_X86_64_RELATIVE64 -7ffffec1
address@hidden gold]$
When gold generates R_X86_64_RELATIVE64 for R_X86_64_64,
it changes the sign of addend. BFD linker issues an error:
address@hidden gold]$ ./ld.bfd -shared -m elf32_x86_64 -o libtst-quadmod4.so
tst-quadmod4.o
./ld.bfd: tst-quadmod4.o: addend 0x7fffffff in relocation R_X86_64_64 against
symbol `.text' at 0x0 in section `.data.rel.local' is out of range
./ld.bfd: final link failed: Bad value
address@hidden gold]$
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
- [Bug gold/14097] New: Gold doesn't check R_X86_64_RELATIVE64 addend overflow,
hjl.tools at gmail dot com <=