[PATCH] D72474: [ELF] Make TargetInfo::writeIgotPlt a no-op
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 9 12:16:41 PST 2020
MaskRay created this revision.
MaskRay added reviewers: grimar, peter.smith, ruiu.
Herald added subscribers: llvm-commits, kristof.beyls, arichardson, emaste.
Herald added a reviewer: espindola.
Herald added a project: LLVM.
RELA targets don't read initial .got.plt entries.
REL targets (ARM, x86-32) write the address of the IFUNC resolver to the
entry (`write32le(buf, s.getVA())`).
The default writeIgotPlt() is not meaningful. Make it a no-op. AArch64
and x86-64 will have 0 as initial .got.plt entries associated with
IFUNC.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D72474
Files:
lld/ELF/Target.cpp
lld/ELF/Target.h
lld/test/ELF/aarch64-gnu-ifunc-plt.s
lld/test/ELF/gnu-ifunc-plt.s
Index: lld/test/ELF/gnu-ifunc-plt.s
===================================================================
--- lld/test/ELF/gnu-ifunc-plt.s
+++ lld/test/ELF/gnu-ifunc-plt.s
@@ -25,8 +25,8 @@
// GOTPLT: Contents of section .got.plt:
// GOTPLT-NEXT: 203430 40232000 00000000 00000000 00000000
// GOTPLT-NEXT: 203440 00000000 00000000 06132000 00000000
-// GOTPLT-NEXT: 203450 16132000 00000000 26132000 00000000
-// GOTPLT-NEXT: 203460 36132000 00000000
+// GOTPLT-NEXT: 203450 16132000 00000000 00000000 00000000
+// GOTPLT-NEXT: 203460 00000000 00000000
// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
// CHECK: DynamicSection [
Index: lld/test/ELF/aarch64-gnu-ifunc-plt.s
===================================================================
--- lld/test/ELF/aarch64-gnu-ifunc-plt.s
+++ lld/test/ELF/aarch64-gnu-ifunc-plt.s
@@ -23,8 +23,8 @@
// GOTPLT: Contents of section .got.plt:
// GOTPLT-NEXT: 230440 00000000 00000000 00000000 00000000
// GOTPLT-NEXT: 230450 00000000 00000000 f0022100 00000000
-// GOTPLT-NEXT: 230460 f0022100 00000000 f0022100 00000000
-// GOTPLT-NEXT: 230470 f0022100 00000000
+// GOTPLT-NEXT: 230460 f0022100 00000000 00000000 00000000
+// GOTPLT-NEXT: 230470 00000000 00000000
// Check that the PLTRELSZ tag does not include the IRELATIVE relocations
// CHECK: DynamicSection [
Index: lld/ELF/Target.h
===================================================================
--- lld/ELF/Target.h
+++ lld/ELF/Target.h
@@ -32,7 +32,7 @@
virtual void writeGotPltHeader(uint8_t *buf) const {}
virtual void writeGotHeader(uint8_t *buf) const {}
virtual void writeGotPlt(uint8_t *buf, const Symbol &s) const {};
- virtual void writeIgotPlt(uint8_t *buf, const Symbol &s) const;
+ virtual void writeIgotPlt(uint8_t *buf, const Symbol &s) const {}
virtual int64_t getImplicitAddend(const uint8_t *buf, RelType type) const;
virtual int getTlsGdRelaxSkip(RelType type) const { return 1; }
Index: lld/ELF/Target.cpp
===================================================================
--- lld/ELF/Target.cpp
+++ lld/ELF/Target.cpp
@@ -144,10 +144,6 @@
return true;
}
-void TargetInfo::writeIgotPlt(uint8_t *buf, const Symbol &s) const {
- writeGotPlt(buf, s);
-}
-
RelExpr TargetInfo::adjustRelaxExpr(RelType type, const uint8_t *data,
RelExpr expr) const {
return expr;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72474.237152.patch
Type: text/x-patch
Size: 2397 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200109/d1b3a191/attachment.bin>
More information about the llvm-commits
mailing list