Write relocations in the end of the file. This matches what gas does and

makes files easier to diff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114898 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2010-09-27 22:04:54 +00:00
parent 5acb3de8b7
commit c3c413f631
4 changed files with 51 additions and 52 deletions

View 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);

View 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)

View 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)

View 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'