[lld] r246480 - Don't allocate space for SHT_NOBITS sections.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 31 13:23:57 PDT 2015
Author: rafael
Date: Mon Aug 31 15:23:57 2015
New Revision: 246480
URL: http://llvm.org/viewvc/llvm-project?rev=246480&view=rev
Log:
Don't allocate space for SHT_NOBITS sections.
Added:
lld/trunk/test/elf2/bss.s
Modified:
lld/trunk/ELF/Writer.cpp
Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=246480&r1=246479&r2=246480&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Mon Aug 31 15:23:57 2015
@@ -63,6 +63,7 @@ public:
uintX_t getFlags() { return Header.sh_flags; }
uintX_t getFileOff() { return Header.sh_offset; }
uintX_t getAlign() { return Header.sh_addralign; }
+ uint32_t getType() { return Header.sh_type; }
virtual void finalize() {}
virtual void writeTo(uint8_t *Buf) = 0;
@@ -449,7 +450,8 @@ template <class ELFT> void Writer<ELFT>:
VA += RoundUpToAlignment(Size, Align);
}
Sec->setFileOffset(FileOff);
- FileOff += RoundUpToAlignment(Size, Align);
+ if (Sec->getType() != SHT_NOBITS)
+ FileOff += RoundUpToAlignment(Size, Align);
}
// Regular sections.
Added: lld/trunk/test/elf2/bss.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/bss.s?rev=246480&view=auto
==============================================================================
--- lld/trunk/test/elf2/bss.s (added)
+++ lld/trunk/test/elf2/bss.s Mon Aug 31 15:23:57 2015
@@ -0,0 +1,36 @@
+// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
+// RUN: lld -flavor gnu2 %t -o %t2
+// RUN: llvm-readobj -sections %t2 | FileCheck %s
+// REQUIRES: x86
+
+// Test that bss takes no space on disk.
+
+// CHECK: Name: .bss
+// CHECK-NEXT: Type: SHT_NOBITS
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: SHF_ALLOC
+// CHECK-NEXT: SHF_WRITE
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x1000
+// CHECK-NEXT: Offset: 0x1000
+// CHECK-NEXT: Size: 4
+// CHECK-NEXT: Link: 0
+// CHECK-NEXT: Info: 0
+// CHECK-NEXT: AddressAlignment: 4
+// CHECK-NEXT: EntrySize: 0
+// CHECK-NEXT: }
+// CHECK-NEXT: Section {
+// CHECK-NEXT: Index:
+// CHECK-NEXT: Name:
+// CHECK-NEXT: Type:
+// CHECK-NEXT: Flags [
+// CHECK-NEXT: ]
+// CHECK-NEXT: Address:
+// CHECK-NEXT: Offset: 0x1000
+
+
+ .global _start
+_start:
+
+ .bss
+ .zero 4
More information about the llvm-commits
mailing list