Create sections with just assignments as STT_NOBITS.
authorRafael Espindola <rafael.espindola@gmail.com>
Sat, 26 Nov 2016 06:55:35 +0000 (06:55 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Sat, 26 Nov 2016 06:55:35 +0000 (06:55 +0000)
This matches the behaviour of bfd ld. Using 0 was causing problems
with strip, which would remove these sections.

llvm-svn: 287969

lld/ELF/LinkerScript.cpp
lld/test/ELF/linkerscript/symbol-only.s

index 51efa2e..5618abd 100644 (file)
@@ -566,7 +566,7 @@ template <class ELFT> void LinkerScript<ELFT>::adjustSectionsBeforeSorting() {
   // '.' is assigned to, but creating these section should not have any bad
   // consequeces and gives us a section to put the symbol in.
   uintX_t Flags = SHF_ALLOC;
-  uint32_t Type = 0;
+  uint32_t Type = SHT_NOBITS;
   for (const std::unique_ptr<BaseCommand> &Base : Opt.Commands) {
     auto *Cmd = dyn_cast<OutputSectionCommand>(Base.get());
     if (!Cmd)
index 67da70c..76d54f0 100644 (file)
@@ -12,8 +12,8 @@
 # CHECK:      Sections:
 # CHECK-NEXT: Idx Name          Size      Address
 # CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 abc           00000000 [[ADDR:[0-9a-f]*]]
-# CHECK-NEXT:   2 bar           00000000 0000000000001000 DATA
+# CHECK:          abc           00000000 [[ADDR:[0-9a-f]*]] BSS
+# CHECK-NEXT:     bar           00000000 0000000000001000 DATA
 
 # CHECK: SYMBOL TABLE:
 # CHECK:     [[ADDR]]         abc                00000000 foo