## Show that --disassemble + --reloc prints relocations inline and does not dump ## the relocation sections. # RUN: rm -rf %t && split-file %s %t && cd %t # RUN: llvm-mc -filetype=obj -triple=x86_64 1.s -o 1.o # RUN: llvm-objdump 1.o -d -r | FileCheck %s --implicit-check-not="RELOCATION RECORDS" # RUN: llvm-objdump 1.o -r --disassemble-symbols=x2,x4 | FileCheck %s --check-prefix=CHECK2 #--- 1.s # CHECK: 0000000000000000 : # CHECK-NEXT: 0: e8 00 00 00 00 callq 0x5 # CHECK-NEXT: 0000000000000001: R_X86_64_PC32 foo-0x4 # CHECK-NEXT: 0000000000000002: R_X86_64_NONE bar+0x8 # CHECK-NEXT: 5: e8 00 00 00 00 callq 0xa # CHECK-NEXT: 0000000000000006: R_X86_64_PLT32 foo+0x1 # CHECK-EMPTY: # CHECK-NEXT: 000000000000000a : # CHECK-NEXT: a: 90 nop # CHECK-NEXT: b: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x12 # CHECK-NEXT: 000000000000000e: R_X86_64_REX_GOTPCRELX var-0x4 # CHECK-EMPTY: # CHECK-NEXT: 0000000000000012 : # CHECK-NEXT: 12: e8 00 00 00 00 callq 0x17 # CHECK-NEXT: 0000000000000013: R_X86_64_PLT32 foo-0x4 # CHECK-EMPTY: # CHECK-NEXT: 0000000000000017 : # CHECK-NEXT: 17: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x1e # CHECK-NEXT: 000000000000001a: R_X86_64_REX_GOTPCRELX var-0x4 # CHECK-NOT: {{.}} # CHECK2: 000000000000000a : # CHECK2-NEXT: a: 90 nop # CHECK2-NEXT: b: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x12 # CHECK2-NEXT: 000000000000000e: R_X86_64_REX_GOTPCRELX var-0x4 # CHECK2-EMPTY: # CHECK2-NEXT: 0000000000000017 : # CHECK2-NEXT: 17: 48 8b 05 00 00 00 00 movq (%rip), %rax # 0x1e # CHECK2-NEXT: 000000000000001a: R_X86_64_REX_GOTPCRELX var-0x4 # CHECK2-NOT: {{.}} .globl x1, x2, x3, x4 x1: .reloc .+1, R_X86_64_PC32, foo-4 .reloc .+2, BFD_RELOC_NONE, bar+8 .byte 0xe8, 0, 0, 0, 0 .reloc .+1, R_X86_64_PLT32, foo+1 .byte 0xe8, 0, 0, 0, 0 x2: nop movq var@GOTPCREL(%rip), %rax x3: call foo x4: movq var@GOTPCREL(%rip), %rax #--- 2.yaml ## Check we report an error if the relocated section identified by the ## sh_info field of a relocation section is invalid. # RUN: yaml2obj 2.yaml -o 2.o # RUN: not llvm-objdump 2.o -d --reloc 2>&1 | FileCheck %s --check-prefix=ERR # ERR: error: '2.o': section (1): failed to get a relocated section: invalid section index: 255 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_X86_64 Sections: - Name: .rela.debug_info Type: SHT_RELA Link: 0 Info: 0xFF Relocations: [] #--- 3.s ## Check ranges of addends being displayed in a dump of relocations mixed with disassembly. # RUN: llvm-mc -filetype=obj -triple=x86_64 3.s -o 3.o # RUN: llvm-objdump -d -r 3.o | FileCheck %s --check-prefix=ADDENDS # ADDENDS: Disassembly of section .text: # ADDENDS: R_X86_64_64 glob-0x8000000000000000 # ADDENDS: R_X86_64_64 glob+0x7fffffffffffffff # ADDENDS: R_X86_64_64 glob-0x1 # ADDENDS: R_X86_64_64 glob+0x12345678 # ADDENDS: R_X86_64_64 glob{{$}} .reloc ., BFD_RELOC_64, glob-0x8000000000000000 .reloc .+1, BFD_RELOC_64, glob+0x7fffffffffffffff .reloc .+2, BFD_RELOC_64, glob-1 .reloc .+3, BFD_RELOC_64, glob+0x12345678 .reloc .+4, BFD_RELOC_64, glob .space 8