summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2010-10-18 20:47:21 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2010-10-18 20:47:21 +0000
commitfba9f749325275c4633c829dbc78c07020b37ed5 (patch)
treed9b9508d25874ca49b1be1c0b6e74026cec2bcec
parent71af9db0e8b5caf9ac2f588a9bc9f0d472d82426 (diff)
downloadbcm5719-llvm-fba9f749325275c4633c829dbc78c07020b37ed5.tar.gz
bcm5719-llvm-fba9f749325275c4633c829dbc78c07020b37ed5.zip
Implement R_386_GOT32.
llvm-svn: 116744
-rw-r--r--llvm/lib/MC/ELFObjectWriter.cpp3
-rw-r--r--llvm/test/MC/ELF/relocation-386.s11
2 files changed, 13 insertions, 1 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index b5943ec717b..adaecc0c025 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -706,6 +706,9 @@ void ELFObjectWriterImpl::RecordRelocation(const MCAssembler &Asm,
switch (Modifier) {
default:
llvm_unreachable("Unimplemented");
+ case MCSymbolRefExpr::VK_GOT:
+ Type = ELF::R_386_GOT32;
+ 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 a29db542a8e..43a9befcecb 100644
--- a/llvm/test/MC/ELF/relocation-386.s
+++ b/llvm/test/MC/ELF/relocation-386.s
@@ -36,13 +36,20 @@
// CHECK-NEXT: ('r_type', 10)
// CHECK-NEXT: ),
-// Relocation 3 (bar3@GOTOFF) is done symbol 6 (bss)
+// Relocation 3 (bar3@GOTOFF) is done with symbol 6 (bss)
// CHECK-NEXT: # Relocation 3
// CHECK-NEXT: (('r_offset',
// CHECK-NEXT: ('r_sym', 6
// CHECK-NEXT: ('r_type',
// CHECK-NEXT: ),
+// Relocation 4 (bar2@GOT) is of type R_386_GOT32
+// CHECK-NEXT: # Relocation 4
+// CHECK-NEXT: (('r_offset',
+// CHECK-NEXT: ('r_sym',
+// CHECK-NEXT: ('r_type', 3
+// CHECK-NEXT: ),
+
.text
bar:
leal .Lfoo@GOTOFF(%ebx), %eax
@@ -57,6 +64,8 @@ bar2:
.local bar3
.comm bar3,1,1
+ movl bar2j@GOT(%eax), %eax
+
.section .rodata.str1.16,"aMS",@progbits,1
.Lfoo:
.asciz "bool llvm::llvm_start_multithreaded()"
OpenPOWER on IntegriCloud