[llvm-branch-commits] [llvm] 83aea14 - [llvm-readelf] - Don't print OS/Processor specific prefix for known ELF file types.
Georgii Rymar via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Dec 15 00:01:23 PST 2020
Author: Georgii Rymar
Date: 2020-12-15T10:56:25+03:00
New Revision: 83aea14ed6118c810e4ed2966bc34db9b42cb049
URL: https://github.com/llvm/llvm-project/commit/83aea14ed6118c810e4ed2966bc34db9b42cb049
DIFF: https://github.com/llvm/llvm-project/commit/83aea14ed6118c810e4ed2966bc34db9b42cb049.diff
LOG: [llvm-readelf] - Don't print OS/Processor specific prefix for known ELF file types.
This is a change suggested in post commit comments for
D93096 (https://reviews.llvm.org/D93096#2451796).
Imagine we want to add a custom OS specific ELF file type.
For that we can update the `ElfObjectFileType` array:
```
static const EnumEntry<unsigned> ElfObjectFileType[] = {
...
{"Core", "CORE (Core file)", ELF::ET_CORE},
{"MyType", "MyType (my description)", 0xfe01},
};
```
The current code then might print:
```
OS Specific: (MyType (my description))
```
Though instead we probably would like to see a nicer output, e.g:
```
Type: MyType (my description)
```
To achieve that we can reorder the code slightly.
It is impossible to add a test I think, because we have no custom values in
the `ElfObjectFileType` array in LLVM.
Differential revision: https://reviews.llvm.org/D93217
Added:
Modified:
llvm/tools/llvm-readobj/ELFDumper.cpp
Removed:
################################################################################
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 27222c5639e6..c9ca2215d2c6 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -3528,16 +3528,17 @@ template <class ELFT> void GNUStyle<ELFT>::printFileHeaders() {
"ABI Version:", std::to_string(e.e_ident[ELF::EI_ABIVERSION]));
Str = printEnum(e.e_type, makeArrayRef(ElfObjectFileType));
- if (e.e_type >= ET_LOPROC) {
- Str = "Processor Specific: (" + Str + ")";
- } else if (e.e_type >= ET_LOOS) {
- Str = "OS Specific: (" + Str + ")";
- } else if (makeArrayRef(ElfObjectFileType).end() ==
- llvm::find_if(ElfObjectFileType,
- [&](const EnumEntry<unsigned> &E) {
- return E.Value == e.e_type;
- }))
- Str = "<unknown>: " + Str;
+ if (makeArrayRef(ElfObjectFileType).end() ==
+ llvm::find_if(ElfObjectFileType, [&](const EnumEntry<unsigned> &E) {
+ return E.Value == e.e_type;
+ })) {
+ if (e.e_type >= ET_LOPROC)
+ Str = "Processor Specific: (" + Str + ")";
+ else if (e.e_type >= ET_LOOS)
+ Str = "OS Specific: (" + Str + ")";
+ else
+ Str = "<unknown>: " + Str;
+ }
printFields(OS, "Type:", Str);
Str = printEnum(e.e_machine, makeArrayRef(ElfMachineType));
More information about the llvm-branch-commits
mailing list