forked from OSchip/llvm-project
[ELF] Customize dynamic table tag used for .got.plt section referencing.
The patch reviewed by Shankar Easwaran and Rui Ueyama. llvm-svn: 200630
This commit is contained in:
parent
8379ad056d
commit
e6f6f06c91
|
@ -89,6 +89,8 @@ public:
|
|||
_mipsTargetLayout.findOutputSection(".got")->virtualAddr();
|
||||
}
|
||||
|
||||
virtual int64_t getGotPltTag() { return DT_MIPS_PLTGOT; }
|
||||
|
||||
private:
|
||||
std::size_t _dt_symtabno;
|
||||
std::size_t _dt_localgot;
|
||||
|
|
|
@ -1080,7 +1080,7 @@ public:
|
|||
if (_layout.hasPLTRelocationTable()) {
|
||||
dyn.d_tag = DT_PLTRELSZ;
|
||||
_dt_pltrelsz = addEntry(dyn);
|
||||
dyn.d_tag = DT_PLTGOT;
|
||||
dyn.d_tag = getGotPltTag();
|
||||
_dt_pltgot = addEntry(dyn);
|
||||
dyn.d_tag = DT_PLTREL;
|
||||
dyn.d_un.d_val = isRela ? DT_RELA : DT_REL;
|
||||
|
@ -1091,6 +1091,10 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
/// \brief Dynamic table tag for .got.plt section referencing.
|
||||
/// Usually but not always targets use DT_PLTGOT for that.
|
||||
virtual int64_t getGotPltTag() { return DT_PLTGOT; }
|
||||
|
||||
virtual void finalize() {
|
||||
StringTable<ELFT> *dynamicStringTable =
|
||||
_dynamicSymbolTable->getStringTable();
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
# CHECK: 0x0000001A FINI_ARRAY 0x0
|
||||
# CHECK: 0x0000001C FINI_ARRAYSZ 0 (bytes)
|
||||
# CHECK: 0x00000002 PLTRELSZ 8 (bytes)
|
||||
# CHECK: 0x00000003 PLTGOT 0x402000
|
||||
# CHECK: 0x70000032 MIPS_PLTGOT 0x402000
|
||||
# CHECK: 0x00000014 PLTREL REL
|
||||
# CHECK: 0x00000017 JMPREL 0x400162
|
||||
# CHECK: 0x70000001 MIPS_RLD_VERSION 1
|
||||
|
@ -33,6 +33,7 @@
|
|||
# CHECK: 0x7000000A MIPS_LOCAL_GOTNO 2
|
||||
# CHECK: 0x70000011 MIPS_SYMTABNO 2
|
||||
# CHECK: 0x70000013 MIPS_GOTSYM 0x2
|
||||
# CHECK: 0x00000003 PLTGOT 0x401000
|
||||
# CHECK: 0x00000001 NEEDED SharedLibrary (exe-dynamic.test.{{.*}})
|
||||
# CHECK: 0x00000000 NULL 0x0
|
||||
# CHECK: ]
|
||||
|
|
Loading…
Reference in New Issue