summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2015-01-15 17:59:02 +0000
committerJoerg Sonnenberger <joerg@bec.de>2015-01-15 17:59:02 +0000
commitb6956e113afd142c8131a9e913c40451d10339f5 (patch)
tree205ae9d88b878b5f1fbb8087712e4c161651921a /llvm
parent92b25b9649521483c509ed6bd1e38cf18d39260d (diff)
downloadbcm5719-llvm-b6956e113afd142c8131a9e913c40451d10339f5.tar.gz
bcm5719-llvm-b6956e113afd142c8131a9e913c40451d10339f5.zip
Support @PLT loads on 32bit x86.
llvm-svn: 226182
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp3
-rw-r--r--llvm/test/MC/ELF/relocation-386.s3
2 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
index be6a8e4a43e..e8b0b4c5826 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
@@ -222,6 +222,9 @@ unsigned X86ELFObjectWriter::GetRelocType(const MCValue &Target,
case MCSymbolRefExpr::VK_GOT:
Type = ELF::R_386_GOT32;
break;
+ case MCSymbolRefExpr::VK_PLT:
+ Type = ELF::R_386_PLT32;
+ break;
case MCSymbolRefExpr::VK_GOTOFF:
Type = ELF::R_386_GOTOFF;
break;
diff --git a/llvm/test/MC/ELF/relocation-386.s b/llvm/test/MC/ELF/relocation-386.s
index ba12df0d3b6..83c524b9d07 100644
--- a/llvm/test/MC/ELF/relocation-386.s
+++ b/llvm/test/MC/ELF/relocation-386.s
@@ -63,6 +63,8 @@
// Relocation 28 (und_symbol-bar2) is of type R_386_PC8
// CHECK-NEXT: 0xA0 R_386_PC8 und_symbol 0x0
// CHECK-NEXT: 0xA3 R_386_GOTOFF und_symbol 0x0
+// Relocation 29 (zed@PLT) is of type R_386_PLT32 and uses the symbol
+// CHECK-NEXT: 0xA9 R_386_PLT32 zed 0x0
// CHECK-NEXT: }
// CHECK-NEXT: ]
@@ -129,6 +131,7 @@ bar2:
.byte und_symbol-bar2
leal 1 + und_symbol@GOTOFF, %edi
+ movl zed@PLT(%eax), %eax
.section zedsec,"awT",@progbits
zed:
OpenPOWER on IntegriCloud