[ObjectYAML][test] Use a single test file to test the empty 'DWARF' entry.

This patch addresses comments in [D81450](https://reviews.llvm.org/D81450#inline-748745)

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D81529
This commit is contained in:
Xing GUO
2020-06-12 17:56:22 +08:00
parent 3dcfd482cb
commit 7e0827e86f
5 changed files with 29 additions and 66 deletions
@@ -406,17 +406,3 @@ DWARF:
Descriptors:
- Address: 0x0000000000001234
Length: 0x20
## h) Test that yaml2obj will not generate the .debug_aranges section when the "DWARF" entry
## exists but the "debug_aranges" entry doesn't exist in the "DWARF" entry or the "Sections" entry.
# RUN: yaml2obj --docnum=8 %s -o %t8.o
# RUN: llvm-readelf --sections %t8.o | FileCheck /dev/null --implicit-check-not=.debug_aranges
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2MSB
Type: ET_EXEC
Machine: EM_X86_64
DWARF:
@@ -321,17 +321,3 @@ DWARF:
IncludeDirs: []
Files: []
Opcodes: []
## h) Test that yaml2obj will not generate the .debug_line section when the "DWARF" entry
## exists but the "debug_line" entry doesn't exist in the "DWARF" entry or the "Sections" entry.
# RUN: yaml2obj --docnum=8 %s -o %t8.o
# RUN: llvm-readelf --sections %t8.o | FileCheck /dev/null --implicit-check-not=.debug_line
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
DWARF:
@@ -295,25 +295,11 @@ DWARF:
- LowOffset: 0x0000000000000001
HighOffset: 0x0000000000000002
## h) Test that yaml2obj will not generate the .debug_ranges section when the "DWARF" entry
## exists but the "debug_ranges" entry doesn't exist in the "DWARF" entry or the "Sections" entry.
# RUN: yaml2obj --docnum=8 %s -o %t8.o
# RUN: llvm-readelf --sections %t8.o | FileCheck /dev/null --implicit-check-not=.debug_ranges
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
DWARF:
## i) Test that yaml2obj automatically pads zeros if we try to assign an offset that
## h) Test that yaml2obj automatically pads zeros if we try to assign an offset that
## is greater than or equal to the number of bytes written already.
# RUN: yaml2obj --docnum=9 %s -o %t9.o
# RUN: llvm-readelf --hex-dump=.debug_ranges %t9.o | FileCheck %s --check-prefix=PADDED
# RUN: yaml2obj --docnum=8 %s -o %t8.o
# RUN: llvm-readelf --hex-dump=.debug_ranges %t8.o | FileCheck %s --check-prefix=PADDED
# PADDED: Hex dump of section '.debug_ranges':
# PADDED-NEXT: 0x00000000 01000000 00000000 02000000 00000000
@@ -374,10 +360,10 @@ DWARF:
- LowOffset: 0x01
HighOffset: 0x02
## j) Test that yaml2obj emits an error message if we try to assign an invalid offset to an
## i) Test that yaml2obj emits an error message if we try to assign an invalid offset to an
## entry of the '.debug_ranges' section.
# RUN: not yaml2obj --docnum=10 %s -o %t10.o 2>&1 | FileCheck %s --check-prefix=INVALID-OFFSET
# RUN: not yaml2obj --docnum=9 %s -o %t9.o 2>&1 | FileCheck %s --check-prefix=INVALID-OFFSET
# INVALID-OFFSET: yaml2obj: error: 'Offset' for 'debug_ranges' with index 1 must be greater than or equal to the number of bytes written already (0x20)
@@ -175,32 +175,18 @@ DWARF:
- b
- c
## h) Test that yaml2obj will not generate the .debug_str section when the "DWARF" entry exists
## but the "debug_str" entry doesn't exist in the "DWARF" entry or the "Sections" entry.
# RUN: yaml2obj --docnum=8 %s -o %t8.o
# RUN: llvm-readelf -S %t8.o | FileCheck /dev/null --implicit-check-not=.debug_str
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
DWARF:
## i) Test that if we try to initialize the .debug_str section with a "Type" with non-standard
## h) Test that if we try to initialize the .debug_str section with a "Type" with non-standard
## syntax, e.g., SHT_DYNAMIC, yaml2obj will treat it as a dynamic section and discard the
## content in the "DWARF" entry.
# RUN: yaml2obj --docnum=8 %s -o %t8.o
# RUN: llvm-readelf -S %t8.o | FileCheck %s --check-prefix=DYN-SHDR
# RUN: llvm-readelf -d %t8.o | FileCheck %s --check-prefix=DYNAMIC
# RUN: yaml2obj --docnum=9 %s -o %t9.o
# RUN: llvm-readelf -S %t9.o | FileCheck %s --check-prefix=DYN-SHDR
# RUN: llvm-readelf -d %t9.o | FileCheck %s --check-prefix=DYNAMIC
# RUN: yaml2obj --docnum=10 %s -o %t10.o
# RUN: llvm-readelf -S %t10.o | FileCheck %s --check-prefix=DYN-SHDR
# RUN: llvm-readelf -d %t10.o | FileCheck %s --check-prefix=DYNAMIC
# DYN-SHDR: Name Type Address Off Size ES Flg Lk Inf Al
# DYN-SHDR: .debug_str DYNAMIC 0000000000000000 000040 000010 10 0 0 0
@@ -0,0 +1,19 @@
## Test that yaml2obj doesn't emit .debug_* sections when the "DWARF" entry is empty.
# RUN: yaml2obj %s -o %t.o
# RUN: llvm-readelf -S %t.o | FileCheck %s
# CHECK: There are 3 section headers, starting at offset 0x58:
# CHECK: Section Headers:
# CHECK-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
# CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0
# CHECK-NEXT: [ 1] .strtab STRTAB 0000000000000000 000040 000001 00 0 0 1
# CHECK-NEXT: [ 2] .shstrtab STRTAB 0000000000000000 000041 000013 00 0 0 1
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
DWARF: