mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	ELF with support for:
- File headers
- Section headers + data
- Relocations
- Symbols
- Unwind data (only COFF/Win64)
The output format follows a few rules:
- Values are almost always output one per line (as elf-dump/coff-dump already do). - Many values are translated to something readable (like enum names), with the raw value in parentheses.
- Hex numbers are output in uppercase, prefixed with "0x".
- Flags are sorted alphabetically.
- Lists and groups are always delimited.
Example output:
---------- snip ----------
Sections [
  Section {
    Index: 1
    Name: .text (5)
    Type: SHT_PROGBITS (0x1)
    Flags [ (0x6)
      SHF_ALLOC (0x2)
      SHF_EXECINSTR (0x4)
    ]
    Address: 0x0
    Offset: 0x40
    Size: 33
    Link: 0
    Info: 0
    AddressAlignment: 16
    EntrySize: 0
    Relocations [
      0x6 R_386_32 .rodata.str1.1 0x0
      0xB R_386_PC32 puts 0x0
      0x12 R_386_32 .rodata.str1.1 0x0
      0x17 R_386_PC32 puts 0x0
    ]
    SectionData (
      0000: 83EC04C7 04240000 0000E8FC FFFFFFC7  |.....$..........|
      0010: 04240600 0000E8FC FFFFFF31 C083C404  |.$.........1....|
      0020: C3                                   |.|
    )
  }
]
---------- snip ----------
Relocations and symbols can be output standalone or together with the section header as displayed in the example.
This feature set supports all tests in test/MC/COFF and test/MC/ELF (and I suspect all additional tests using elf-dump), making elf-dump and coff-dump deprecated.
Patch by Nico Rieck!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178679 91177308-0d34-0410-b5e6-96231b3b80d8
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| RUN: llvm-readobj -dt %p/Inputs/elf-versioning-test.i386 \
 | |
| RUN:         | FileCheck %s -check-prefix ELF
 | |
| RUN: llvm-readobj -dt %p/Inputs/elf-versioning-test.i386 \
 | |
| RUN:         | FileCheck %s -check-prefix ELF32
 | |
| RUN: llvm-readobj -dt %p/Inputs/elf-versioning-test.x86_64 \
 | |
| RUN:         | FileCheck %s -check-prefix ELF
 | |
| RUN: llvm-readobj -dt %p/Inputs/elf-versioning-test.x86_64 \
 | |
| RUN:         | FileCheck %s -check-prefix ELF64
 | |
| 
 | |
| ELF: DynamicSymbols [
 | |
| ELF:   Symbol {
 | |
| ELF:     Name: foo@@VER2
 | |
| ELF:     Binding: Global
 | |
| ELF:     Type: Function
 | |
| ELF:     Section: .text
 | |
| ELF:   }
 | |
| ELF:   Symbol {
 | |
| ELF:     Name: foo@VER1
 | |
| ELF:     Binding: Global
 | |
| ELF:     Type: Function
 | |
| ELF:     Section: .text
 | |
| ELF:   }
 | |
| ELF:   Symbol {
 | |
| ELF:     Name: unversioned_define
 | |
| ELF:     Binding: Global
 | |
| ELF:     Type: Function
 | |
| ELF:     Section: .text
 | |
| ELF:   }
 | |
| ELF: ]
 | |
| 
 | |
| ELF32: DynamicSymbols [
 | |
| ELF32:   Symbol {
 | |
| ELF32:     Name: puts@GLIBC_2.0
 | |
| ELF32:     Binding: Global
 | |
| ELF32:     Type: Function
 | |
| ELF32:     Section:  (0x0)
 | |
| ELF32:   }
 | |
| ELF32: ]
 | |
| ELF64: DynamicSymbols [
 | |
| ELF64:   Symbol {
 | |
| ELF64:     Name: puts@GLIBC_2.2.5
 | |
| ELF64:     Binding: Global
 | |
| ELF64:     Type: Function
 | |
| ELF64:     Section:  (0x0)
 | |
| ELF64:   }
 | |
| ELF64: ]
 |