aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/MC/ELFObjectWriter.cpp3
-rw-r--r--test/MC/ELF/basic-elf.ll71
-rw-r--r--test/MC/ELF/local-reloc.s19
-rw-r--r--test/MC/ELF/merge.s10
4 files changed, 51 insertions, 52 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index 58fad80ba8..120789b6fd 100644
--- a/lib/MC/ELFObjectWriter.cpp
+++ b/lib/MC/ELFObjectWriter.cpp
@@ -839,8 +839,6 @@ void ELFObjectWriterImpl::CreateMetadataSections(MCAssembler &Asm,
MCContext &Ctx = Asm.getContext();
MCDataFragment *F;
- WriteRelocations(Asm, Layout);
-
const MCSection *SymtabSection;
unsigned EntrySize = Is64Bit ? ELF::SYMENTRY_SIZE64 : ELF::SYMENTRY_SIZE32;
@@ -867,6 +865,7 @@ void ELFObjectWriterImpl::CreateMetadataSections(MCAssembler &Asm,
StrtabSD.setAlignment(1);
StringTableIndex = Asm.size();
+ WriteRelocations(Asm, Layout);
// Symbol table
F = new MCDataFragment(&SymtabSD);
diff --git a/test/MC/ELF/basic-elf.ll b/test/MC/ELF/basic-elf.ll
index 1aa43f7884..b9be0678a7 100644
--- a/test/MC/ELF/basic-elf.ll
+++ b/test/MC/ELF/basic-elf.ll
@@ -20,6 +20,24 @@ declare i32 @puts(i8* nocapture) nounwind
; 32: (('sh_name', 0) # ''
; 32: # '.text'
+
+; 32: ('st_bind', 0)
+; 32: ('st_type', 3)
+
+; 32: ('st_bind', 0)
+; 32: ('st_type', 3)
+
+; 32: ('st_bind', 0)
+; 32: ('st_type', 3)
+
+; 32: # 'main'
+; 32: ('st_bind', 1)
+; 32-NEXT: ('st_type', 2)
+
+; 32: # 'puts'
+; 32: ('st_bind', 1)
+; 32-NEXT: ('st_type', 0)
+
; 32: # '.rel.text'
; 32: ('_relocations', [
@@ -41,24 +59,6 @@ declare i32 @puts(i8* nocapture) nounwind
; 32: ),
; 32: ])
-; 32: ('st_bind', 0)
-; 32: ('st_type', 3)
-
-; 32: ('st_bind', 0)
-; 32: ('st_type', 3)
-
-; 32: ('st_bind', 0)
-; 32: ('st_type', 3)
-
-; 32: # 'main'
-; 32: ('st_bind', 1)
-; 32-NEXT: ('st_type', 2)
-
-; 32: # 'puts'
-; 32: ('st_bind', 1)
-; 32-NEXT: ('st_type', 0)
-
-
; 64: ('e_indent[EI_CLASS]', 2)
; 64: ('e_indent[EI_DATA]', 1)
; 64: ('e_indent[EI_VERSION]', 1)
@@ -67,6 +67,24 @@ declare i32 @puts(i8* nocapture) nounwind
; 64: (('sh_name', 0) # ''
; 64: # '.text'
+
+; 64: ('st_bind', 0)
+; 64: ('st_type', 3)
+
+; 64: ('st_bind', 0)
+; 64: ('st_type', 3)
+
+; 64: ('st_bind', 0)
+; 64: ('st_type', 3)
+
+; 64: # 'main'
+; 64-NEXT: ('st_bind', 1)
+; 64-NEXT: ('st_type', 2)
+
+; 64: # 'puts'
+; 64-NEXT: ('st_bind', 1)
+; 64-NEXT: ('st_type', 0)
+
; 64: # '.rela.text'
; 64: ('_relocations', [
@@ -91,20 +109,3 @@ declare i32 @puts(i8* nocapture) nounwind
; 64: ('r_addend', -4)
; 64: ),
; 64: ])
-
-; 64: ('st_bind', 0)
-; 64: ('st_type', 3)
-
-; 64: ('st_bind', 0)
-; 64: ('st_type', 3)
-
-; 64: ('st_bind', 0)
-; 64: ('st_type', 3)
-
-; 64: # 'main'
-; 64-NEXT: ('st_bind', 1)
-; 64-NEXT: ('st_type', 2)
-
-; 64: # 'puts'
-; 64-NEXT: ('st_bind', 1)
-; 64-NEXT: ('st_type', 0)
diff --git a/test/MC/ELF/local-reloc.s b/test/MC/ELF/local-reloc.s
index e5a3d4cce5..30c0f68455 100644
--- a/test/MC/ELF/local-reloc.s
+++ b/test/MC/ELF/local-reloc.s
@@ -10,6 +10,15 @@ foo:
// CHECK: # Section 1
// CHECK-next: (('sh_name', 1) # '.text'
+// Symbol number 2 is section number 1
+// CHECK: # Symbol 2
+// CHECK-NEXT: (('st_name', 0) # ''
+// CHECK-NEXT: ('st_bind', 0)
+// CHECK-NEXT: ('st_type', 3)
+// CHECK-NEXT: ('st_other', 0)
+// CHECK-NEXT: ('st_shndx', 1)
+// CHECK-NEXT: ('st_value', 0)
+// CHECK-NEXT: ('st_size', 0)
// Relocation refers to symbol number 2
// CHECK: ('_relocations', [
@@ -20,13 +29,3 @@ foo:
// CHECK-NEXT: ('r_addend',
// CHECK-NEXT: ),
// CHECK-NEXT: ])
-
-// Symbol number 2 is section number 1
-// CHECK: # Symbol 2
-// CHECK-NEXT: (('st_name', 0) # ''
-// CHECK-NEXT: ('st_bind', 0)
-// CHECK-NEXT: ('st_type', 3)
-// CHECK-NEXT: ('st_other', 0)
-// CHECK-NEXT: ('st_shndx', 1)
-// CHECK-NEXT: ('st_value', 0)
-// CHECK-NEXT: ('st_size', 0)
diff --git a/test/MC/ELF/merge.s b/test/MC/ELF/merge.s
index 82e1d88696..14828d2ec2 100644
--- a/test/MC/ELF/merge.s
+++ b/test/MC/ELF/merge.s
@@ -9,6 +9,11 @@
.text
movsd .Lfoo(%rip), %xmm1
+// Symbol number 1 is .Lfoo
+
+// CHECK: # Symbol 1
+// CHECK-NEXT: (('st_name', 1) # '.Lfoo'
+
// Relocation refers to symbol 1
// CHECK: ('_relocations', [
@@ -19,8 +24,3 @@
// CHECK-NEXT: ('r_addend',
// CHECK-NEXT: ),
// CHECK-NEXT: ])
-
-// Symbol number 1 is .Lfoo
-
-// CHECK: # Symbol 1
-// CHECK-NEXT: (('st_name', 1) # '.Lfoo'