[lld] b4d0384 - [ELF][test] Add test for --gc-sections + many sections
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 31 04:43:11 PDT 2020
Author: James Henderson
Date: 2020-03-31T12:41:19+01:00
New Revision: b4d0384a6cd7c0715f39527b8db2bc0e54add893
URL: https://github.com/llvm/llvm-project/commit/b4d0384a6cd7c0715f39527b8db2bc0e54add893
DIFF: https://github.com/llvm/llvm-project/commit/b4d0384a6cd7c0715f39527b8db2bc0e54add893.diff
LOG: [ELF][test] Add test for --gc-sections + many sections
This test covers the case where --gc-sections is used when there are
many sections. In particular, it ensures that there is no adverse
interaction with common and absolute symbols.
Reviewed by: MaskRay, grimar
Differential Revision: https://reviews.llvm.org/D76003
Added:
Modified:
lld/test/ELF/many-alloc-sections.s
Removed:
################################################################################
diff --git a/lld/test/ELF/many-alloc-sections.s b/lld/test/ELF/many-alloc-sections.s
index 3b42dad87a90..233f11475989 100644
--- a/lld/test/ELF/many-alloc-sections.s
+++ b/lld/test/ELF/many-alloc-sections.s
@@ -11,13 +11,64 @@
// CHECK-NEXT: Binding: Global
// CHECK-NEXT: Type: None
// CHECK-NEXT: Other: 0
-// CHECK-NEXT: Section: dm
+// CHECK-NEXT: Section: dn
+
+// Show that --gc-sections works when there are many sections, and that
+// referenced common and absolute symbols in such cases are not removed, nor are
+// they incorrectly attributed to the sections with index 0xFFF1 or 0xFFF2.
+// RUN: ld.lld %t.o -T %t.script -o %t --gc-sections
+// RUN: llvm-readobj --symbols --sections %t | FileCheck %s --check-prefix=GC
+
+// GC: Sections [
+// GC-NEXT: Section {
+// GC-NEXT: Index: 0
+// GC-NEXT: Name: (0)
+// GC: Section {
+// GC-NEXT: Index: 1
+// GC-NEXT: Name: dn
+// GC: Section {
+// GC-NEXT: Index: 2
+// GC-NEXT: Name: .bss
+// GC: Section {
+// GC-NEXT: Index: 3
+// GC-NEXT: Name: .comment
+// GC: Section {
+// GC-NEXT: Index: 4
+// GC-NEXT: Name: .symtab
+// GC: Section {
+// GC-NEXT: Index: 5
+// GC-NEXT: Name: .shstrtab
+// GC: Section {
+// GC-NEXT: Index: 6
+// GC-NEXT: Name: .strtab
+// GC-NOT: Section {
+
+// GC: Symbols [
+// GC-NEXT: Symbol {
+// GC-NEXT: Name: (0)
+// GC: Symbol {
+// GC-NEXT: Name: sdn
+// GC: Symbol {
+// GC-NEXT: Name: _start
+// GC: Symbol {
+// GC-NEXT: Name: abs
+// GC: Symbol {
+// GC-NEXT: Name: common
+// GC-NOT: Symbol {
.macro gen_sections4 x
.section a\x,"a"
+ .global sa\x
+ sa\x:
.section b\x,"a"
+ .global sa\x
+ sb\x:
.section c\x,"a"
+ .global sa\x
+ sc\x:
.section d\x,"a"
+ .global sa\x
+ sd\x:
.endm
.macro gen_sections8 x
@@ -85,9 +136,6 @@
gen_sections16384 b\x
.endm
- .bss
- .section bar
-
gen_sections32768 a
gen_sections16384 b
gen_sections8192 c
@@ -95,12 +143,20 @@ gen_sections4096 d
gen_sections2048 e
gen_sections1024 f
gen_sections512 g
-gen_sections128 h
-gen_sections64 i
-gen_sections32 j
-gen_sections16 k
-gen_sections8 l
-gen_sections4 m
+gen_sections256 h
+gen_sections128 i
+gen_sections64 j
+gen_sections32 k
+gen_sections16 l
+gen_sections8 m
+gen_sections4 n
+
+.global abs
+abs = 0x12345678
+
+.comm common,4,4
.global _start
_start:
+ .quad abs
+ .quad common
More information about the llvm-commits
mailing list