[llvm-branch-commits] [llvm] 438bc15 - [libObject] - Add more ELF types to LLVM_ELF_IMPORT_TYPES_ELFT define (ELFTypes.h).
Georgii Rymar via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Dec 25 00:44:11 PST 2020
Author: Georgii Rymar
Date: 2020-12-25T11:39:05+03:00
New Revision: 438bc157a47a03d36d81977a3ee9974cd021a885
URL: https://github.com/llvm/llvm-project/commit/438bc157a47a03d36d81977a3ee9974cd021a885
DIFF: https://github.com/llvm/llvm-project/commit/438bc157a47a03d36d81977a3ee9974cd021a885.diff
LOG: [libObject] - Add more ELF types to LLVM_ELF_IMPORT_TYPES_ELFT define (ELFTypes.h).
This allows to get rid of lots for typedefs/usings from many places.
Differential revision: https://reviews.llvm.org/D93801
Added:
Modified:
llvm/include/llvm/Object/ELF.h
llvm/include/llvm/Object/ELFObjectFile.h
llvm/include/llvm/Object/ELFTypes.h
llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
llvm/lib/ObjectYAML/ELFEmitter.cpp
llvm/tools/llvm-readobj/ELFDumper.cpp
llvm/tools/obj2yaml/elf2yaml.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Object/ELF.h b/llvm/include/llvm/Object/ELF.h
index a5233bd3ac10..bd224ada7783 100644
--- a/llvm/include/llvm/Object/ELF.h
+++ b/llvm/include/llvm/Object/ELF.h
@@ -90,32 +90,6 @@ template <class ELFT>
class ELFFile {
public:
LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
- using uintX_t = typename ELFT::uint;
- using Elf_Ehdr = typename ELFT::Ehdr;
- using Elf_Shdr = typename ELFT::Shdr;
- using Elf_Sym = typename ELFT::Sym;
- using Elf_Dyn = typename ELFT::Dyn;
- using Elf_Phdr = typename ELFT::Phdr;
- using Elf_Rel = typename ELFT::Rel;
- using Elf_Rela = typename ELFT::Rela;
- using Elf_Relr = typename ELFT::Relr;
- using Elf_Verdef = typename ELFT::Verdef;
- using Elf_Verdaux = typename ELFT::Verdaux;
- using Elf_Verneed = typename ELFT::Verneed;
- using Elf_Vernaux = typename ELFT::Vernaux;
- using Elf_Versym = typename ELFT::Versym;
- using Elf_Hash = typename ELFT::Hash;
- using Elf_GnuHash = typename ELFT::GnuHash;
- using Elf_Nhdr = typename ELFT::Nhdr;
- using Elf_Note = typename ELFT::Note;
- using Elf_Note_Iterator = typename ELFT::NoteIterator;
- using Elf_Dyn_Range = typename ELFT::DynRange;
- using Elf_Shdr_Range = typename ELFT::ShdrRange;
- using Elf_Sym_Range = typename ELFT::SymRange;
- using Elf_Rel_Range = typename ELFT::RelRange;
- using Elf_Rela_Range = typename ELFT::RelaRange;
- using Elf_Relr_Range = typename ELFT::RelrRange;
- using Elf_Phdr_Range = typename ELFT::PhdrRange;
// This is a callback that can be passed to a number of functions.
// It can be used to ignore non-critical errors (warnings), which is
diff --git a/llvm/include/llvm/Object/ELFObjectFile.h b/llvm/include/llvm/Object/ELFObjectFile.h
index ca4363572d90..33b4c28db951 100644
--- a/llvm/include/llvm/Object/ELFObjectFile.h
+++ b/llvm/include/llvm/Object/ELFObjectFile.h
@@ -233,15 +233,6 @@ template <class ELFT> class ELFObjectFile : public ELFObjectFileBase {
public:
LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
- using uintX_t = typename ELFT::uint;
-
- using Elf_Sym = typename ELFT::Sym;
- using Elf_Shdr = typename ELFT::Shdr;
- using Elf_Ehdr = typename ELFT::Ehdr;
- using Elf_Rel = typename ELFT::Rel;
- using Elf_Rela = typename ELFT::Rela;
- using Elf_Dyn = typename ELFT::Dyn;
-
SectionRef toSectionRef(const Elf_Shdr *Sec) const {
return SectionRef(toDRI(Sec), this);
}
diff --git a/llvm/include/llvm/Object/ELFTypes.h b/llvm/include/llvm/Object/ELFTypes.h
index 5e85e6cc4653..f64e7c06e03b 100644
--- a/llvm/include/llvm/Object/ELFTypes.h
+++ b/llvm/include/llvm/Object/ELFTypes.h
@@ -107,7 +107,34 @@ using ELF64BE = ELFType<support::big, true>;
using Elf_Word = typename ELFT::Word; \
using Elf_Sword = typename ELFT::Sword; \
using Elf_Xword = typename ELFT::Xword; \
- using Elf_Sxword = typename ELFT::Sxword;
+ using Elf_Sxword = typename ELFT::Sxword; \
+ using uintX_t = typename ELFT::uint; \
+ using Elf_Ehdr = typename ELFT::Ehdr; \
+ using Elf_Shdr = typename ELFT::Shdr; \
+ using Elf_Sym = typename ELFT::Sym; \
+ using Elf_Dyn = typename ELFT::Dyn; \
+ using Elf_Phdr = typename ELFT::Phdr; \
+ using Elf_Rel = typename ELFT::Rel; \
+ using Elf_Rela = typename ELFT::Rela; \
+ using Elf_Relr = typename ELFT::Relr; \
+ using Elf_Verdef = typename ELFT::Verdef; \
+ using Elf_Verdaux = typename ELFT::Verdaux; \
+ using Elf_Verneed = typename ELFT::Verneed; \
+ using Elf_Vernaux = typename ELFT::Vernaux; \
+ using Elf_Versym = typename ELFT::Versym; \
+ using Elf_Hash = typename ELFT::Hash; \
+ using Elf_GnuHash = typename ELFT::GnuHash; \
+ using Elf_Nhdr = typename ELFT::Nhdr; \
+ using Elf_Note = typename ELFT::Note; \
+ using Elf_Note_Iterator = typename ELFT::NoteIterator; \
+ using Elf_CGProfile = typename ELFT::CGProfile; \
+ using Elf_Dyn_Range = typename ELFT::DynRange; \
+ using Elf_Shdr_Range = typename ELFT::ShdrRange; \
+ using Elf_Sym_Range = typename ELFT::SymRange; \
+ using Elf_Rel_Range = typename ELFT::RelRange; \
+ using Elf_Rela_Range = typename ELFT::RelaRange; \
+ using Elf_Relr_Range = typename ELFT::RelrRange; \
+ using Elf_Phdr_Range = typename ELFT::PhdrRange; \
#define LLVM_ELF_COMMA ,
#define LLVM_ELF_IMPORT_TYPES(E, W) \
@@ -269,7 +296,6 @@ struct Elf_Versym_Impl {
template <class ELFT>
struct Elf_Verdef_Impl {
LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
- using Elf_Verdaux = Elf_Verdaux_Impl<ELFT>;
Elf_Half vd_version; // Version of this structure (e.g. VER_DEF_CURRENT)
Elf_Half vd_flags; // Bitwise flags (VER_DEF_*)
Elf_Half vd_ndx; // Version index, used in .gnu.version entries
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
index 7ed8a718ed3c..c1e27410ce32 100644
--- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
+++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
@@ -57,13 +57,6 @@ namespace {
template <class ELFT> class DyldELFObject : public ELFObjectFile<ELFT> {
LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
- typedef Elf_Shdr_Impl<ELFT> Elf_Shdr;
- typedef Elf_Sym_Impl<ELFT> Elf_Sym;
- typedef Elf_Rel_Impl<ELFT, false> Elf_Rel;
- typedef Elf_Rel_Impl<ELFT, true> Elf_Rela;
-
- typedef Elf_Ehdr_Impl<ELFT> Elf_Ehdr;
-
typedef typename ELFT::uint addr_type;
DyldELFObject(ELFObjectFile<ELFT> &&Obj);
diff --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp
index 51efc00f52d4..010a881379f3 100644
--- a/llvm/lib/ObjectYAML/ELFEmitter.cpp
+++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp
@@ -168,15 +168,7 @@ struct Fragment {
/// TODO: This class still has a ways to go before it is truly a "single
/// point of truth".
template <class ELFT> class ELFState {
- typedef typename ELFT::Ehdr Elf_Ehdr;
- typedef typename ELFT::Phdr Elf_Phdr;
- typedef typename ELFT::Shdr Elf_Shdr;
- typedef typename ELFT::Sym Elf_Sym;
- typedef typename ELFT::Rel Elf_Rel;
- typedef typename ELFT::Rela Elf_Rela;
- typedef typename ELFT::Relr Elf_Relr;
- typedef typename ELFT::Dyn Elf_Dyn;
- typedef typename ELFT::uint uintX_t;
+ LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
enum class SymtabType { Static, Dynamic };
@@ -1477,9 +1469,6 @@ template <class ELFT>
void ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader,
const ELFYAML::VerdefSection &Section,
ContiguousBlobAccumulator &CBA) {
- typedef typename ELFT::Verdef Elf_Verdef;
- typedef typename ELFT::Verdaux Elf_Verdaux;
-
SHeader.sh_info = Section.Info;
if (!Section.Entries)
@@ -1522,9 +1511,6 @@ template <class ELFT>
void ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader,
const ELFYAML::VerneedSection &Section,
ContiguousBlobAccumulator &CBA) {
- typedef typename ELFT::Verneed Elf_Verneed;
- typedef typename ELFT::Vernaux Elf_Vernaux;
-
SHeader.sh_info = Section.Info;
if (!Section.VerneedV)
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 00f8c3fcefac..fe2aad166250 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -80,35 +80,6 @@ using namespace ELF;
#define ENUM_ENT_1(enum) \
{ #enum, #enum, ELF::enum }
-#define TYPEDEF_ELF_TYPES(ELFT) \
- using ELFO = ELFFile<ELFT>; \
- using Elf_Addr = typename ELFT::Addr; \
- using Elf_Shdr = typename ELFT::Shdr; \
- using Elf_Sym = typename ELFT::Sym; \
- using Elf_Dyn = typename ELFT::Dyn; \
- using Elf_Dyn_Range = typename ELFT::DynRange; \
- using Elf_Rel = typename ELFT::Rel; \
- using Elf_Rela = typename ELFT::Rela; \
- using Elf_Relr = typename ELFT::Relr; \
- using Elf_Rel_Range = typename ELFT::RelRange; \
- using Elf_Rela_Range = typename ELFT::RelaRange; \
- using Elf_Relr_Range = typename ELFT::RelrRange; \
- using Elf_Phdr = typename ELFT::Phdr; \
- using Elf_Half = typename ELFT::Half; \
- using Elf_Ehdr = typename ELFT::Ehdr; \
- using Elf_Word = typename ELFT::Word; \
- using Elf_Hash = typename ELFT::Hash; \
- using Elf_GnuHash = typename ELFT::GnuHash; \
- using Elf_Note = typename ELFT::Note; \
- using Elf_Sym_Range = typename ELFT::SymRange; \
- using Elf_Versym = typename ELFT::Versym; \
- using Elf_Verneed = typename ELFT::Verneed; \
- using Elf_Vernaux = typename ELFT::Vernaux; \
- using Elf_Verdef = typename ELFT::Verdef; \
- using Elf_Verdaux = typename ELFT::Verdaux; \
- using Elf_CGProfile = typename ELFT::CGProfile; \
- using uintX_t = typename ELFT::uint;
-
namespace {
template <class ELFT> class DumpStyle;
@@ -304,7 +275,7 @@ template <typename ELFT> class ELFDumper : public ObjDumper {
private:
std::unique_ptr<DumpStyle<ELFT>> ELFDumperStyle;
- TYPEDEF_ELF_TYPES(ELFT)
+ LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
Expected<DynRegionInfo> createDRI(uint64_t Offset, uint64_t Size,
uint64_t EntSize) {
@@ -750,7 +721,7 @@ template <class ELFT> class MipsGOTParser;
template <typename ELFT> class DumpStyle {
public:
- TYPEDEF_ELF_TYPES(ELFT)
+ LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
DumpStyle(const ELFDumper<ELFT> &Dumper)
: Obj(Dumper.getElfObject().getELFFile()), ElfObj(Dumper.getElfObject()),
@@ -840,7 +811,7 @@ template <typename ELFT> class GNUStyle : public DumpStyle<ELFT> {
formatted_raw_ostream &OS;
public:
- TYPEDEF_ELF_TYPES(ELFT)
+ LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
GNUStyle(ScopedPrinter &W, const ELFDumper<ELFT> &Dumper)
: DumpStyle<ELFT>(Dumper),
@@ -967,7 +938,7 @@ void DumpStyle<ELFT>::reportUniqueWarning(const Twine &Msg) const {
template <typename ELFT> class LLVMStyle : public DumpStyle<ELFT> {
public:
- TYPEDEF_ELF_TYPES(ELFT)
+ LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
LLVMStyle(ScopedPrinter &W, const ELFDumper<ELFT> &Dumper)
: DumpStyle<ELFT>(Dumper), W(W) {}
@@ -2940,12 +2911,12 @@ namespace {
template <class ELFT> class MipsGOTParser {
public:
- TYPEDEF_ELF_TYPES(ELFT)
- using Entry = typename ELFO::Elf_Addr;
+ LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
+ using Entry = typename ELFT::Addr;
using Entries = ArrayRef<Entry>;
const bool IsStatic;
- const ELFO &Obj;
+ const ELFFile<ELFT> &Obj;
const ELFDumper<ELFT> &Dumper;
MipsGOTParser(const ELFDumper<ELFT> &D);
diff --git a/llvm/tools/obj2yaml/elf2yaml.cpp b/llvm/tools/obj2yaml/elf2yaml.cpp
index 2b54acd99f9e..50c3e90eb667 100644
--- a/llvm/tools/obj2yaml/elf2yaml.cpp
+++ b/llvm/tools/obj2yaml/elf2yaml.cpp
@@ -24,15 +24,7 @@ namespace {
template <class ELFT>
class ELFDumper {
- typedef object::Elf_Sym_Impl<ELFT> Elf_Sym;
- typedef typename ELFT::Dyn Elf_Dyn;
- typedef typename ELFT::Shdr Elf_Shdr;
- typedef typename ELFT::Word Elf_Word;
- typedef typename ELFT::Rel Elf_Rel;
- typedef typename ELFT::Rela Elf_Rela;
- using Elf_Relr = typename ELFT::Relr;
- using Elf_Nhdr = typename ELFT::Nhdr;
- using Elf_Note = typename ELFT::Note;
+ LLVM_ELF_IMPORT_TYPES_ELFT(ELFT)
ArrayRef<Elf_Shdr> Sections;
ArrayRef<Elf_Sym> SymTable;
@@ -1308,9 +1300,6 @@ ELFDumper<ELFT>::dumpGnuHashSection(const Elf_Shdr *Shdr) {
template <class ELFT>
Expected<ELFYAML::VerdefSection *>
ELFDumper<ELFT>::dumpVerdefSection(const Elf_Shdr *Shdr) {
- typedef typename ELFT::Verdef Elf_Verdef;
- typedef typename ELFT::Verdaux Elf_Verdaux;
-
auto S = std::make_unique<ELFYAML::VerdefSection>();
if (Error E = dumpCommonSection(Shdr, *S))
return std::move(E);
@@ -1360,8 +1349,6 @@ ELFDumper<ELFT>::dumpVerdefSection(const Elf_Shdr *Shdr) {
template <class ELFT>
Expected<ELFYAML::SymverSection *>
ELFDumper<ELFT>::dumpSymverSection(const Elf_Shdr *Shdr) {
- typedef typename ELFT::Half Elf_Half;
-
auto S = std::make_unique<ELFYAML::SymverSection>();
if (Error E = dumpCommonSection(Shdr, *S))
return std::move(E);
@@ -1380,9 +1367,6 @@ ELFDumper<ELFT>::dumpSymverSection(const Elf_Shdr *Shdr) {
template <class ELFT>
Expected<ELFYAML::VerneedSection *>
ELFDumper<ELFT>::dumpVerneedSection(const Elf_Shdr *Shdr) {
- typedef typename ELFT::Verneed Elf_Verneed;
- typedef typename ELFT::Vernaux Elf_Vernaux;
-
auto S = std::make_unique<ELFYAML::VerneedSection>();
if (Error E = dumpCommonSection(Shdr, *S))
return std::move(E);
More information about the llvm-branch-commits
mailing list