mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-02 18:31:54 +00:00
[obj2yaml] - Better dumping for relocations without symbols associated.
This just reorders the code and removes an assignment of an empty string for the case when a relocation has no symbol associated. With this our output becomes cleaner and shorter. Differential revision: https://reviews.llvm.org/D69255
This commit is contained in:
parent
791ddaf763
commit
0dde941ced
@ -16,280 +16,188 @@
|
||||
# CHECK-NEXT: EntSize: 0x0000000000000018
|
||||
# CHECK-NEXT: Relocations:
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_NONE
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR32
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR24
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_LO
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR14
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR14_BRTAKEN
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR14_BRNTAKEN
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL24
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL14
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL14_BRTAKEN
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL14_BRNTAKEN
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT16
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT16_LO
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GLOB_DAT
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_JMP_SLOT
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_RELATIVE
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL32
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR64
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_HIGHER
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_HIGHERA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_HIGHEST
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_HIGHESTA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL64
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TOC16
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TOC16_LO
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TOC16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TOC16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TOC
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_LO_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT16_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT16_LO_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TOC16_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TOC16_LO_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TLS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPMOD64
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_LO
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL64
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_LO
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL64
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TLSGD16
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TLSGD16_LO
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TLSGD16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TLSGD16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TLSLD16
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TLSLD16_LO
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TLSLD16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TLSLD16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TPREL16_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TPREL16_LO_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TPREL16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_TPREL16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_DTPREL16_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_DTPREL16_LO_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_DTPREL16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_GOT_DTPREL16_HA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_LO_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_HIGHER
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_HIGHERA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_HIGHEST
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_HIGHESTA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_LO_DS
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_HIGHER
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_HIGHERA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_HIGHEST
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_HIGHESTA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TLSGD
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TLSLD
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_HIGH
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_ADDR16_HIGHA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_HIGH
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_TPREL16_HIGHA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_HIGH
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_DTPREL16_HIGHA
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_IRELATIVE
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL16
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL16_LO
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL16_HI
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_PPC64_REL16_HA
|
||||
|
||||
--- !ELF
|
||||
|
@ -21,10 +21,8 @@
|
||||
# CHECK-NEXT: Info: .text
|
||||
# CHECK-NEXT: Relocations:
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000000
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_X86_64_NONE
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000004
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: R_X86_64_NONE
|
||||
# CHECK-NEXT: Symbols: []
|
||||
# CHECK-NEXT: ...
|
||||
|
@ -16,10 +16,8 @@
|
||||
# CHECK-NEXT: EntSize: 0x0000000000000018
|
||||
# CHECK-NEXT: Relocations:
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000001
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: 0x00000002
|
||||
# CHECK-NEXT: - Offset: 0x0000000000000003
|
||||
# CHECK-NEXT: Symbol: ''
|
||||
# CHECK-NEXT: Type: 0x00000004
|
||||
|
||||
--- !ELF
|
||||
|
@ -409,27 +409,25 @@ Error ELFDumper<ELFT>::dumpRelocation(const RelT *Rel, const Elf_Shdr *SymTab,
|
||||
auto SymOrErr = Obj.getRelocationSymbol(Rel, SymTab);
|
||||
if (!SymOrErr)
|
||||
return SymOrErr.takeError();
|
||||
|
||||
// We have might have a relocation with symbol index 0,
|
||||
// e.g. R_X86_64_NONE or R_X86_64_GOTPC32.
|
||||
const Elf_Sym *Sym = *SymOrErr;
|
||||
if (!Sym)
|
||||
return Error::success();
|
||||
|
||||
auto StrTabSec = Obj.getSection(SymTab->sh_link);
|
||||
if (!StrTabSec)
|
||||
return StrTabSec.takeError();
|
||||
auto StrTabOrErr = Obj.getStringTable(*StrTabSec);
|
||||
if (!StrTabOrErr)
|
||||
return StrTabOrErr.takeError();
|
||||
StringRef StrTab = *StrTabOrErr;
|
||||
|
||||
if (Sym) {
|
||||
Expected<StringRef> NameOrErr = getUniquedSymbolName(Sym, StrTab, SymTab);
|
||||
if (!NameOrErr)
|
||||
return NameOrErr.takeError();
|
||||
R.Symbol = NameOrErr.get();
|
||||
} else {
|
||||
// We have some edge cases of relocations without a symbol associated,
|
||||
// e.g. an object containing the invalid (according to the System V
|
||||
// ABI) R_X86_64_NONE reloc. Create a symbol with an empty name instead
|
||||
// of crashing.
|
||||
R.Symbol = "";
|
||||
}
|
||||
Expected<StringRef> NameOrErr =
|
||||
getUniquedSymbolName(Sym, *StrTabOrErr, SymTab);
|
||||
if (!NameOrErr)
|
||||
return NameOrErr.takeError();
|
||||
R.Symbol = NameOrErr.get();
|
||||
|
||||
return Error::success();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user