File: elf-disassemble-relocs-exec.test

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,998,520 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (93 lines) | stat: -rw-r--r-- 3,758 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
## Check that 'llvm-objdump --no-print-imm-hex -dr' correctly prints relocations in executables.

# RUN: yaml2obj --docnum=1 %s -o %t
# RUN: llvm-objdump --no-print-imm-hex -dr %t | FileCheck %s --match-full-lines --strict-whitespace
# RUN: llvm-objdump --no-print-imm-hex -dr --no-leading-addr %t | FileCheck %s --check-prefix=NOADDR --match-full-lines --strict-whitespace
# RUN: llvm-objdump --no-print-imm-hex -dr --no-addresses %t | FileCheck %s --check-prefix=NOADDR --match-full-lines --strict-whitespace
# RUN: llvm-objdump --no-print-imm-hex -dr --disassemble-symbols=text1 %t | FileCheck %s --check-prefix=CHECK2 --match-full-lines --strict-whitespace

# RUN: yaml2obj -DBITS=32 %s -o %t.32
# RUN: llvm-objdump --no-print-imm-hex -dr --no-leading-addr %t.32 | FileCheck %s --check-prefix=NOADDR --match-full-lines --strict-whitespace

#      CHECK:0000000000400000 <.text>:
# CHECK-NEXT:  400000: 90                           	nop
# CHECK-NEXT:  400001: bf 10 00 40 00               	movl	$4194320, %edi          # imm = 0x400010
# CHECK-NEXT:		0000000000400002:  R_X86_64_32	.rodata
# CHECK-NEXT:  400006: e8 fc fe ff ff               	callq	0x3fff07 <puts+0x3fff07>
# CHECK-NEXT:		0000000000400007:  R_X86_64_PLT32	puts-0x4
# CHECK-NEXT:  40000b: 90                           	nop
# CHECK-EMPTY:
# CHECK-NEXT:000000000040000c <text1>:
# CHECK-NEXT:  40000c: bf 10 00 40 00               	movl	$4194320, %edi          # imm = 0x400010
# CHECK-NEXT:		000000000040000d:  R_X86_64_32	.rodata
# CHECK-NOT: {{.}}

#     CHECK2:000000000040000c <text1>:
#CHECK2-NEXT:  40000c: bf 10 00 40 00               	movl	$4194320, %edi          # imm = 0x400010
#CHECK2-NEXT:		000000000040000d:  R_X86_64_32	.rodata
#CHECK2-NOT: {{.}}

#      NOADDR:<.text>:
# NOADDR-NEXT: 90                                    	nop
# NOADDR-NEXT: bf 10 00 40 00                        	movl	$4194320, %edi          # imm = 0x400010
# NOADDR-NEXT:		R_X86_64_32	.rodata
# NOADDR-NEXT: e8 fc fe ff ff                        	callq	0x3fff07 <puts+0x3fff07>
# NOADDR-NEXT:		R_X86_64_PLT32	puts-0x4
# NOADDR-NEXT: 90                                    	nop

--- !ELF
FileHeader:
  Class:           ELFCLASS[[BITS=64]]
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_X86_64
ProgramHeaders:
  - Type:            PT_LOAD
    Flags:           [ PF_X, PF_R ]
    FirstSec:        .text
    LastSec:         .rodata
    VAddr:           0x400000
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x400000
    AddressAlign:    0x10
    Content:         90BF10004000E8FCFEFFFF90BF10004000
  - Name:            .rodata
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC ]
    AddressAlign:    0x8
    Content:         00
  - Name:            .rela.text
    Type:            SHT_RELA
    Flags:           [ SHF_INFO_LINK ]
    AddressAlign:    0x8
    Info:            .text
    Relocations:
      - Offset:          0x400002
        Symbol:          .rodata
        Type:            R_X86_64_32
        Addend:          0
      - Offset:          0x400007
        Symbol:          puts
        Type:            R_X86_64_PLT32
        Addend:          -4
      - Offset:          0x40000d
        Symbol:          .rodata
        Type:            R_X86_64_32
        Addend:          0
Symbols:
  - Name:            .rodata
    Type:            STT_SECTION
    Section:         .rodata
    Value:           0x400628
  - Name:            puts
    Type:            STT_FUNC
    Binding:         STB_GLOBAL
  - Name:            text1
    Type:            STT_FUNC
    Binding:         STB_GLOBAL
    Section:         .text
    Value:           0x40000c
...