Skip to content

Commit c6a101d

Browse files
committed
[llvm-readobj][test] Test -s with an invalid section name
1 parent c184f27 commit c6a101d

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

llvm/test/tools/llvm-readobj/ELF/section-symbols.test

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# RUN: FileCheck %s -DFILE=%t1 --check-prefix=GNU1 --implicit-check-not="warning:"
1010

1111
# LLVM1: Relocations [
12-
# LLVM1-NEXT: Section (4) .rela.foo {
12+
# LLVM1-NEXT: Section (5) .rela.foo {
1313
# LLVM1-NEXT: 0x1 R_X86_64_NONE .foo 0x0
1414
# LLVM1-NEXT: 0x2 R_X86_64_NONE symbol1 0x0
1515
# LLVM1-NEXT: warning: '[[FILE]]': invalid section index: 67
@@ -32,8 +32,10 @@
3232
# LLVM1: Name: symbol3 (9)
3333
# LLVM1: Name: <section 66> (0)
3434
# LLVM1: Name: symbol4 (1)
35+
# LLVM1: warning: '[[FILE]]': a section [index 3] has an invalid sh_name (0xffff) offset which goes past the end of the section name string table
36+
# LLVM1: Name: <section 3> (0)
3537

36-
# GNU1: Relocation section '.rela.foo' at offset 0x58 contains 8 entries:
38+
# GNU1: Relocation section '.rela.foo' at offset {{.*}} contains 8 entries:
3739
# GNU1-NEXT: Offset Info Type Sym. Value Symbol's Name + Addend
3840
# GNU1-NEXT: 00000001 00000100 R_X86_64_NONE 00000000 .foo + 0
3941
# GNU1-NEXT: 00000002 00000200 R_X86_64_NONE 00000000 symbol1 + 0
@@ -46,7 +48,7 @@
4648
# GNU1-NEXT: 00000007 00000700 R_X86_64_NONE 00000000 <section 66> + 0
4749
# GNU1-NEXT: 00000008 00000800 R_X86_64_NONE 00000000 symbol4 + 0
4850

49-
# GNU1: Symbol table '.symtab' contains 9 entries:
51+
# GNU1: Symbol table '.symtab' contains 10 entries:
5052
# GNU1-NEXT: Num: {{.*}} Type {{.*}} Ndx Name
5153
# GNU1-NEXT: 0: {{.*}} NOTYPE {{.*}} UND {{$}}
5254
# GNU1-NEXT: 1: {{.*}} SECTION {{.*}} 1 .foo
@@ -57,6 +59,8 @@
5759
# GNU1-NEXT: 6: {{.*}} SECTION {{.*}} 2 symbol3
5860
# GNU1-NEXT: 7: {{.*}} SECTION {{.*}} 66 <section 66>
5961
# GNU1-NEXT: 8: {{.*}} SECTION {{.*}} 66 symbol4
62+
# GNU1-NEXT: warning: '[[FILE]]': a section [index 3] has an invalid sh_name (0xffff) offset which goes past the end of the section name string table
63+
# GNU1-NEXT: 9: {{.*}} SECTION {{.*}} 3 <section 3>
6064

6165
--- !ELF
6266
FileHeader:
@@ -69,10 +73,13 @@ Sections:
6973
Type: SHT_PROGBITS
7074
- Name: .bar
7175
Type: SHT_PROGBITS
76+
- Name: .invalid
77+
Type: SHT_PROGBITS
78+
ShName: 0xffff
7279
- Name: .symtab_shndx
7380
Type: SHT_SYMTAB_SHNDX
7481
Link: .symtab
75-
Entries: [ 0, 0, 0, 0, 0, 2, 2, 0x42, 0x42 ]
82+
Entries: [ 0, 0, 0, 0, 0, 2, 2, 0x42, 0x42, 0 ]
7683
- Name: .rela.foo
7784
Type: SHT_RELA
7885
Link: .symtab
@@ -135,6 +142,10 @@ Symbols:
135142
- Name: "symbol4"
136143
Index: SHN_XINDEX
137144
Type: STT_SECTION
145+
## Case 9: a unnamed section symbol with invalid name.
146+
- Name: ""
147+
Index: 3
148+
Type: STT_SECTION
138149

139150
# RUN: yaml2obj %s --docnum=2 -o %t2
140151
# RUN: llvm-readobj %t2 --symbols 2> %t.llvm.err2 | FileCheck %s --check-prefix=LLVM2

llvm/test/tools/llvm-readobj/ELF/symbols.test

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,3 +228,21 @@ Symbols:
228228
# SYMTAB-SHSTRTAB-ERR-GNU-NEXT: Num: Value Size Type Bind Vis Ndx Name
229229
# SYMTAB-SHSTRTAB-ERR-GNU-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
230230
# SYMTAB-SHSTRTAB-ERR-GNU-NEXT: 1: 0000000000000001 0 NOTYPE GLOBAL DEFAULT 1 foo
231+
232+
## Test a symbol defined relative to a section with an invalid name.
233+
# RUN: yaml2obj --docnum=3 %s -o %t64.err4
234+
# RUN: llvm-readelf -s %t64.err4 2>&1 | FileCheck /dev/null --implicit-check-not=warning:
235+
236+
--- !ELF
237+
FileHeader:
238+
Class: ELFCLASS32
239+
Data: ELFDATA2LSB
240+
Type: ET_REL
241+
Machine: EM_X86_64
242+
Sections:
243+
- Name: .invalid
244+
Type: SHT_PROGBITS
245+
ShName: 0xffff
246+
Symbols:
247+
- Name: foo
248+
Section: .invalid

0 commit comments

Comments
 (0)