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)); _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits