From 936ba7eec3f00980862bf9a520d810e0e4956376 Mon Sep 17 00:00:00 2001 From: Georgii Rymar Date: Wed, 12 Aug 2020 15:49:37 +0300 Subject: [PATCH] [llvm-readobj/elf][test] - Refine --headers testing and the related code comment. Specifying --headers is equivalent to setting --file-headers, --program-headers and --section-headers at the same time. The existent test case uses a precompiled object and doesn't test the output properly. This patch fixes it. Differential revision: https://reviews.llvm.org/D85832 --- llvm/test/tools/llvm-readobj/ELF/headers.test | 53 +++++++++++++++++-- llvm/tools/llvm-readobj/llvm-readobj.cpp | 2 +- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/llvm/test/tools/llvm-readobj/ELF/headers.test b/llvm/test/tools/llvm-readobj/ELF/headers.test index cc05ece49fbc..c2e9649ddcab 100644 --- a/llvm/test/tools/llvm-readobj/ELF/headers.test +++ b/llvm/test/tools/llvm-readobj/ELF/headers.test @@ -1,5 +1,48 @@ -RUN: llvm-readelf -e %p/Inputs/trivial.obj.elf-i386 > %t.e -RUN: llvm-readelf --headers %p/Inputs/trivial.obj.elf-i386 > %t.headers -RUN: llvm-readelf -h -l -S %p/Inputs/trivial.obj.elf-i386 > %t.hlS -RUN: cmp %t.e %t.headers -RUN: cmp %t.e %t.hlS +## This is a test for --headers and its alias -e. +## Specifying --headers is equivalent to setting --file-headers, +## --program-headers and --section-headers at the same time. +## We test these options independently, so here we just check +## that --headers triggers them. + +# RUN: yaml2obj %s -o %t + +## Case A: test llvm-readelf output. +# RUN: llvm-readelf --headers %t > %t.headers.gnu.txt +# RUN: FileCheck %s --input-file=%t.headers.gnu.txt --check-prefix=GNU + +# GNU: ELF Header: +# GNU: Section Headers: +# GNU: Program Headers: +# GNU: Section to Segment mapping: + +# RUN: llvm-readelf -e %t > %t.e.gnu.txt +# RUN: cmp %t.headers.gnu.txt %t.e.gnu.txt + +# RUN: llvm-readelf --file-headers --program-headers --section-headers %t > %t.all.gnu.txt +# RUN: cmp %t.headers.gnu.txt %t.all.gnu.txt + +## Case B: test llvm-readobj output. +# RUN: llvm-readobj --headers %t > %t.headers.llvm.txt +# RUN: FileCheck %s --input-file=%t.headers.llvm.txt --check-prefix=LLVM + +# LLVM: ElfHeader { +# LLVM: Sections [ +# LLVM: ProgramHeaders [ + +# RUN: llvm-readobj -e %t > %t.e.llvm.txt +# RUN: cmp %t.headers.llvm.txt %t.e.llvm.txt + +# RUN: llvm-readobj --file-headers --program-headers --section-headers %t > %t.all.llvm.txt +# RUN: cmp %t.headers.llvm.txt %t.all.llvm.txt + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_NONE +Sections: + - Name: .foo + Type: SHT_PROGBITS +ProgramHeaders: + - Type: PT_LOAD diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index d6fc610bc2ca..9b54efec7a3b 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -63,7 +63,7 @@ namespace opts { DependentLibraries("dependent-libraries", cl::desc("Display the dependent libraries section")); - // --headers -e + // --headers, -e cl::opt Headers("headers", cl::desc("Equivalent to setting: --file-headers, --program-headers, "