From e25c41803f78b13ac09bbeaa7a1b06f75f5efba0 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Thu, 7 Apr 2022 14:24:15 -0700 Subject: [PATCH] [ELF][test] Improve discard-locals.s --- lld/test/ELF/discard-locals.s | 90 +++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 47 deletions(-) diff --git a/lld/test/ELF/discard-locals.s b/lld/test/ELF/discard-locals.s index bee47fa..88c9825 100644 --- a/lld/test/ELF/discard-locals.s +++ b/lld/test/ELF/discard-locals.s @@ -1,50 +1,46 @@ -// REQUIRES: x86 -// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux -save-temp-labels %s -o %t -// RUN: ld.lld -discard-locals %t -o %t2 -// RUN: llvm-readobj -S --section-data --symbols %t2 | FileCheck %s +# REQUIRES: x86 +# RUN: llvm-mc -filetype=obj -triple=x86_64 -save-temp-labels %s -o %t.o -.global _start +# RUN: ld.lld --discard-locals %t.o -o %tlocal +# RUN: llvm-readelf -s %tlocal | FileCheck --check-prefixes=DISCARD-LOCALS,DISCARD-LOCALS-NOGC %s + +## --gc-sections can discard symbols relative to GCed sections (including STT_SECTION). +# RUN: ld.lld --discard-locals --gc-sections %t.o -o %tlocal.gc +# RUN: llvm-readelf -s %tlocal.gc | FileCheck --check-prefixes=DISCARD-LOCALS,DISCARD-LOCALS-GC %s + +# RUN: ld.lld --discard-all %t.o -o %tall +# RUN: llvm-readelf -s %tall | FileCheck --check-prefix=DISCARD-ALL %s + +# RUN: ld.lld --discard-all --gc-sections %t.o -o %tall.gc +# RUN: llvm-readelf -s %tall.gc | FileCheck --check-prefixes=DISCARD-ALL,DISCARD-ALL-GC %s + +## --discard-locals removes local symbols which start with ".L" +# DISCARD-LOCALS: 0: {{0+}} 0 NOTYPE LOCAL DEFAULT UND +# DISCARD-LOCALS-GC-NEXT: NOTYPE LOCAL DEFAULT [[#]] .Lused +# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT [[#]] used +# DISCARD-LOCALS-NEXT: NOTYPE LOCAL DEFAULT [[#]] unused +# DISCARD-LOCALS-NOGC-NEXT: NOTYPE LOCAL DEFAULT [[#]] unused_gc +# DISCARD-LOCALS-NEXT: NOTYPE GLOBAL DEFAULT [[#]] _start + +## --discard-all removes all regular local symbols. +# DISCARD-ALL: 0: {{0+}} 0 NOTYPE LOCAL DEFAULT UND +# DISCARD-ALL-GC-NEXT: NOTYPE LOCAL DEFAULT [[#]] .Lused +# DISCARD-ALL-GC-NEXT: NOTYPE LOCAL DEFAULT [[#]] used +# DISCARD-ALL-NEXT: NOTYPE GLOBAL DEFAULT [[#]] _start + +.globl _start _start: + call text@plt + jmp .Lused@plt + call used@plt + +.section text,"ax" +.Lunused: +.Lused: +unused: +used: -.text -.Lmyvar: -.Lmyothervar: - -// CHECK: Section { -// CHECK: Name: .strtab -// CHECK-NEXT: Type: SHT_STRTAB -// CHECK-NEXT: Flags [ -// CHECK-NEXT: ] -// CHECK-NEXT: Address: -// CHECK-NEXT: Offset: -// CHECK-NEXT: Size: -// CHECK-NEXT: Link: -// CHECK-NEXT: Info: -// CHECK-NEXT: AddressAlignment: -// CHECK-NEXT: EntrySize: -// CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 005F7374 61727400 |._start.| -// CHECK-NEXT: ) -// CHECK-NEXT: } -// CHECK-NEXT: ] - -// CHECK: Symbols [ -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: -// CHECK-NEXT: Value: 0x0 -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Local -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: Undefined -// CHECK-NEXT: } -// CHECK-NEXT: Symbol { -// CHECK-NEXT: Name: _start -// CHECK-NEXT: Value: -// CHECK-NEXT: Size: 0 -// CHECK-NEXT: Binding: Global -// CHECK-NEXT: Type: None -// CHECK-NEXT: Other: 0 -// CHECK-NEXT: Section: .text -// CHECK-NEXT: } -// CHECk-NEXT: ] +.section gc,"ax" +.Lunused_gc: +unused_gc: + ret -- 2.7.4