xref: /llvm-project/llvm/test/tools/llvm-objdump/ELF/section-symbols.test (revision bb3e8e90f1687a849326e1a37d587a55213cd599)
1## ELF section symbols use the corresponding section names when printing
2## unnamed symbols. This test verifies this and also that appropriate things
3## are printed if the section is somehow invalid.
4
5# RUN: yaml2obj %s -o %t1
6# RUN: llvm-objdump -r --syms %t1 2>&1 | \
7# RUN:   FileCheck %s -DFILE=%t1 --implicit-check-not=warning:
8
9# CHECK:      SYMBOL TABLE:
10# CHECK-NEXT: 00000000 l    d  .foo   00000000 .foo
11# CHECK-NEXT: 00000000 l    d  .foo   00000000 .foo
12# CHECK-NEXT: warning: '[[FILE]]': invalid section index: 67
13# CHECK-NEXT: warning: '[[FILE]]': invalid section index: 68
14
15# CHECK:      RELOCATION RECORDS FOR [.foo]:
16# CHECK-NEXT: OFFSET   TYPE                     VALUE
17# CHECK-NEXT: 00000001 R_X86_64_NONE            .foo
18# CHECK-NEXT: 00000002 R_X86_64_NONE            .foo
19# CHECK-NEXT: 00000003 R_X86_64_NONE            {{$}}
20# CHECK-NEXT: 00000004 R_X86_64_NONE            {{$}}
21
22## Test that we consume an error in ELFObjectFile<ELFT>::getSectionName when disassembling.
23# RUN: %if x86-registered-target %{ llvm-objdump -d --syms %t1 2>&1 | \
24# RUN:   FileCheck %s -DFILE=%t1 --check-prefix=CHECK-DISAS %}
25# CHECK-DISAS: warning: '[[FILE]]': invalid section index: 67
26
27--- !ELF
28FileHeader:
29  Class:   ELFCLASS32
30  Data:    ELFDATA2LSB
31  Type:    ET_REL
32  Machine: EM_X86_64
33Sections:
34  - Name: .foo
35    Type: SHT_PROGBITS
36  - Name: .rela.foo
37    Type: SHT_RELA
38    Link: .symtab
39    Info: .foo
40    Relocations:
41      - Offset: 0x1
42        Symbol: 1
43        Type:   R_X86_64_NONE
44      - Offset: 0x2
45        Symbol: 2
46        Type:   R_X86_64_NONE
47      - Offset: 0x3
48        Symbol: 3
49        Type:   R_X86_64_NONE
50      - Offset: 0x4
51        Symbol: 4
52        Type:   R_X86_64_NONE
53Symbols:
54## Case 1: a valid unnamed section symbol.
55  - Name: ""
56    Section: .foo
57    Type: STT_SECTION
58## Case 2: a valid named section symbol.
59  - Name: "symbol1"
60    Section: .foo
61    Type: STT_SECTION
62## Case 3: an unnamed section symbol with invalid index.
63  - Name: ""
64    Index: 0x43
65    Type: STT_SECTION
66## Case 4: a named section symbol with invalid index.
67  - Name: "symbol2"
68    Index: 0x44
69    Type: STT_SECTION
70