]> granicus.if.org Git - llvm/commitdiff
[gold] Enable data-sections by default for the gold-plugin.
authorDavide Italiano <davide@freebsd.org>
Wed, 26 Jul 2017 01:47:17 +0000 (01:47 +0000)
committerDavide Italiano <davide@freebsd.org>
Wed, 26 Jul 2017 01:47:17 +0000 (01:47 +0000)
Follow up to r309056.

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

test/tools/gold/X86/Inputs/multiple-data.ll [new file with mode: 0644]
test/tools/gold/X86/multiple-data.s [new file with mode: 0644]
tools/gold/gold-plugin.cpp

diff --git a/test/tools/gold/X86/Inputs/multiple-data.ll b/test/tools/gold/X86/Inputs/multiple-data.ll
new file mode 100644 (file)
index 0000000..57a048d
--- /dev/null
@@ -0,0 +1,6 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+@pat = global i32 33, align 4
+@tin = global i32 33, align 4
+@dipsy = global i32 33, align 4
diff --git a/test/tools/gold/X86/multiple-data.s b/test/tools/gold/X86/multiple-data.s
new file mode 100644 (file)
index 0000000..991554b
--- /dev/null
@@ -0,0 +1,28 @@
+# RUN: echo ".data.tin" > %t_order_lto.txt
+# RUN: echo ".data.dipsy" >> %t_order_lto.txt
+# RUN: echo ".data.pat" >> %t_order_lto.txt
+
+# RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-unknown-linux-gnu
+# RUN: llvm-as %p/Inputs/multiple-data.ll -o %t2.o
+# RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \
+# RUN:     -m elf_x86_64 -o %t.exe %t2.o %t.o  \
+# RUN:     --section-ordering-file=%t_order_lto.txt
+# RUN: llvm-readobj -elf-output-style=GNU -t %t.exe | FileCheck %s
+
+# CHECK: Symbol table '.symtab' contains 9 entries:
+# CHECK-NEXT:    Num:    Value          Size Type    Bind   Vis      Ndx Name
+# CHECK-NEXT:      0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
+# CHECK-NEXT:      1: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS ld-temp.o
+# CHECK-NEXT:      2: 0000000000401104     0 NOTYPE  GLOBAL DEFAULT  ABS _end
+# CHECK-NEXT:      3: 0000000000401104     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
+# CHECK-NEXT:      4: 0000000000401104     0 NOTYPE  GLOBAL DEFAULT  ABS _edata
+# CHECK-NEXT:      5: 00000000004000e8     0 NOTYPE  GLOBAL DEFAULT    1 _start
+# CHECK-NEXT:      6: 00000000004010fc     4 OBJECT  GLOBAL DEFAULT    2 dipsy
+# CHECK-NEXT:      7: 00000000004010f8     4 OBJECT  GLOBAL DEFAULT    2 tin
+# CHECK-NEXT:      8: 0000000000401100     4 OBJECT  GLOBAL DEFAULT    2 pat
+
+.globl _start
+_start:
+  movl $pat, %ecx
+  movl $dipsy, %ebx
+  movl $tin, %eax
index ac99a08d81da4056c97fefc9107c1b4fac577d20..825fff1aa38b7d6d06ce34fadc3dac3f963eb483 100644 (file)
@@ -750,8 +750,9 @@ static std::unique_ptr<LTO> createLTO() {
   // FIXME: Check the gold version or add a new option to enable them.
   Conf.Options.RelaxELFRelocations = false;
 
-  // Enable function sections by default.
+  // Enable function/data sections by default.
   Conf.Options.FunctionSections = true;
+  Conf.Options.DataSections = true;
 
   Conf.MAttrs = MAttrs;
   Conf.RelocModel = RelocationModel;