forked from llvm-mirror/llvm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[llvm-readelf]Don't lose negative-ness of negative addends for no sym…
…bol relocations llvm-readelf prints relocation addends as: <symbol value>[+-]<absolute addend> where [+-] is determined from whether addend is less than zero or not. However, it does not print the +/- if there is no symbol, which meant that negative addends became their positive value with no indication that this had happened. This patch stops the absolute conversion when addends are negative and there is no associated symbol. Reviewed by: Higuoxing, mattd, MaskRay Differential Revision: https://reviews.llvm.org/D59095 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355696 91177308-0d34-0410-b5e6-96231b3b80d8
- Loading branch information
Showing
2 changed files
with
95 additions
and
17 deletions.
There are no files selected for viewing
74 changes: 74 additions & 0 deletions
74
test/tools/llvm-readobj/elf-reloc-negative-addend-no-sym.test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# Show that llvm-readelf properly prints the addend for relocations that do not | ||
# have an associated symbol but have a negative addend. | ||
|
||
# RUN: yaml2obj %s -o %t | ||
# RUN: llvm-readelf --relocations %t | FileCheck %s --check-prefix=REL | ||
# RUN: llvm-readelf --dyn-relocations %t | FileCheck %s --check-prefix=DYN | ||
|
||
# REL: Relocation section '.rela.text' at offset {{.*}} contains 1 entries: | ||
# REL-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend | ||
# REL-NEXT: 0000000000000000 0000000000000000 R_X86_64_NONE ffffffffffffffff | ||
# REL-EMPTY: | ||
# REL-NEXT: Relocation section '.rela.dyn' at offset {{.*}} contains 1 entries: | ||
# REL-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend | ||
# REL-NEXT: 0000000000000008 0000000000000000 R_X86_64_NONE ffffffffffffffff | ||
|
||
# DYN: 'RELA' relocation section at offset {{.*}} contains 24 bytes: | ||
# DYN-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend | ||
# DYN-NEXT: 0000000000000008 0000000000000000 R_X86_64_NONE ffffffffffffffff | ||
|
||
--- !ELF | ||
FileHeader: | ||
Class: ELFCLASS64 | ||
Data: ELFDATA2LSB | ||
Type: ET_EXEC | ||
Machine: EM_X86_64 | ||
Sections: | ||
- Name: .text | ||
Type: SHT_PROGBITS | ||
Size: 0x10 | ||
- Name: .rela.text | ||
Type: SHT_RELA | ||
Link: .symtab | ||
Info: .text | ||
Relocations: | ||
- Offset: 0 | ||
Type: R_X86_64_NONE | ||
Addend: -1 | ||
- Name: .dynamic | ||
Type: SHT_DYNAMIC | ||
Flags: [SHF_ALLOC] | ||
Address: 0x1000 | ||
AddressAlign: 0x1000 | ||
Entries: | ||
- Tag: DT_RELA | ||
Value: 0x1100 | ||
- Tag: DT_RELASZ | ||
Value: 24 | ||
- Tag: DT_RELAENT | ||
Value: 24 | ||
- Tag: DT_NULL | ||
Value: 0 | ||
- Name: .rela.dyn | ||
Type: SHT_RELA | ||
Flags: [SHF_ALLOC] | ||
Info: .text | ||
Address: 0x1100 | ||
AddressAlign: 0x100 | ||
Relocations: | ||
- Offset: 8 | ||
Type: R_X86_64_NONE | ||
Addend: -1 | ||
DynamicSymbols: | ||
Global: | ||
- Name: force_dynsym | ||
ProgramHeaders: | ||
- Type: PT_LOAD | ||
VAddr: 0x1000 | ||
Sections: | ||
- Section: .rela.dyn | ||
- Section: .dynamic | ||
- Type: PT_DYNAMIC | ||
VAddr: 0x1000 | ||
Sections: | ||
- Section: .dynamic |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters