From c752de05057e7fee3eb11a16125e45ec9020e084 Mon Sep 17 00:00:00 2001 From: Georgii Rymar Date: Wed, 11 Dec 2019 13:38:52 +0300 Subject: [PATCH] [llvm-readobj][test] - Add a test for testing regular section flags and cleanup flags testing. This: 1) Adds a test for testing all section flags (`section-flags.test`). 2) Renames `sec-flags.test`->`section-arch-flags.test` and performs a clean up. 3) Removes `compression.zlib.style.elf-x86-64` binary and a test case for SHF_COMPRESSED flag, because them are now excessive. 4) Adds missing MIPS flags and a test for SHF_ARM_PURECODE. Differential revision: https://reviews.llvm.org/D71333 --- .../Inputs/compression.zlib.style.elf-x86-64 | Bin 10384 -> 0 bytes .../llvm-readobj/ELF/sec-compressed.test | 9 -- .../tools/llvm-readobj/ELF/sec-flags.test | 67 ------------ .../llvm-readobj/ELF/section-arch-flags.test | 100 ++++++++++++++++++ .../tools/llvm-readobj/ELF/section-flags.test | 48 +++++++++ 5 files changed, 148 insertions(+), 76 deletions(-) delete mode 100644 llvm/test/tools/llvm-readobj/ELF/Inputs/compression.zlib.style.elf-x86-64 delete mode 100644 llvm/test/tools/llvm-readobj/ELF/sec-compressed.test delete mode 100644 llvm/test/tools/llvm-readobj/ELF/sec-flags.test create mode 100644 llvm/test/tools/llvm-readobj/ELF/section-arch-flags.test create mode 100644 llvm/test/tools/llvm-readobj/ELF/section-flags.test diff --git a/llvm/test/tools/llvm-readobj/ELF/Inputs/compression.zlib.style.elf-x86-64 b/llvm/test/tools/llvm-readobj/ELF/Inputs/compression.zlib.style.elf-x86-64 deleted file mode 100644 index 34cdb8a89edf4b4b42fad3c2deacaaaf1acad20b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10384 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 b9j@7MQJAzZ;`*Gb{axY*l$j>y=Jx*!7h9W# diff --git a/llvm/test/tools/llvm-readobj/ELF/sec-compressed.test b/llvm/test/tools/llvm-readobj/ELF/sec-compressed.test deleted file mode 100644 index 5045c5392896..000000000000 --- a/llvm/test/tools/llvm-readobj/ELF/sec-compressed.test +++ /dev/null @@ -1,9 +0,0 @@ -RUN: llvm-readobj --sections \ -RUN: %p/Inputs/compression.zlib.style.elf-x86-64 | FileCheck %s - -CHECK: Section { -CHECK: Name: .debug_info -CHECK-NEXT: Type: SHT_PROGBITS -CHECK-NEXT: Flags [ -CHECK-NEXT: SHF_COMPRESSED (0x800) -CHECK-NEXT: ] diff --git a/llvm/test/tools/llvm-readobj/ELF/sec-flags.test b/llvm/test/tools/llvm-readobj/ELF/sec-flags.test deleted file mode 100644 index 8507975918d9..000000000000 --- a/llvm/test/tools/llvm-readobj/ELF/sec-flags.test +++ /dev/null @@ -1,67 +0,0 @@ -# Check that llvm-readobj shows arch specific ELF section flags. - -# RUN: yaml2obj -docnum 1 %s > %t-hex.o -# RUN: llvm-readobj -S %t-hex.o | FileCheck -check-prefix=HEX %s - -# HEX: Flags [ (0x10000000) -# HEX-NEXT: SHF_HEX_GPREL (0x10000000) -# HEX-NEXT: ] - -# hex.o ---- !ELF -FileHeader: - Class: ELFCLASS32 - Data: ELFDATA2LSB - Type: ET_REL - Machine: EM_HEXAGON - Flags: [] -Sections: - - Name: .hex - Type: SHT_PROGBITS - Flags: [SHF_HEX_GPREL] - Size: 4 - -# RUN: yaml2obj -docnum 2 %s > %t-mips.o -# RUN: llvm-readobj -S %t-mips.o | FileCheck -check-prefix=MIPS %s - -# MIPS: Flags [ (0x38000000) -# MIPS-NEXT: SHF_MIPS_GPREL (0x10000000) -# MIPS-NEXT: SHF_MIPS_MERGE (0x20000000) -# MIPS-NEXT: SHF_MIPS_NOSTRIP (0x8000000) -# MIPS-NEXT: ] - -# mips.o ---- !ELF -FileHeader: - Class: ELFCLASS32 - Data: ELFDATA2LSB - Type: ET_REL - Machine: EM_MIPS - Flags: [] -Sections: - - Name: .mips - Type: SHT_PROGBITS - Flags: [SHF_MIPS_GPREL, SHF_MIPS_MERGE, SHF_MIPS_NOSTRIP] - Size: 4 - -# RUN: yaml2obj -docnum 3 %s > %t-x86_64.o -# RUN: llvm-readobj -S %t-x86_64.o | FileCheck -check-prefix=X86_64 %s - -# X86_64: Flags [ (0x10000000) -# X86_64-NEXT: SHF_X86_64_LARGE (0x10000000) -# X86_64-NEXT: ] - -# x86_64.o ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_REL - Machine: EM_X86_64 - Flags: [] -Sections: - - Name: .x86_64 - Type: SHT_PROGBITS - Flags: [SHF_X86_64_LARGE] - Size: 4 -... diff --git a/llvm/test/tools/llvm-readobj/ELF/section-arch-flags.test b/llvm/test/tools/llvm-readobj/ELF/section-arch-flags.test new file mode 100644 index 000000000000..7b023e1c321c --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/section-arch-flags.test @@ -0,0 +1,100 @@ +## Check how we dump arch specific ELF section flags. + +# RUN: yaml2obj --docnum 1 %s -o %t-hex.o +# RUN: llvm-readobj -S %t-hex.o | FileCheck --check-prefix=HEX-LLVM %s +# RUN: llvm-readelf -S %t-hex.o | FileCheck --check-prefix=HEX-GNU %s + +# HEX-LLVM: Flags [ (0x10000000) +# HEX-LLVM-NEXT: SHF_HEX_GPREL (0x10000000) +# HEX-LLVM-NEXT: ] + +# HEX-GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# HEX-GNU: [ 1] .hex PROGBITS 00000000 000034 000000 00 p 0 0 0 + +--- !ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_HEXAGON +Sections: + - Name: .hex + Type: SHT_PROGBITS + Flags: [ SHF_HEX_GPREL ] + +# RUN: yaml2obj --docnum 2 %s -o %t-mips.o +# RUN: llvm-readobj -S %t-mips.o | FileCheck --check-prefix=MIPS-LLVM %s +# RUN: llvm-readelf -S %t-mips.o | FileCheck --check-prefix=MIPS-GNU %s + +# MIPS-GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# MIPS-GNU: [ 1] .mips PROGBITS 00000000 000034 000000 00 Eop 0 0 0 + +# MIPS-LLVM: Flags [ (0xFF000000) +# MIPS-LLVM-NEXT: SHF_EXCLUDE (0x80000000) +## FIXME: we should not print SHF_MASKPROC, because it is a mask value. +# MIPS-LLVM-NEXT: SHF_MASKPROC (0xF0000000) +# MIPS-LLVM-NEXT: SHF_MIPS_ADDR (0x40000000) +# MIPS-LLVM-NEXT: SHF_MIPS_GPREL (0x10000000) +# MIPS-LLVM-NEXT: SHF_MIPS_LOCAL (0x4000000) +# MIPS-LLVM-NEXT: SHF_MIPS_MERGE (0x20000000) +# MIPS-LLVM-NEXT: SHF_MIPS_NAMES (0x2000000) +# MIPS-LLVM-NEXT: SHF_MIPS_NODUPES (0x1000000) +# MIPS-LLVM-NEXT: SHF_MIPS_NOSTRIP (0x8000000) +# MIPS-LLVM-NEXT: SHF_MIPS_STRING (0x80000000) +# MIPS-LLVM-NEXT: ] + +--- !ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_MIPS +Sections: + - Name: .mips + Type: SHT_PROGBITS + Flags: [ SHF_MIPS_NODUPES, SHF_MIPS_NAMES, SHF_MIPS_LOCAL, SHF_MIPS_NOSTRIP, + SHF_MIPS_GPREL, SHF_MIPS_MERGE, SHF_MIPS_ADDR, SHF_MIPS_STRING ] + +# RUN: yaml2obj --docnum 3 %s -o %t-x86_64.o +# RUN: llvm-readobj -S %t-x86_64.o | FileCheck --check-prefix=X86_64-LLVM %s +# RUN: llvm-readelf -S %t-x86_64.o | FileCheck --check-prefix=X86_64-GNU %s + +# X86_64-LLVM: Flags [ (0x10000000) +# X86_64-LLVM-NEXT: SHF_X86_64_LARGE (0x10000000) +# X86_64-LLVM-NEXT: ] + +# X86_64-GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# X86_64-GNU: [ 1] .x86_64 PROGBITS 0000000000000000 000040 000000 00 p 0 0 0 + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .x86_64 + Type: SHT_PROGBITS + Flags: [ SHF_X86_64_LARGE ] + +# RUN: yaml2obj --docnum 4 %s -o %t-arm.o +# RUN: llvm-readobj -S %t-arm.o | FileCheck --check-prefix=ARM-LLVM %s +# RUN: llvm-readelf -S %t-arm.o | FileCheck --check-prefix=ARM-GNU %s + +# ARM-LLVM: Flags [ (0x20000000) +# ARM-LLVM-NEXT: SHF_ARM_PURECODE (0x20000000) +# ARM-LLVM-NEXT: ] + +# ARM-GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# ARM-GNU: [ 1] foo PROGBITS 0000000000000000 000040 000000 00 p 0 0 0 + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_ARM +Sections: + - Name: foo + Type: SHT_PROGBITS + Flags: [ SHF_ARM_PURECODE ] diff --git a/llvm/test/tools/llvm-readobj/ELF/section-flags.test b/llvm/test/tools/llvm-readobj/ELF/section-flags.test new file mode 100644 index 000000000000..ffc95aad6d52 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/section-flags.test @@ -0,0 +1,48 @@ +## Check how we dump regular ELF section flags. + +# RUN: yaml2obj %s -o %t.o +# RUN: llvm-readobj -S %t.o | FileCheck --check-prefix=LLVM %s +# RUN: llvm-readelf -S %t.o | FileCheck --check-prefix=GNU %s + +# LLVM: Name: allflags +# LLVM-NEXT: Type: SHT_PROGBITS +# LLVM-NEXT: Flags [ (0x80000FF7) +# LLVM-NEXT: SHF_ALLOC (0x2) +# LLVM-NEXT: SHF_COMPRESSED (0x800) +# LLVM-NEXT: SHF_EXCLUDE (0x80000000) +# LLVM-NEXT: SHF_EXECINSTR (0x4) +# LLVM-NEXT: SHF_GROUP (0x200) +# LLVM-NEXT: SHF_INFO_LINK (0x40) +# LLVM-NEXT: SHF_LINK_ORDER (0x80) +# LLVM-NEXT: SHF_MERGE (0x10) +# LLVM-NEXT: SHF_OS_NONCONFORMING (0x100) +# LLVM-NEXT: SHF_STRINGS (0x20) +# LLVM-NEXT: SHF_TLS (0x400) +# LLVM-NEXT: SHF_WRITE (0x1) +# LLVM-NEXT: ] + +# LLVM: Name: noflags +# LLVM-NEXT: Type: SHT_PROGBITS +# LLVM-NEXT: Flags [ (0x0) +# LLVM-NEXT: ] + +# GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al +# GNU: [ 1] allflags PROGBITS 0000000000000000 000040 000000 00 WAEXMSILoGTx 0 0 0 +# GNU: [ 2] noflags PROGBITS 0000000000000000 000040 000000 00 0 0 0 + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 + Flags: [] +Sections: + - Name: allflags + Type: SHT_PROGBITS + Flags: [ SHF_WRITE, SHF_ALLOC, SHF_EXECINSTR, SHF_MERGE, + SHF_STRINGS, SHF_INFO_LINK, SHF_LINK_ORDER, SHF_OS_NONCONFORMING, + SHF_GROUP, SHF_TLS, SHF_COMPRESSED, SHF_EXCLUDE ] + - Name: noflags + Type: SHT_PROGBITS + Flags: [ ]