[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