mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Change DT_* value definitions to macros in a separate file
Summary: I recently added a new dynamic tag to our fork of LLVM and when adding it to llvm-readobj I noticed that not all DT_ values were being handled there. Using macros in a .def file that can be included by both ELFDumper.cpp and the ELF.h header ensures that the two don't get out of sync when new values are added. Reviewers: grimar, pcc, davide, espindola Reviewed By: grimar, espindola Subscribers: srhines, llvm-commits Differential Revision: https://reviews.llvm.org/D44558 llvm-svn: 328099
This commit is contained in:
parent
a9a88c6e1c
commit
18b097b322
187
include/llvm/BinaryFormat/DynamicTags.def
Normal file
187
include/llvm/BinaryFormat/DynamicTags.def
Normal file
@ -0,0 +1,187 @@
|
||||
#ifndef DYNAMIC_TAG
|
||||
#error "DYNAMIC_TAG must be defined"
|
||||
#endif
|
||||
|
||||
// Add separate macros for the architecture specific tags and the markers
|
||||
// such as DT_HIOS, etc. to allow using this file to in other contexts.
|
||||
// For example we can use it to generate a stringification switch statement.
|
||||
|
||||
#ifndef HEXAGON_DYNAMIC_TAG
|
||||
#define HEXAGON_DYNAMIC_TAG(name, value) DYNAMIC_TAG(name, value)
|
||||
#define HEXAGON_DYNAMIC_TAG_DEFINED
|
||||
#endif
|
||||
|
||||
#ifndef MIPS_DYNAMIC_TAG
|
||||
#define MIPS_DYNAMIC_TAG(name, value) DYNAMIC_TAG(name, value)
|
||||
#define MIPS_DYNAMIC_TAG_DEFINED
|
||||
#endif
|
||||
|
||||
#ifndef DYNAMIC_TAG_MARKER
|
||||
#define DYNAMIC_TAG_MARKER(name, value) DYNAMIC_TAG(name, value)
|
||||
#define DYNAMIC_TAG_MARKER_DEFINED
|
||||
#endif
|
||||
|
||||
DYNAMIC_TAG(NULL, 0) // Marks end of dynamic array.
|
||||
DYNAMIC_TAG(NEEDED, 1) // String table offset of needed library.
|
||||
DYNAMIC_TAG(PLTRELSZ, 2) // Size of relocation entries in PLT.
|
||||
DYNAMIC_TAG(PLTGOT, 3) // Address associated with linkage table.
|
||||
DYNAMIC_TAG(HASH, 4) // Address of symbolic hash table.
|
||||
DYNAMIC_TAG(STRTAB, 5) // Address of dynamic string table.
|
||||
DYNAMIC_TAG(SYMTAB, 6) // Address of dynamic symbol table.
|
||||
DYNAMIC_TAG(RELA, 7) // Address of relocation table (Rela entries).
|
||||
DYNAMIC_TAG(RELASZ, 8) // Size of Rela relocation table.
|
||||
DYNAMIC_TAG(RELAENT, 9) // Size of a Rela relocation entry.
|
||||
DYNAMIC_TAG(STRSZ, 10) // Total size of the string table.
|
||||
DYNAMIC_TAG(SYMENT, 11) // Size of a symbol table entry.
|
||||
DYNAMIC_TAG(INIT, 12) // Address of initialization function.
|
||||
DYNAMIC_TAG(FINI, 13) // Address of termination function.
|
||||
DYNAMIC_TAG(SONAME, 14) // String table offset of a shared objects name.
|
||||
DYNAMIC_TAG(RPATH, 15) // String table offset of library search path.
|
||||
DYNAMIC_TAG(SYMBOLIC, 16) // Changes symbol resolution algorithm.
|
||||
DYNAMIC_TAG(REL, 17) // Address of relocation table (Rel entries).
|
||||
DYNAMIC_TAG(RELSZ, 18) // Size of Rel relocation table.
|
||||
DYNAMIC_TAG(RELENT, 19) // Size of a Rel relocation entry.
|
||||
DYNAMIC_TAG(PLTREL, 20) // Type of relocation entry used for linking.
|
||||
DYNAMIC_TAG(DEBUG, 21) // Reserved for debugger.
|
||||
DYNAMIC_TAG(TEXTREL, 22) // Relocations exist for non-writable segments.
|
||||
DYNAMIC_TAG(JMPREL, 23) // Address of relocations associated with PLT.
|
||||
DYNAMIC_TAG(BIND_NOW, 24) // Process all relocations before execution.
|
||||
DYNAMIC_TAG(INIT_ARRAY, 25) // Pointer to array of initialization functions.
|
||||
DYNAMIC_TAG(FINI_ARRAY, 26) // Pointer to array of termination functions.
|
||||
DYNAMIC_TAG(INIT_ARRAYSZ, 27) // Size of DT_INIT_ARRAY.
|
||||
DYNAMIC_TAG(FINI_ARRAYSZ, 28) // Size of DT_FINI_ARRAY.
|
||||
DYNAMIC_TAG(RUNPATH, 29) // String table offset of lib search path.
|
||||
DYNAMIC_TAG(FLAGS, 30) // Flags.
|
||||
DYNAMIC_TAG_MARKER(ENCODING, 32) // Values from here to DT_LOOS follow the rules
|
||||
// for the interpretation of the d_un union.
|
||||
|
||||
DYNAMIC_TAG(PREINIT_ARRAY, 32) // Pointer to array of preinit functions.
|
||||
DYNAMIC_TAG(PREINIT_ARRAYSZ, 33) // Size of the DT_PREINIT_ARRAY array.
|
||||
|
||||
DYNAMIC_TAG_MARKER(LOOS, 0x60000000) // Start of environment specific tags.
|
||||
DYNAMIC_TAG_MARKER(HIOS, 0x6FFFFFFF) // End of environment specific tags.
|
||||
DYNAMIC_TAG_MARKER(LOPROC, 0x70000000) // Start of processor specific tags.
|
||||
DYNAMIC_TAG_MARKER(HIPROC, 0x7FFFFFFF) // End of processor specific tags.
|
||||
|
||||
// Android packed relocation section tags.
|
||||
// https://android.googlesource.com/platform/bionic/+/6f12bfece5dcc01325e0abba56a46b1bcf991c69/tools/relocation_packer/src/elf_file.cc#31
|
||||
DYNAMIC_TAG(ANDROID_REL, 0x6000000F)
|
||||
DYNAMIC_TAG(ANDROID_RELSZ, 0x60000010)
|
||||
DYNAMIC_TAG(ANDROID_RELA, 0x60000011)
|
||||
DYNAMIC_TAG(ANDROID_RELASZ, 0x60000012)
|
||||
|
||||
DYNAMIC_TAG(GNU_HASH, 0x6FFFFEF5) // Reference to the GNU hash table.
|
||||
DYNAMIC_TAG(TLSDESC_PLT, 0x6FFFFEF6) // Location of PLT entry for TLS
|
||||
// descriptor resolver calls.
|
||||
DYNAMIC_TAG(TLSDESC_GOT, 0x6FFFFEF7) // Location of GOT entry used by TLS
|
||||
// descriptor resolver PLT entry.
|
||||
DYNAMIC_TAG(RELACOUNT, 0x6FFFFFF9) // ELF32_Rela count.
|
||||
DYNAMIC_TAG(RELCOUNT, 0x6FFFFFFA) // ELF32_Rel count.
|
||||
|
||||
DYNAMIC_TAG(FLAGS_1, 0X6FFFFFFB) // Flags_1.
|
||||
|
||||
DYNAMIC_TAG(VERSYM, 0x6FFFFFF0) // The address of .gnu.version section.
|
||||
DYNAMIC_TAG(VERDEF, 0X6FFFFFFC) // The address of the version definition
|
||||
// table.
|
||||
DYNAMIC_TAG(VERDEFNUM, 0X6FFFFFFD) // The number of entries in DT_VERDEF.
|
||||
DYNAMIC_TAG(VERNEED, 0X6FFFFFFE) // The address of the version dependency
|
||||
// table.
|
||||
DYNAMIC_TAG(VERNEEDNUM, 0X6FFFFFFF) // The number of entries in DT_VERNEED.
|
||||
|
||||
// Hexagon specific dynamic table entries
|
||||
HEXAGON_DYNAMIC_TAG(HEXAGON_SYMSZ, 0x70000000)
|
||||
HEXAGON_DYNAMIC_TAG(HEXAGON_VER, 0x70000001)
|
||||
HEXAGON_DYNAMIC_TAG(HEXAGON_PLT, 0x70000002)
|
||||
|
||||
// Mips specific dynamic table entry tags.
|
||||
|
||||
MIPS_DYNAMIC_TAG(MIPS_RLD_VERSION, 0x70000001) // 32 bit version number for
|
||||
// runtime linker interface.
|
||||
MIPS_DYNAMIC_TAG(MIPS_TIME_STAMP, 0x70000002) // Time stamp.
|
||||
MIPS_DYNAMIC_TAG(MIPS_ICHECKSUM, 0x70000003) // Checksum of external strings
|
||||
// and common sizes.
|
||||
MIPS_DYNAMIC_TAG(MIPS_IVERSION, 0x70000004) // Index of version string
|
||||
// in string table.
|
||||
MIPS_DYNAMIC_TAG(MIPS_FLAGS, 0x70000005) // 32 bits of flags.
|
||||
MIPS_DYNAMIC_TAG(MIPS_BASE_ADDRESS, 0x70000006) // Base address of the segment.
|
||||
MIPS_DYNAMIC_TAG(MIPS_MSYM, 0x70000007) // Address of .msym section.
|
||||
MIPS_DYNAMIC_TAG(MIPS_CONFLICT, 0x70000008) // Address of .conflict section.
|
||||
MIPS_DYNAMIC_TAG(MIPS_LIBLIST, 0x70000009) // Address of .liblist section.
|
||||
MIPS_DYNAMIC_TAG(MIPS_LOCAL_GOTNO, 0x7000000a) // Number of local global offset
|
||||
// table entries.
|
||||
MIPS_DYNAMIC_TAG(MIPS_CONFLICTNO, 0x7000000b) // Number of entries
|
||||
// in the .conflict section.
|
||||
MIPS_DYNAMIC_TAG(MIPS_LIBLISTNO, 0x70000010) // Number of entries
|
||||
// in the .liblist section.
|
||||
MIPS_DYNAMIC_TAG(MIPS_SYMTABNO, 0x70000011) // Number of entries
|
||||
// in the .dynsym section.
|
||||
MIPS_DYNAMIC_TAG(MIPS_UNREFEXTNO, 0x70000012) // Index of first external dynamic
|
||||
// symbol not referenced locally.
|
||||
MIPS_DYNAMIC_TAG(MIPS_GOTSYM, 0x70000013) // Index of first dynamic symbol
|
||||
// in global offset table.
|
||||
MIPS_DYNAMIC_TAG(MIPS_HIPAGENO, 0x70000014) // Number of page table entries
|
||||
// in global offset table.
|
||||
MIPS_DYNAMIC_TAG(MIPS_RLD_MAP, 0x70000016) // Address of run time loader map
|
||||
// used for debugging.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_CLASS, 0x70000017) // Delta C++ class definition.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_CLASS_NO, 0x70000018) // Number of entries
|
||||
// in DT_MIPS_DELTA_CLASS.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_INSTANCE, 0x70000019) // Delta C++ class instances.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_INSTANCE_NO, 0x7000001A) // Number of entries
|
||||
// in DT_MIPS_DELTA_INSTANCE.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_RELOC, 0x7000001B) // Delta relocations.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_RELOC_NO, 0x7000001C) // Number of entries
|
||||
// in DT_MIPS_DELTA_RELOC.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_SYM, 0x7000001D) // Delta symbols that Delta
|
||||
// relocations refer to.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_SYM_NO, 0x7000001E) // Number of entries
|
||||
// in DT_MIPS_DELTA_SYM.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_CLASSSYM, 0x70000020) // Delta symbols that hold
|
||||
// class declarations.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DELTA_CLASSSYM_NO, 0x70000021) // Number of entries
|
||||
// in DT_MIPS_DELTA_CLASSSYM.
|
||||
|
||||
MIPS_DYNAMIC_TAG(MIPS_CXX_FLAGS, 0x70000022) // Flags indicating information
|
||||
// about C++ flavor.
|
||||
MIPS_DYNAMIC_TAG(MIPS_PIXIE_INIT, 0x70000023) // Pixie information.
|
||||
MIPS_DYNAMIC_TAG(MIPS_SYMBOL_LIB, 0x70000024) // Address of .MIPS.symlib
|
||||
MIPS_DYNAMIC_TAG(MIPS_LOCALPAGE_GOTIDX, 0x70000025) // The GOT index of the first PTE
|
||||
// for a segment
|
||||
MIPS_DYNAMIC_TAG(MIPS_LOCAL_GOTIDX, 0x70000026) // The GOT index of the first PTE
|
||||
// for a local symbol
|
||||
MIPS_DYNAMIC_TAG(MIPS_HIDDEN_GOTIDX, 0x70000027) // The GOT index of the first PTE
|
||||
// for a hidden symbol
|
||||
MIPS_DYNAMIC_TAG(MIPS_PROTECTED_GOTIDX, 0x70000028) // The GOT index of the first PTE
|
||||
// for a protected symbol
|
||||
MIPS_DYNAMIC_TAG(MIPS_OPTIONS, 0x70000029) // Address of `.MIPS.options'.
|
||||
MIPS_DYNAMIC_TAG(MIPS_INTERFACE, 0x7000002A) // Address of `.interface'.
|
||||
MIPS_DYNAMIC_TAG(MIPS_DYNSTR_ALIGN, 0x7000002B) // Unknown.
|
||||
MIPS_DYNAMIC_TAG(MIPS_INTERFACE_SIZE, 0x7000002C) // Size of the .interface section.
|
||||
MIPS_DYNAMIC_TAG(MIPS_RLD_TEXT_RESOLVE_ADDR, 0x7000002D) // Size of rld_text_resolve
|
||||
// function stored in the GOT.
|
||||
MIPS_DYNAMIC_TAG(MIPS_PERF_SUFFIX, 0x7000002E) // Default suffix of DSO to be added
|
||||
// by rld on dlopen() calls.
|
||||
MIPS_DYNAMIC_TAG(MIPS_COMPACT_SIZE, 0x7000002F) // Size of compact relocation
|
||||
// section (O32).
|
||||
MIPS_DYNAMIC_TAG(MIPS_GP_VALUE, 0x70000030) // GP value for auxiliary GOTs.
|
||||
MIPS_DYNAMIC_TAG(MIPS_AUX_DYNAMIC, 0x70000031) // Address of auxiliary .dynamic.
|
||||
MIPS_DYNAMIC_TAG(MIPS_PLTGOT, 0x70000032) // Address of the base of the PLTGOT.
|
||||
MIPS_DYNAMIC_TAG(MIPS_RWPLT, 0x70000034) // Points to the base
|
||||
// of a writable PLT.
|
||||
MIPS_DYNAMIC_TAG(MIPS_RLD_MAP_REL, 0x70000035) // Relative offset of run time loader
|
||||
// map, used for debugging.
|
||||
|
||||
// Sun machine-independent extensions.
|
||||
DYNAMIC_TAG(AUXILIARY, 0x7FFFFFFD) // Shared object to load before self
|
||||
DYNAMIC_TAG(FILTER, 0x7FFFFFFF) // Shared object to get values from
|
||||
|
||||
|
||||
#ifdef DYNAMIC_TAG_MARKER_DEFINED
|
||||
#undef DYNAMIC_TAG_MARKER
|
||||
#endif
|
||||
#ifdef MIPS_DYNAMIC_TAG_DEFINED
|
||||
#undef MIPS_DYNAMIC_TAG
|
||||
#endif
|
||||
#ifdef HEXAGON_DYNAMIC_TAG_DEFINED
|
||||
#undef HEXAGON_DYNAMIC_TAG
|
||||
#endif
|
@ -1190,154 +1190,9 @@ struct Elf64_Dyn {
|
||||
|
||||
// Dynamic table entry tags.
|
||||
enum {
|
||||
DT_NULL = 0, // Marks end of dynamic array.
|
||||
DT_NEEDED = 1, // String table offset of needed library.
|
||||
DT_PLTRELSZ = 2, // Size of relocation entries in PLT.
|
||||
DT_PLTGOT = 3, // Address associated with linkage table.
|
||||
DT_HASH = 4, // Address of symbolic hash table.
|
||||
DT_STRTAB = 5, // Address of dynamic string table.
|
||||
DT_SYMTAB = 6, // Address of dynamic symbol table.
|
||||
DT_RELA = 7, // Address of relocation table (Rela entries).
|
||||
DT_RELASZ = 8, // Size of Rela relocation table.
|
||||
DT_RELAENT = 9, // Size of a Rela relocation entry.
|
||||
DT_STRSZ = 10, // Total size of the string table.
|
||||
DT_SYMENT = 11, // Size of a symbol table entry.
|
||||
DT_INIT = 12, // Address of initialization function.
|
||||
DT_FINI = 13, // Address of termination function.
|
||||
DT_SONAME = 14, // String table offset of a shared objects name.
|
||||
DT_RPATH = 15, // String table offset of library search path.
|
||||
DT_SYMBOLIC = 16, // Changes symbol resolution algorithm.
|
||||
DT_REL = 17, // Address of relocation table (Rel entries).
|
||||
DT_RELSZ = 18, // Size of Rel relocation table.
|
||||
DT_RELENT = 19, // Size of a Rel relocation entry.
|
||||
DT_PLTREL = 20, // Type of relocation entry used for linking.
|
||||
DT_DEBUG = 21, // Reserved for debugger.
|
||||
DT_TEXTREL = 22, // Relocations exist for non-writable segments.
|
||||
DT_JMPREL = 23, // Address of relocations associated with PLT.
|
||||
DT_BIND_NOW = 24, // Process all relocations before execution.
|
||||
DT_INIT_ARRAY = 25, // Pointer to array of initialization functions.
|
||||
DT_FINI_ARRAY = 26, // Pointer to array of termination functions.
|
||||
DT_INIT_ARRAYSZ = 27, // Size of DT_INIT_ARRAY.
|
||||
DT_FINI_ARRAYSZ = 28, // Size of DT_FINI_ARRAY.
|
||||
DT_RUNPATH = 29, // String table offset of lib search path.
|
||||
DT_FLAGS = 30, // Flags.
|
||||
DT_ENCODING = 32, // Values from here to DT_LOOS follow the rules
|
||||
// for the interpretation of the d_un union.
|
||||
|
||||
DT_PREINIT_ARRAY = 32, // Pointer to array of preinit functions.
|
||||
DT_PREINIT_ARRAYSZ = 33, // Size of the DT_PREINIT_ARRAY array.
|
||||
|
||||
DT_LOOS = 0x60000000, // Start of environment specific tags.
|
||||
DT_HIOS = 0x6FFFFFFF, // End of environment specific tags.
|
||||
DT_LOPROC = 0x70000000, // Start of processor specific tags.
|
||||
DT_HIPROC = 0x7FFFFFFF, // End of processor specific tags.
|
||||
|
||||
// Android packed relocation section tags.
|
||||
// https://android.googlesource.com/platform/bionic/+/6f12bfece5dcc01325e0abba56a46b1bcf991c69/tools/relocation_packer/src/elf_file.cc#31
|
||||
DT_ANDROID_REL = 0x6000000F,
|
||||
DT_ANDROID_RELSZ = 0x60000010,
|
||||
DT_ANDROID_RELA = 0x60000011,
|
||||
DT_ANDROID_RELASZ = 0x60000012,
|
||||
|
||||
DT_GNU_HASH = 0x6FFFFEF5, // Reference to the GNU hash table.
|
||||
DT_TLSDESC_PLT =
|
||||
0x6FFFFEF6, // Location of PLT entry for TLS descriptor resolver calls.
|
||||
DT_TLSDESC_GOT = 0x6FFFFEF7, // Location of GOT entry used by TLS descriptor
|
||||
// resolver PLT entry.
|
||||
DT_RELACOUNT = 0x6FFFFFF9, // ELF32_Rela count.
|
||||
DT_RELCOUNT = 0x6FFFFFFA, // ELF32_Rel count.
|
||||
|
||||
DT_FLAGS_1 = 0X6FFFFFFB, // Flags_1.
|
||||
DT_VERSYM = 0x6FFFFFF0, // The address of .gnu.version section.
|
||||
DT_VERDEF = 0X6FFFFFFC, // The address of the version definition table.
|
||||
DT_VERDEFNUM = 0X6FFFFFFD, // The number of entries in DT_VERDEF.
|
||||
DT_VERNEED = 0X6FFFFFFE, // The address of the version Dependency table.
|
||||
DT_VERNEEDNUM = 0X6FFFFFFF, // The number of entries in DT_VERNEED.
|
||||
|
||||
// Hexagon specific dynamic table entries
|
||||
DT_HEXAGON_SYMSZ = 0x70000000,
|
||||
DT_HEXAGON_VER = 0x70000001,
|
||||
DT_HEXAGON_PLT = 0x70000002,
|
||||
|
||||
// Mips specific dynamic table entry tags.
|
||||
DT_MIPS_RLD_VERSION = 0x70000001, // 32 bit version number for runtime
|
||||
// linker interface.
|
||||
DT_MIPS_TIME_STAMP = 0x70000002, // Time stamp.
|
||||
DT_MIPS_ICHECKSUM = 0x70000003, // Checksum of external strings
|
||||
// and common sizes.
|
||||
DT_MIPS_IVERSION = 0x70000004, // Index of version string
|
||||
// in string table.
|
||||
DT_MIPS_FLAGS = 0x70000005, // 32 bits of flags.
|
||||
DT_MIPS_BASE_ADDRESS = 0x70000006, // Base address of the segment.
|
||||
DT_MIPS_MSYM = 0x70000007, // Address of .msym section.
|
||||
DT_MIPS_CONFLICT = 0x70000008, // Address of .conflict section.
|
||||
DT_MIPS_LIBLIST = 0x70000009, // Address of .liblist section.
|
||||
DT_MIPS_LOCAL_GOTNO = 0x7000000a, // Number of local global offset
|
||||
// table entries.
|
||||
DT_MIPS_CONFLICTNO = 0x7000000b, // Number of entries
|
||||
// in the .conflict section.
|
||||
DT_MIPS_LIBLISTNO = 0x70000010, // Number of entries
|
||||
// in the .liblist section.
|
||||
DT_MIPS_SYMTABNO = 0x70000011, // Number of entries
|
||||
// in the .dynsym section.
|
||||
DT_MIPS_UNREFEXTNO = 0x70000012, // Index of first external dynamic symbol
|
||||
// not referenced locally.
|
||||
DT_MIPS_GOTSYM = 0x70000013, // Index of first dynamic symbol
|
||||
// in global offset table.
|
||||
DT_MIPS_HIPAGENO = 0x70000014, // Number of page table entries
|
||||
// in global offset table.
|
||||
DT_MIPS_RLD_MAP = 0x70000016, // Address of run time loader map,
|
||||
// used for debugging.
|
||||
DT_MIPS_DELTA_CLASS = 0x70000017, // Delta C++ class definition.
|
||||
DT_MIPS_DELTA_CLASS_NO = 0x70000018, // Number of entries
|
||||
// in DT_MIPS_DELTA_CLASS.
|
||||
DT_MIPS_DELTA_INSTANCE = 0x70000019, // Delta C++ class instances.
|
||||
DT_MIPS_DELTA_INSTANCE_NO = 0x7000001A, // Number of entries
|
||||
// in DT_MIPS_DELTA_INSTANCE.
|
||||
DT_MIPS_DELTA_RELOC = 0x7000001B, // Delta relocations.
|
||||
DT_MIPS_DELTA_RELOC_NO = 0x7000001C, // Number of entries
|
||||
// in DT_MIPS_DELTA_RELOC.
|
||||
DT_MIPS_DELTA_SYM = 0x7000001D, // Delta symbols that Delta
|
||||
// relocations refer to.
|
||||
DT_MIPS_DELTA_SYM_NO = 0x7000001E, // Number of entries
|
||||
// in DT_MIPS_DELTA_SYM.
|
||||
DT_MIPS_DELTA_CLASSSYM = 0x70000020, // Delta symbols that hold
|
||||
// class declarations.
|
||||
DT_MIPS_DELTA_CLASSSYM_NO = 0x70000021, // Number of entries
|
||||
// in DT_MIPS_DELTA_CLASSSYM.
|
||||
DT_MIPS_CXX_FLAGS = 0x70000022, // Flags indicating information
|
||||
// about C++ flavor.
|
||||
DT_MIPS_PIXIE_INIT = 0x70000023, // Pixie information.
|
||||
DT_MIPS_SYMBOL_LIB = 0x70000024, // Address of .MIPS.symlib
|
||||
DT_MIPS_LOCALPAGE_GOTIDX = 0x70000025, // The GOT index of the first PTE
|
||||
// for a segment
|
||||
DT_MIPS_LOCAL_GOTIDX = 0x70000026, // The GOT index of the first PTE
|
||||
// for a local symbol
|
||||
DT_MIPS_HIDDEN_GOTIDX = 0x70000027, // The GOT index of the first PTE
|
||||
// for a hidden symbol
|
||||
DT_MIPS_PROTECTED_GOTIDX = 0x70000028, // The GOT index of the first PTE
|
||||
// for a protected symbol
|
||||
DT_MIPS_OPTIONS = 0x70000029, // Address of `.MIPS.options'.
|
||||
DT_MIPS_INTERFACE = 0x7000002A, // Address of `.interface'.
|
||||
DT_MIPS_DYNSTR_ALIGN = 0x7000002B, // Unknown.
|
||||
DT_MIPS_INTERFACE_SIZE = 0x7000002C, // Size of the .interface section.
|
||||
DT_MIPS_RLD_TEXT_RESOLVE_ADDR = 0x7000002D, // Size of rld_text_resolve
|
||||
// function stored in the GOT.
|
||||
DT_MIPS_PERF_SUFFIX = 0x7000002E, // Default suffix of DSO to be added
|
||||
// by rld on dlopen() calls.
|
||||
DT_MIPS_COMPACT_SIZE = 0x7000002F, // Size of compact relocation
|
||||
// section (O32).
|
||||
DT_MIPS_GP_VALUE = 0x70000030, // GP value for auxiliary GOTs.
|
||||
DT_MIPS_AUX_DYNAMIC = 0x70000031, // Address of auxiliary .dynamic.
|
||||
DT_MIPS_PLTGOT = 0x70000032, // Address of the base of the PLTGOT.
|
||||
DT_MIPS_RWPLT = 0x70000034, // Points to the base
|
||||
// of a writable PLT.
|
||||
DT_MIPS_RLD_MAP_REL = 0x70000035, // Relative offset of run time loader
|
||||
// map, used for debugging.
|
||||
|
||||
// Sun machine-independent extensions.
|
||||
DT_AUXILIARY = 0x7FFFFFFD, // Shared object to load before self
|
||||
DT_FILTER = 0x7FFFFFFF // Shared object to get values from
|
||||
#define DYNAMIC_TAG(name, value) DT_##name = value,
|
||||
#include "DynamicTags.def"
|
||||
#undef DYNAMIC_TAG
|
||||
};
|
||||
|
||||
// DT_FLAGS values.
|
||||
|
@ -43,6 +43,7 @@ module LLVM_BinaryFormat {
|
||||
requires cplusplus
|
||||
umbrella "BinaryFormat" module * { export * }
|
||||
textual header "BinaryFormat/Dwarf.def"
|
||||
textual header "BinaryFormat/DynamicTags.def"
|
||||
textual header "BinaryFormat/MachO.def"
|
||||
textual header "BinaryFormat/ELFRelocs/AArch64.def"
|
||||
textual header "BinaryFormat/ELFRelocs/AMDGPU.def"
|
||||
|
@ -1540,89 +1540,45 @@ template <class ELFT> void ELFDumper<ELFT>::printELFLinkerOptions() {
|
||||
ELFDumperStyle->printELFLinkerOptions(Obj);
|
||||
}
|
||||
|
||||
#define LLVM_READOBJ_TYPE_CASE(name) \
|
||||
case DT_##name: return #name
|
||||
|
||||
static const char *getTypeString(unsigned Arch, uint64_t Type) {
|
||||
#define DYNAMIC_TAG(n, v)
|
||||
switch (Arch) {
|
||||
case EM_HEXAGON:
|
||||
switch (Type) {
|
||||
LLVM_READOBJ_TYPE_CASE(HEXAGON_SYMSZ);
|
||||
LLVM_READOBJ_TYPE_CASE(HEXAGON_VER);
|
||||
LLVM_READOBJ_TYPE_CASE(HEXAGON_PLT);
|
||||
#define HEXAGON_DYNAMIC_TAG(name, value) \
|
||||
case DT_##name: \
|
||||
return #name;
|
||||
#include "llvm/BinaryFormat/DynamicTags.def"
|
||||
#undef HEXAGON_DYNAMIC_TAG
|
||||
}
|
||||
case EM_MIPS:
|
||||
switch (Type) {
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP_REL);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_RLD_VERSION);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_FLAGS);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_BASE_ADDRESS);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_LOCAL_GOTNO);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_SYMTABNO);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_UNREFEXTNO);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_GOTSYM);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_PLTGOT);
|
||||
LLVM_READOBJ_TYPE_CASE(MIPS_OPTIONS);
|
||||
#define MIPS_DYNAMIC_TAG(name, value) \
|
||||
case DT_##name: \
|
||||
return #name;
|
||||
#include "llvm/BinaryFormat/DynamicTags.def"
|
||||
#undef MIPS_DYNAMIC_TAG
|
||||
}
|
||||
}
|
||||
#undef DYNAMIC_TAG
|
||||
switch (Type) {
|
||||
LLVM_READOBJ_TYPE_CASE(ANDROID_REL);
|
||||
LLVM_READOBJ_TYPE_CASE(ANDROID_RELSZ);
|
||||
LLVM_READOBJ_TYPE_CASE(ANDROID_RELA);
|
||||
LLVM_READOBJ_TYPE_CASE(ANDROID_RELASZ);
|
||||
LLVM_READOBJ_TYPE_CASE(BIND_NOW);
|
||||
LLVM_READOBJ_TYPE_CASE(DEBUG);
|
||||
LLVM_READOBJ_TYPE_CASE(FINI);
|
||||
LLVM_READOBJ_TYPE_CASE(FINI_ARRAY);
|
||||
LLVM_READOBJ_TYPE_CASE(FINI_ARRAYSZ);
|
||||
LLVM_READOBJ_TYPE_CASE(FLAGS);
|
||||
LLVM_READOBJ_TYPE_CASE(FLAGS_1);
|
||||
LLVM_READOBJ_TYPE_CASE(HASH);
|
||||
LLVM_READOBJ_TYPE_CASE(INIT);
|
||||
LLVM_READOBJ_TYPE_CASE(INIT_ARRAY);
|
||||
LLVM_READOBJ_TYPE_CASE(INIT_ARRAYSZ);
|
||||
LLVM_READOBJ_TYPE_CASE(PREINIT_ARRAY);
|
||||
LLVM_READOBJ_TYPE_CASE(PREINIT_ARRAYSZ);
|
||||
LLVM_READOBJ_TYPE_CASE(JMPREL);
|
||||
LLVM_READOBJ_TYPE_CASE(NEEDED);
|
||||
LLVM_READOBJ_TYPE_CASE(NULL);
|
||||
LLVM_READOBJ_TYPE_CASE(PLTGOT);
|
||||
LLVM_READOBJ_TYPE_CASE(PLTREL);
|
||||
LLVM_READOBJ_TYPE_CASE(PLTRELSZ);
|
||||
LLVM_READOBJ_TYPE_CASE(REL);
|
||||
LLVM_READOBJ_TYPE_CASE(RELA);
|
||||
LLVM_READOBJ_TYPE_CASE(RELENT);
|
||||
LLVM_READOBJ_TYPE_CASE(RELSZ);
|
||||
LLVM_READOBJ_TYPE_CASE(RELAENT);
|
||||
LLVM_READOBJ_TYPE_CASE(RELASZ);
|
||||
LLVM_READOBJ_TYPE_CASE(RPATH);
|
||||
LLVM_READOBJ_TYPE_CASE(RUNPATH);
|
||||
LLVM_READOBJ_TYPE_CASE(SONAME);
|
||||
LLVM_READOBJ_TYPE_CASE(STRSZ);
|
||||
LLVM_READOBJ_TYPE_CASE(STRTAB);
|
||||
LLVM_READOBJ_TYPE_CASE(SYMBOLIC);
|
||||
LLVM_READOBJ_TYPE_CASE(SYMENT);
|
||||
LLVM_READOBJ_TYPE_CASE(SYMTAB);
|
||||
LLVM_READOBJ_TYPE_CASE(TEXTREL);
|
||||
LLVM_READOBJ_TYPE_CASE(VERDEF);
|
||||
LLVM_READOBJ_TYPE_CASE(VERDEFNUM);
|
||||
LLVM_READOBJ_TYPE_CASE(VERNEED);
|
||||
LLVM_READOBJ_TYPE_CASE(VERNEEDNUM);
|
||||
LLVM_READOBJ_TYPE_CASE(VERSYM);
|
||||
LLVM_READOBJ_TYPE_CASE(RELACOUNT);
|
||||
LLVM_READOBJ_TYPE_CASE(RELCOUNT);
|
||||
LLVM_READOBJ_TYPE_CASE(GNU_HASH);
|
||||
LLVM_READOBJ_TYPE_CASE(TLSDESC_PLT);
|
||||
LLVM_READOBJ_TYPE_CASE(TLSDESC_GOT);
|
||||
LLVM_READOBJ_TYPE_CASE(AUXILIARY);
|
||||
LLVM_READOBJ_TYPE_CASE(FILTER);
|
||||
// Now handle all dynamic tags except the architecture specific ones
|
||||
#define MIPS_DYNAMIC_TAG(name, value)
|
||||
#define HEXAGON_DYNAMIC_TAG(name, value)
|
||||
// Also ignore marker tags such as DT_HIOS (maps to DT_VERNEEDNUM), etc.
|
||||
#define DYNAMIC_TAG_MARKER(name, value)
|
||||
#define DYNAMIC_TAG(name, value) \
|
||||
case DT_##name: \
|
||||
return #name;
|
||||
#include "llvm/BinaryFormat/DynamicTags.def"
|
||||
#undef DYNAMIC_TAG
|
||||
#undef MIPS_DYNAMIC_TAG
|
||||
#undef HEXAGON_DYNAMIC_TAG
|
||||
#undef DYNAMIC_TAG_MARKER
|
||||
default: return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
#undef LLVM_READOBJ_TYPE_CASE
|
||||
|
||||
#define LLVM_READOBJ_DT_FLAG_ENT(prefix, enum) \
|
||||
{ #enum, prefix##_##enum }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user