brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · bfeaaf5 Raw
124 lines · plain
1# RUN: yaml2obj %s -o %t.o2 3# Tests that only global symbols (via -G/--keep-global-symbols) are kept via4# the several different variants of -G/--keep-global-symbol(s).5#6# Local1: Local because "-G Local1" doesn't make symbols global.7# Local2: Global because of "--globalize-symbol Local2".8# Weak1: Weak because "-G Weak1" doesn't make symbols global.9# Weak2: Global because of "--globalize-symbol Weak2".10# Weak3: Local because no -G flag covers it.11# Global1: Global because of "-G Global1".12# Global2: Global because of "--keep-global-symbol Global2".13# Global3: Global because of "--keep-global-symbols %t-globals1.txt".14# Global4: Global because of "--keep-global-symbols %t-globals2.txt".15# Global5: Local, it appears in %t-globals2.txt but only in comments and as16#     part of another symbol17# Global6: Local, it appears in %t-globals2.txt but only part of another symbol18# "Global5 Global6": Global, because it appears in %t-globals2.txt, but we only19#     trim leading and trailing whitespace. We don't just take the first chunk20#     that looks like a symbol.21# Global7: Global, because even though it doesn't appear as any -G flags, does22#     not get demoted since it's undefined.23 24# RUN: echo Global2 > %t-globals1.txt25# RUN: echo "  Global3  " > %t-globals2.txt26# RUN: echo "Global4 # Global5" >> %t-globals2.txt27# RUN: echo "  Global5 Global6  " >> %t-globals2.txt28# RUN: echo "Unknown" >> %t-globals2.txt29# RUN: echo "   " >> %t-globals2.txt30# RUN: echo "# File with no symbols" > %t-globals3.txt31# RUN: echo "^Global[0-9]+([[:space:]]Global6)*$" > %t-globals-regexp.txt32 33# RUN: llvm-objcopy \34# RUN:   -G Global1 \35# RUN:   --keep-global-symbol Global2 \36# RUN:   --keep-global-symbols %t-globals1.txt \37# RUN:   --keep-global-symbols %t-globals2.txt \38# RUN:   -G Local1 \39# RUN:   --globalize-symbol Local2 \40# RUN:   -G Weak1 \41# RUN:   --globalize-symbol Weak2 \42# RUN:   %t.o %t.2.o43# RUN: llvm-readelf --symbols %t.2.o | FileCheck %s44 45# RUN: llvm-objcopy  --regex --keep-global-symbols %t-globals-regexp.txt %t.o %t.3.o46# RUN: llvm-readelf --symbols %t.3.o | FileCheck %s --check-prefix=REGEXP47 48# RUN: llvm-objcopy --regex --keep-global-symbol='^Global[0-9]+([[:space:]]Global6)*$' %t.o %t.4.o49# RUN: cmp %t.3.o %t.4.o50 51!ELF52FileHeader:53  Class:           ELFCLASS6454  Data:            ELFDATA2LSB55  Type:            ET_REL56  Machine:         EM_X86_6457Sections:58  - Name:          .text59    Type:          SHT_PROGBITS60    Flags:         [ SHF_ALLOC, SHF_EXECINSTR ]61Symbols:62  - Name:        Local163    Section:     .text64  - Name:        Local265    Section:     .text66  - Name:        Global167    Section:     .text68    Binding:     STB_GLOBAL69  - Name:        Global270    Section:     .text71    Binding:     STB_GLOBAL72  - Name:        Global373    Section:     .text74    Binding:     STB_GLOBAL75  - Name:        Global476    Section:     .text77    Binding:     STB_GLOBAL78  - Name:        Global579    Section:     .text80    Binding:     STB_GLOBAL81  - Name:        Global682    Section:     .text83    Binding:     STB_GLOBAL84  - Name:        "Global5 Global6"85    Section:     .text86    Binding:     STB_GLOBAL87  - Name:        Global788    Binding:     STB_GLOBAL89  - Name:        Weak190    Section:     .text91    Binding:     STB_WEAK92  - Name:        Weak293    Section:     .text94    Binding:     STB_WEAK95  - Name:        Weak396    Section:     .text97    Binding:     STB_WEAK98 99# CHECK:      Symbol table '.symtab' contains 14 entries:100# CHECK-NEXT:    Num: Value Size Type Bind Vis Ndx Name101# CHECK-NEXT:      0: {{.*}}  LOCAL  {{.*}}102# CHECK-NEXT:      1: {{.*}}  LOCAL  {{.*}} Local1103# CHECK-NEXT:      2: {{.*}}  LOCAL  {{.*}} Global5104# CHECK-NEXT:      3: {{.*}}  LOCAL  {{.*}} Global6105# CHECK-NEXT:      4: {{.*}}  LOCAL  {{.*}} Weak3106# CHECK-NEXT:      5: {{.*}}  GLOBAL {{.*}} Local2107# CHECK-NEXT:      6: {{.*}}  GLOBAL {{.*}} Global1108# CHECK-NEXT:      7: {{.*}}  GLOBAL {{.*}} Global2109# CHECK-NEXT:      8: {{.*}}  GLOBAL {{.*}} Global3110# CHECK-NEXT:      9: {{.*}}  GLOBAL {{.*}} Global4111# CHECK-NEXT:     10: {{.*}}  GLOBAL {{.*}} Global5 Global6112# CHECK-NEXT:     11: {{.*}}  GLOBAL {{.*}} UND Global7113# CHECK-NEXT:     12: {{.*}}  WEAK   {{.*}} Weak1114# CHECK-NEXT:     13: {{.*}}  GLOBAL {{.*}} Weak2115 116# REGEXP:           6: {{.*}}  GLOBAL {{.*}} Global1117# REGEXP-NEXT:      7: {{.*}}  GLOBAL {{.*}} Global2118# REGEXP-NEXT:      8: {{.*}}  GLOBAL {{.*}} Global3119# REGEXP-NEXT:      9: {{.*}}  GLOBAL {{.*}} Global4120# REGEXP-NEXT:     10: {{.*}}  GLOBAL {{.*}} Global5121# REGEXP-NEXT:     11: {{.*}}  GLOBAL {{.*}} Global6122# REGEXP-NEXT:     12: {{.*}}  GLOBAL {{.*}} Global5 Global6123# REGEXP-NEXT:     13: {{.*}}  GLOBAL {{.*}} UND Global7124