## Show that references in disassembly are labelled with the correct symbol. # RUN: yaml2obj %s --docnum=1 -o %t # RUN: llvm-objdump %t -d | FileCheck %s --check-prefix=EXEC # EXEC-LABEL: : # EXEC-NEXT: 4000: e8 00 00 00 00 callq 0x4005 # EXEC-LABEL: : # EXEC-NEXT: 4005: e8 12 34 56 78 callq 0x7856741c # EXEC-LABEL: : # EXEC-NEXT: 400a: 8b 05 f0 0f 00 00 movl 4080(%rip), %eax # 5000 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64 Sections: - Name: .text1 Type: SHT_PROGBITS Address: 0x4000 Flags: [SHF_ALLOC, SHF_EXECINSTR] Content: 'e800000000' # Case 1: Referencing an address with a symbol. - Name: .text2 Type: SHT_PROGBITS Flags: [SHF_ALLOC, SHF_EXECINSTR] Address: 0x4005 Content: 'e812345678' # Case 2: Referencing an address without a symbol. - Name: .text3 Type: SHT_PROGBITS Flags: [SHF_ALLOC, SHF_EXECINSTR] Address: 0x400A Content: '8b05f00f0000' # Case 3: Memory operands - Name: .data Type: SHT_PROGBITS Flags: [SHF_ALLOC, SHF_WRITE] Address: 0x5000 Symbols: - Name: first Section: .text1 Value: 0x4000 - Name: second Section: .text1 Value: 0x4005 - Name: third Section: .text2 Value: 0x4005 - Name: fourth Section: .text3 Value: 0x400A - Name: data1 Section: .data Value: 0x5000 # RUN: yaml2obj %s --docnum=2 -o %t.o # RUN: llvm-objdump %t.o -d | FileCheck %s --check-prefix=REL # REL: Disassembly of section .text1: # REL-EMPTY: # REL-NEXT: 0000000000000000 <.text1>: # REL-NEXT: 0: e8 00 00 00 00 callq 0x5 <.text1+0x5> # REL-EMPTY: # REL-NEXT: Disassembly of section .text2: # REL-EMPTY: # REL-NEXT: 0000000000000000 <.text2>: # REL-NEXT: 0: e8 00 00 00 00 callq 0x5 # REL-EMPTY: # REL-NEXT: Disassembly of section .text3: # REL-EMPTY: # REL-NEXT: 0000000000000000 <.text3>: # REL-NEXT: 0: e8 00 00 00 00 callq 0x5 <.text3+0x5> --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .text1 Type: SHT_PROGBITS Flags: [SHF_ALLOC, SHF_EXECINSTR] Content: 'e800000000' # Case 1: Instruction is patched by a relocation. - Name: .rela.text1 Type: SHT_RELA Info: .text1 Relocations: - Offset: 1 Type: R_X86_64_PC32 Symbol: sym3 - Name: .text2 Type: SHT_PROGBITS Flags: [SHF_ALLOC, SHF_EXECINSTR] Content: 'e800000000' # Case 2: Referencing an address with a matching symbol in that section. - Name: .text3 Type: SHT_PROGBITS Flags: [SHF_ALLOC, SHF_EXECINSTR] Content: 'e800000000' # Case 3: Referencing an address without a matching symbol in that section. - Name: .other Type: SHT_PROGBITS Symbols: # Shouldn't be picked, despite matching value, as not in right section. - Name: sym1 Section: .other Value: 5 # Symbol in correct section, with right value should be picked for disassembly of .text2. - Name: sym2 Section: .text2 Value: 5 # Symbol referenced by relocation could be picked for disassembly of .text1, but isn't. - Name: sym3