mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-01 08:47:42 +00:00
[llvm-readobj] Impl GNU style printing of sections and relocations
Differential Revision: http://reviews.llvm.org/D17523 llvm-svn: 263561
This commit is contained in:
parent
d81fc2168d
commit
46e5dcc160
28
test/tools/llvm-readobj/gnu-relocations.test
Normal file
28
test/tools/llvm-readobj/gnu-relocations.test
Normal file
@ -0,0 +1,28 @@
|
||||
RUN: llvm-readobj -r %p/Inputs/relocs.obj.elf-i386 --elf-output-style=GNU \
|
||||
RUN: | FileCheck %s -check-prefix ELF32
|
||||
RUN: llvm-readobj -r %p/Inputs/relocs.obj.elf-x86_64 --elf-output-style=GNU \
|
||||
RUN: | FileCheck %s -check-prefix ELF64
|
||||
|
||||
ELF32: Relocation section '.rel.text' at offset 0x318 contains 41 entries:
|
||||
ELF32-NEXT: Offset Info Type Sym. Value Symbol's Name
|
||||
ELF32-NEXT: 00000002 00000500 R_386_NONE 00000000 sym
|
||||
ELF32-NEXT: 00000008 00000501 R_386_32 00000000 sym
|
||||
ELF32-NEXT: 0000000e 00000502 R_386_PC32 00000000 sym
|
||||
ELF32-NEXT: 00000014 00000503 R_386_GOT32 00000000 sym
|
||||
ELF32-NEXT: 0000001a 00000504 R_386_PLT32 00000000 sym
|
||||
ELF32-NEXT: 00000020 00000505 R_386_COPY 00000000 sym
|
||||
ELF32-NEXT: 00000026 00000506 R_386_GLOB_DAT 00000000 sym
|
||||
ELF32-NEXT: 0000002c 00000507 R_386_JUMP_SLOT 00000000 sym
|
||||
ELF32-NEXT: 00000032 00000508 R_386_RELATIVE 00000000 sym
|
||||
ELF32-NEXT: 00000038 00000509 R_386_GOTOFF 00000000 sym
|
||||
|
||||
ELF64: Relocation section '.rela.text' at offset 0x430 contains 38 entries:
|
||||
ELF64-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
|
||||
ELF64-NEXT: 0000000000000003 0000000500000000 R_X86_64_NONE 0000000000000000 sym - 4
|
||||
ELF64-NEXT: 000000000000000a 0000000500000001 R_X86_64_64 0000000000000000 sym - 4
|
||||
ELF64-NEXT: 0000000000000011 0000000500000002 R_X86_64_PC32 0000000000000000 sym - 4
|
||||
ELF64-NEXT: 0000000000000018 0000000500000003 R_X86_64_GOT32 0000000000000000 sym - 4
|
||||
ELF64-NEXT: 000000000000001f 0000000500000004 R_X86_64_PLT32 0000000000000000 sym - 4
|
||||
ELF64-NEXT: 0000000000000026 0000000500000005 R_X86_64_COPY 0000000000000000 sym - 4
|
||||
ELF64-NEXT: 000000000000002d 0000000500000006 R_X86_64_GLOB_DAT 0000000000000000 sym - 4
|
||||
ELF64-NEXT: 0000000000000034 0000000500000007 R_X86_64_JUMP_SLOT 0000000000000000 sym - 4
|
35
test/tools/llvm-readobj/gnu-sections.test
Normal file
35
test/tools/llvm-readobj/gnu-sections.test
Normal file
@ -0,0 +1,35 @@
|
||||
RUN: llvm-readobj -s %p/Inputs/relocs.obj.elf-i386 --elf-output-style=GNU \
|
||||
RUN: | FileCheck %s -check-prefix ELF32
|
||||
RUN: llvm-readobj -s %p/Inputs/relocs.obj.elf-x86_64 --elf-output-style=GNU \
|
||||
RUN: | FileCheck %s -check-prefix ELF64
|
||||
|
||||
ELF32: Section Headers:
|
||||
ELF32-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
|
||||
ELF32-NEXT: [ 0] NULL 00000000 000000 000000 00 0 0 0
|
||||
ELF32-NEXT: [ 1] .text PROGBITS 00000000 000034 0000f6 00 AX 0 0 4
|
||||
ELF32-NEXT: [ 2] .rel.text REL 00000000 000318 000148 08 6 1 4
|
||||
ELF32-NEXT: [ 3] .data PROGBITS 00000000 00012c 000000 00 WA 0 0 4
|
||||
ELF32-NEXT: [ 4] .bss NOBITS 00000000 00012c 000000 00 WA 0 0 4
|
||||
ELF32-NEXT: [ 5] .shstrtab STRTAB 00000000 00012c 000030 00 0 0 1
|
||||
ELF32-NEXT: [ 6] .symtab SYMTAB 00000000 00029c 000060 10 7 4 4
|
||||
ELF32-NEXT: [ 7] .strtab STRTAB 00000000 0002fc 00001b 00 0 0 1
|
||||
ELF32-NEXT: Key to Flags:
|
||||
ELF32-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
|
||||
ELF32-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
|
||||
ELF32-NEXT: O (extra OS processing required) o (OS specific), p (processor specific)
|
||||
|
||||
ELF64: There are 8 section headers, starting at offset 0x180:
|
||||
ELF64: Section Headers:
|
||||
ELF64-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
|
||||
ELF64-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0
|
||||
ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 00010a 00 AX 0 0 4
|
||||
ELF64-NEXT: [ 2] .rela.text RELA 0000000000000000 000430 000390 18 6 1 8
|
||||
ELF64-NEXT: [ 3] .data PROGBITS 0000000000000000 00014c 000000 00 WA 0 0 4
|
||||
ELF64-NEXT: [ 4] .bss NOBITS 0000000000000000 00014c 000000 00 WA 0 0 4
|
||||
ELF64-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 00014c 000031 00 0 0 1
|
||||
ELF64-NEXT: [ 6] .symtab SYMTAB 0000000000000000 000380 000090 18 7 4 8
|
||||
ELF64-NEXT: [ 7] .strtab STRTAB 0000000000000000 000410 00001b 00 0 0 1
|
||||
ELF64-NEXT: Key to Flags:
|
||||
ELF64-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
|
||||
ELF64-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
|
||||
ELF64-NEXT: O (extra OS processing required) o (OS specific), p (processor specific)
|
File diff suppressed because it is too large
Load Diff
@ -19,13 +19,6 @@ const std::string to_hexString(uint64_t Value, bool UpperCase) {
|
||||
return stream.str();
|
||||
}
|
||||
|
||||
const std::string to_string(uint64_t Value) {
|
||||
std::string number;
|
||||
llvm::raw_string_ostream stream(number);
|
||||
stream << format_decimal(Value, 1);
|
||||
return stream.str();
|
||||
}
|
||||
|
||||
void StreamWriter::printBinaryImpl(StringRef Label, StringRef Str,
|
||||
ArrayRef<uint8_t> Data, bool Block) {
|
||||
if (Data.size() > 16)
|
||||
|
@ -60,7 +60,13 @@ struct HexNumber {
|
||||
|
||||
raw_ostream &operator<<(raw_ostream &OS, const HexNumber& Value);
|
||||
const std::string to_hexString(uint64_t Value, bool UpperCase = true);
|
||||
const std::string to_string(uint64_t Value);
|
||||
|
||||
template <class T> const std::string to_string(const T &Value) {
|
||||
std::string number;
|
||||
llvm::raw_string_ostream stream(number);
|
||||
stream << Value;
|
||||
return stream.str();
|
||||
}
|
||||
|
||||
class StreamWriter {
|
||||
public:
|
||||
|
Loading…
x
Reference in New Issue
Block a user