brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 0f3ab80 Raw
101 lines · plain
1## This test checks the functionality of options --skip-symbol and --skip-symbols.2# RUN: yaml2obj %s -o %t.o3# RUN: echo 'foo[2-3]' > %t.skip.regex4 5## Check --skip-symbol functionality when changing symbol bindings.6# RUN: llvm-objcopy %t.o %t2.o --localize-hidden --skip-symbol=foo37# RUN: llvm-readelf -s %t2.o | FileCheck %s --check-prefix=LH-SYM8# LH-SYM-DAG: LOCAL  HIDDEN      1 foo19# LH-SYM-DAG: LOCAL  HIDDEN      1 foo210# LH-SYM-DAG: GLOBAL HIDDEN      1 foo311# LH-SYM-DAG: LOCAL  HIDDEN      1 foo412# LH-SYM-DAG: LOCAL  HIDDEN      1 foo513 14## Check --skip-symbols functionality when changing symbol bindings.15# RUN: llvm-objcopy %t.o %t1.o --localize-hidden --skip-symbols=%t.skip.regex --regex16# RUN: llvm-readelf -s %t1.o | FileCheck %s --check-prefix=LH-SYMS17# LH-SYMS-DAG: LOCAL  HIDDEN      1 foo118# LH-SYMS-DAG: GLOBAL HIDDEN      1 foo219# LH-SYMS-DAG: GLOBAL HIDDEN      1 foo320# LH-SYMS-DAG: LOCAL  HIDDEN      1 foo421# LH-SYMS-DAG: LOCAL  HIDDEN      1 foo522 23## Check --skip-symbol functionality when changing symbol names.24# RUN: echo -e "foo1 bar1\nfoo2 bar2" > %t.renames.list25# RUN: llvm-objcopy %t.o %t4.o --redefine-syms=%t.renames.list \26# RUN:   --skip-symbol='fo*' --wildcard27# RUN: llvm-readelf -s %t4.o | FileCheck %s --check-prefix=RS-SYM28# RS-SYM-DAG: foo129# RS-SYM-DAG: foo230# RS-SYM-DAG: foo331# RS-SYM-DAG: foo432# RS-SYM-DAG: foo533 34## Check --skip-symbols functionality when changing symbol names.35# RUN: llvm-objcopy %t.o %t3.o --redefine-syms=%t.renames.list \36# RUN:   --skip-symbols=%t.skip.regex --regex37# RUN: llvm-readelf -s %t3.o | FileCheck %s --check-prefix=RS-SYMS38# RS-SYMS-DAG: bar139# RS-SYMS-DAG: foo240# RS-SYMS-DAG: foo341# RS-SYMS-DAG: foo442# RS-SYMS-DAG: foo543 44## Check the functionality when using skip options multiple times.45# RUN: echo "foo3" > %t.symbol0.list46# RUN: echo "foo4" > %t.symbol1.list47# RUN: llvm-objcopy %t.o %t5.o --set-symbol-visibility='foo*'=internal --wildcard \48# RUN:   --skip-symbol=foo1 --skip-symbol=foo2 \49# RUN:   --skip-symbols=%t.symbol0.list --skip-symbols=%t.symbol1.list50# RUN: llvm-readelf -s %t5.o | FileCheck %s --check-prefix=BOTH51# BOTH-DAG: GLOBAL HIDDEN      1 foo152# BOTH-DAG: GLOBAL HIDDEN      1 foo253# BOTH-DAG: GLOBAL HIDDEN      1 foo354# BOTH-DAG: GLOBAL HIDDEN      1 foo455## Only foo5 is not skipped.56# BOTH-DAG: GLOBAL INTERNAL    1 foo557 58## Check that using an invalid symbol name regex generates an error.59# RUN: echo '*.' > %t.symbols.regex60# RUN: not llvm-objcopy %t.o --skip-symbols=%t.symbols.regex --regex 2>&1 | \61# RUN:   FileCheck %s --check-prefix=SYMBOL62# RUN: not llvm-objcopy %t.o --skip-symbol='*.' --regex 2>&1 | \63# RUN:   FileCheck %s --check-prefix=SYMBOL64# SYMBOL: error: cannot compile regular expression '*.': repetition-operator operand invalid65 66## Check passing an invalid filename generates an error.67# RUN: not llvm-objcopy %t.o --skip-symbols=no_file 2>&1 | \68# RUN:   FileCheck %s --check-prefix=FILE -DMSG=%errc_ENOENT69# FILE: error: 'no_file': [[MSG]]70 71!ELF72FileHeader:73  Class:   ELFCLASS6474  Data:    ELFDATA2LSB75  Type:    ET_REL76  Machine: EM_X86_6477Sections:78  - Name: .text79    Type: SHT_PROGBITS80Symbols:81  - Name:    foo182    Section: .text83    Binding: STB_GLOBAL84    Other:   [ STV_HIDDEN ]85  - Name:    foo286    Section: .text87    Binding: STB_GLOBAL88    Other:   [ STV_HIDDEN ]89  - Name:    foo390    Section: .text91    Binding: STB_GLOBAL92    Other:   [ STV_HIDDEN ]93  - Name:    foo494    Section: .text95    Binding: STB_GLOBAL96    Other:   [ STV_HIDDEN ]97  - Name:    foo598    Section: .text99    Binding: STB_GLOBAL100    Other:   [ STV_HIDDEN ]101