xref: /llvm-project/llvm/test/tools/llvm-objdump/X86/elf-disassemble-relocs-exec.test (revision 644e6d7d8be29b170d3fabe8e388ae5478b4adcf)
1## Check that 'llvm-objdump --no-print-imm-hex -dr' correctly prints relocations in executables.
2
3# RUN: yaml2obj --docnum=1 %s -o %t
4# RUN: llvm-objdump --no-print-imm-hex -dr %t | FileCheck %s --match-full-lines --strict-whitespace
5# RUN: llvm-objdump --no-print-imm-hex -dr --no-leading-addr %t | FileCheck %s --check-prefix=NOADDR --match-full-lines --strict-whitespace
6# RUN: llvm-objdump --no-print-imm-hex -dr --no-addresses %t | FileCheck %s --check-prefix=NOADDR --match-full-lines --strict-whitespace
7# RUN: llvm-objdump --no-print-imm-hex -dr --disassemble-symbols=text1 %t | FileCheck %s --check-prefix=CHECK2 --match-full-lines --strict-whitespace
8
9# RUN: yaml2obj -DBITS=32 %s -o %t.32
10# RUN: llvm-objdump --no-print-imm-hex -dr --no-leading-addr %t.32 | FileCheck %s --check-prefix=NOADDR --match-full-lines --strict-whitespace
11
12#      CHECK:0000000000400000 <.text>:
13# CHECK-NEXT:  400000: 90                           	nop
14# CHECK-NEXT:  400001: bf 10 00 40 00               	movl	$4194320, %edi          # imm = 0x400010
15# CHECK-NEXT:		0000000000400002:  R_X86_64_32	.rodata
16# CHECK-NEXT:  400006: e8 fc fe ff ff               	callq	0x3fff07 <puts+0x3fff07>
17# CHECK-NEXT:		0000000000400007:  R_X86_64_PLT32	puts-0x4
18# CHECK-NEXT:  40000b: 90                           	nop
19# CHECK-EMPTY:
20# CHECK-NEXT:000000000040000c <text1>:
21# CHECK-NEXT:  40000c: bf 10 00 40 00               	movl	$4194320, %edi          # imm = 0x400010
22# CHECK-NEXT:		000000000040000d:  R_X86_64_32	.rodata
23# CHECK-NOT: {{.}}
24
25#     CHECK2:000000000040000c <text1>:
26#CHECK2-NEXT:  40000c: bf 10 00 40 00               	movl	$4194320, %edi          # imm = 0x400010
27#CHECK2-NEXT:		000000000040000d:  R_X86_64_32	.rodata
28#CHECK2-NOT: {{.}}
29
30#      NOADDR:<.text>:
31# NOADDR-NEXT: 90                                    	nop
32# NOADDR-NEXT: bf 10 00 40 00                        	movl	$4194320, %edi          # imm = 0x400010
33# NOADDR-NEXT:		R_X86_64_32	.rodata
34# NOADDR-NEXT: e8 fc fe ff ff                        	callq	0x3fff07 <puts+0x3fff07>
35# NOADDR-NEXT:		R_X86_64_PLT32	puts-0x4
36# NOADDR-NEXT: 90                                    	nop
37
38--- !ELF
39FileHeader:
40  Class:           ELFCLASS[[BITS=64]]
41  Data:            ELFDATA2LSB
42  Type:            ET_EXEC
43  Machine:         EM_X86_64
44ProgramHeaders:
45  - Type:            PT_LOAD
46    Flags:           [ PF_X, PF_R ]
47    FirstSec:        .text
48    LastSec:         .rodata
49    VAddr:           0x400000
50Sections:
51  - Name:            .text
52    Type:            SHT_PROGBITS
53    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
54    Address:         0x400000
55    AddressAlign:    0x10
56    Content:         90BF10004000E8FCFEFFFF90BF10004000
57  - Name:            .rodata
58    Type:            SHT_PROGBITS
59    Flags:           [ SHF_ALLOC ]
60    AddressAlign:    0x8
61    Content:         00
62  - Name:            .rela.text
63    Type:            SHT_RELA
64    Flags:           [ SHF_INFO_LINK ]
65    AddressAlign:    0x8
66    Info:            .text
67    Relocations:
68      - Offset:          0x400002
69        Symbol:          .rodata
70        Type:            R_X86_64_32
71        Addend:          0
72      - Offset:          0x400007
73        Symbol:          puts
74        Type:            R_X86_64_PLT32
75        Addend:          -4
76      - Offset:          0x40000d
77        Symbol:          .rodata
78        Type:            R_X86_64_32
79        Addend:          0
80Symbols:
81  - Name:            .rodata
82    Type:            STT_SECTION
83    Section:         .rodata
84    Value:           0x400628
85  - Name:            puts
86    Type:            STT_FUNC
87    Binding:         STB_GLOBAL
88  - Name:            text1
89    Type:            STT_FUNC
90    Binding:         STB_GLOBAL
91    Section:         .text
92    Value:           0x40000c
93...
94