Write relocations in the end of the file. This matches what gas does and
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 27 Sep 2010 22:04:54 +0000 (22:04 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 27 Sep 2010 22:04:54 +0000 (22:04 +0000)
makes files easier to diff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114898 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/ELFObjectWriter.cpp
test/MC/ELF/basic-elf.ll
test/MC/ELF/local-reloc.s
test/MC/ELF/merge.s

index 58fad80ba897c5b5e8eb5b6bdcc62d5112235be9..120789b6fd0c26c85149195977f957a8566d9f22 100644 (file)
@@ -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);
index 1aa43f7884a002c7c46b50a89d58146bb14c438d..b9be0678a71bb07f69d4d2d73ca3425bf36cb07b 100644 (file)
@@ -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)
index e5a3d4cce505c4e0ecd12e10b6afed2d0dc8fa2c..30c0f68455d66e229949d1a1c5ae19607c842e43 100644 (file)
@@ -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)
index 82e1d88696bdcfcc21963f2e392bc20d59bfa9e0..14828d2ec2ac0d860ba0958c0377275bd143c504 100644 (file)
@@ -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'