forked from OSchip/llvm-project
[ELF] - Allow LLD to produce file symbols.
This is for PR36716 and this enables emitting STT_FILE symbols. Output size affect is minor: lld binary size changes from 52,883,408 to 52,949,400 clang binary size changes from 83,136,456 to 83,219,600 Differential revision: https://reviews.llvm.org/D45261 llvm-svn: 329557
This commit is contained in:
parent
6131286553
commit
7bf92be676
|
@ -494,7 +494,7 @@ template <class ELFT> void Writer<ELFT>::run() {
|
|||
|
||||
static bool shouldKeepInSymtab(SectionBase *Sec, StringRef SymName,
|
||||
const Symbol &B) {
|
||||
if (B.isFile() || B.isSection())
|
||||
if (B.isSection())
|
||||
return false;
|
||||
|
||||
// If sym references a section in a discarded group, don't keep it.
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
# Check that we do not keep STT_FILE symbols in the symbol table
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
|
||||
# RUN: ld.lld %t.o -shared -o %t.so
|
||||
# RUN: llvm-readobj -symbols %t.so | FileCheck %s
|
||||
|
||||
# REQUIRES: x86
|
||||
|
||||
# CHECK-NOT: Name: xxx
|
||||
|
||||
.file "xxx"
|
||||
.file ""
|
|
@ -0,0 +1,27 @@
|
|||
# REQUIRES: x86
|
||||
|
||||
# RUN: echo '.file "file2"; foo2:; .global bar2; .hidden bar2; bar2:' > %t2.s
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %t2.s -o %t2.o
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1.o
|
||||
|
||||
# RUN: ld.lld -o %t %t1.o %t2.o
|
||||
# RUN: llvm-readobj -symbols -elf-output-style=GNU %t | FileCheck %s
|
||||
|
||||
## Show the order of the local symbols produced currently by LLD.
|
||||
|
||||
# CHECK: 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 file1
|
||||
# CHECK-NEXT: 2: 0000000000201000 0 NOTYPE LOCAL DEFAULT 1 foo1
|
||||
# CHECK-NEXT: 3: 0000000000000000 0 FILE LOCAL DEFAULT ABS file2
|
||||
# CHECK-NEXT: 4: 0000000000201000 0 NOTYPE LOCAL DEFAULT 1 foo2
|
||||
# CHECK-NEXT: 5: 0000000000201000 0 NOTYPE LOCAL HIDDEN 1 bar1
|
||||
# CHECK-NEXT: 6: 0000000000201000 0 NOTYPE LOCAL HIDDEN 1 bar2
|
||||
|
||||
foo1:
|
||||
|
||||
.global bar1
|
||||
.hidden bar1
|
||||
bar1:
|
||||
|
||||
.file "file1"
|
|
@ -12,13 +12,14 @@
|
|||
|
||||
# Check that the order is tin -> dipsy -> pat.
|
||||
|
||||
# CHECK: Symbol table '.symtab' contains 5 entries:
|
||||
# CHECK: Symbol table '.symtab' contains 6 entries:
|
||||
# CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
# CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
# CHECK-NEXT: 1: 0000000000201000 0 NOTYPE GLOBAL DEFAULT 1 _start
|
||||
# CHECK-NEXT: 2: 0000000000202004 4 OBJECT GLOBAL DEFAULT 2 dipsy
|
||||
# CHECK-NEXT: 3: 0000000000202008 4 OBJECT GLOBAL DEFAULT 2 pat
|
||||
# CHECK-NEXT: 4: 0000000000202000 4 OBJECT GLOBAL DEFAULT 2 tin
|
||||
# CHECK-NEXT: 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS {{.*}}.o
|
||||
# CHECK-NEXT: 2: 0000000000201000 0 NOTYPE GLOBAL DEFAULT 1 _start
|
||||
# CHECK-NEXT: 3: 0000000000202004 4 OBJECT GLOBAL DEFAULT 2 dipsy
|
||||
# CHECK-NEXT: 4: 0000000000202008 4 OBJECT GLOBAL DEFAULT 2 pat
|
||||
# CHECK-NEXT: 5: 0000000000202000 4 OBJECT GLOBAL DEFAULT 2 tin
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
|
|
@ -18,6 +18,24 @@
|
|||
; CHECK-NEXT: Section: Undefined (0x0)
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: Symbol {
|
||||
; CHECK-NEXT: Name: {{.*}}.o
|
||||
; CHECK-NEXT: Value: 0x0
|
||||
; CHECK-NEXT: Size: 0
|
||||
; CHECK-NEXT: Binding: Local
|
||||
; CHECK-NEXT: Type: File
|
||||
; CHECK-NEXT: Other: 0
|
||||
; CHECK-NEXT: Section: Absolute
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: Symbol {
|
||||
; CHECK-NEXT: Name: {{.*}}.o
|
||||
; CHECK-NEXT: Value: 0x0
|
||||
; CHECK-NEXT: Size: 0
|
||||
; CHECK-NEXT: Binding: Local
|
||||
; CHECK-NEXT: Type: File
|
||||
; CHECK-NEXT: Other: 0
|
||||
; CHECK-NEXT: Section: Absolute
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: Symbol {
|
||||
; CHECK-NEXT: Name: bar
|
||||
; CHECK-NEXT: Value: 0x201010
|
||||
; CHECK-NEXT: Size: 8
|
||||
|
|
|
@ -14,6 +14,15 @@
|
|||
; CHECK-NEXT: Section: Undefined
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: Symbol {
|
||||
; CHECK-NEXT: Name: {{.*}}.o
|
||||
; CHECK-NEXT: Value: 0x0
|
||||
; CHECK-NEXT: Size: 0
|
||||
; CHECK-NEXT: Binding: Local
|
||||
; CHECK-NEXT: Type: File
|
||||
; CHECK-NEXT: Other: 0
|
||||
; CHECK-NEXT: Section: Absolute
|
||||
; CHECK-NEXT: }
|
||||
; CHECK-NEXT: Symbol {
|
||||
; CHECK-NEXT: Name:
|
||||
; CHECK-NEXT: Value: 0x0
|
||||
; CHECK-NEXT: Size: 0
|
||||
|
|
|
@ -12,12 +12,13 @@
|
|||
|
||||
# Check that the order is tin -> _start -> pat.
|
||||
|
||||
# CHECK: Symbol table '.symtab' contains 4 entries:
|
||||
# CHECK: Symbol table '.symtab' contains 5 entries:
|
||||
# CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name
|
||||
# CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
# CHECK-NEXT: 1: 0000000000201008 0 NOTYPE GLOBAL DEFAULT 1 _start
|
||||
# CHECK-NEXT: 2: 0000000000201020 6 FUNC GLOBAL DEFAULT 1 pat
|
||||
# CHECK-NEXT: 3: 0000000000201000 6 FUNC GLOBAL DEFAULT 1 tin
|
||||
# CHECK-NEXT: 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS {{.*}}.o
|
||||
# CHECK-NEXT: 2: 0000000000201008 0 NOTYPE GLOBAL DEFAULT 1 _start
|
||||
# CHECK-NEXT: 3: 0000000000201020 6 FUNC GLOBAL DEFAULT 1 pat
|
||||
# CHECK-NEXT: 4: 0000000000201000 6 FUNC GLOBAL DEFAULT 1 tin
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
|
|
Loading…
Reference in New Issue