brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.2 KiB · de30ee0 Raw
312 lines · plain
1# RUN: yaml2obj --docnum=1 %s -o %t.o2# RUN: echo '.*' > %t.symbols.regex3 4## Check that the visibility of all symbols is properly set to DEFAULT.5# RUN: llvm-objcopy %t.o %t0.o --set-symbols-visibility=%t.symbols.regex=default --regex6# RUN: llvm-readelf -s %t0.o | FileCheck %s --check-prefix=DEF7 8# DEF-DAG: DEFAULT     1 default_local9# DEF-DAG: DEFAULT     1 internal_local10# DEF-DAG: DEFAULT     1 hidden_local11# DEF-DAG: DEFAULT     1 protected_local12# DEF-DAG: DEFAULT     1 default_global13# DEF-DAG: DEFAULT     1 default_weak14# DEF-DAG: DEFAULT     1 internal_global15# DEF-DAG: DEFAULT     1 internal_weak16# DEF-DAG: DEFAULT     1 hidden_global17# DEF-DAG: DEFAULT     1 hidden_weak18# DEF-DAG: DEFAULT     1 protected_global19# DEF-DAG: DEFAULT     1 protected_weak20 21## Check that the visibility of all symbols is properly set to HIDDEN.22# RUN: llvm-objcopy %t.o %t1.o --set-symbols-visibility=%t.symbols.regex=hidden --regex23# RUN: llvm-readelf -s %t1.o | FileCheck %s --check-prefix=HID24 25# HID-DAG: HIDDEN      1 default_local26# HID-DAG: HIDDEN      1 internal_local27# HID-DAG: HIDDEN      1 hidden_local28# HID-DAG: HIDDEN      1 protected_local29# HID-DAG: HIDDEN      1 default_global30# HID-DAG: HIDDEN      1 default_weak31# HID-DAG: HIDDEN      1 internal_global32# HID-DAG: HIDDEN      1 internal_weak33# HID-DAG: HIDDEN      1 hidden_global34# HID-DAG: HIDDEN      1 hidden_weak35# HID-DAG: HIDDEN      1 protected_global36# HID-DAG: HIDDEN      1 protected_weak37 38## Check that the visibility of all symbols is properly set to PROTECTED.39# RUN: llvm-objcopy %t.o %t2.o --set-symbols-visibility=%t.symbols.regex=protected --regex40# RUN: llvm-readelf -s %t2.o | FileCheck %s --check-prefix=PRO41 42# PRO-DAG: PROTECTED   1 default_local43# PRO-DAG: PROTECTED   1 internal_local44# PRO-DAG: PROTECTED   1 hidden_local45# PRO-DAG: PROTECTED   1 protected_local46# PRO-DAG: PROTECTED   1 default_global47# PRO-DAG: PROTECTED   1 default_weak48# PRO-DAG: PROTECTED   1 internal_global49# PRO-DAG: PROTECTED   1 internal_weak50# PRO-DAG: PROTECTED   1 hidden_global51# PRO-DAG: PROTECTED   1 hidden_weak52# PRO-DAG: PROTECTED   1 protected_global53# PRO-DAG: PROTECTED   1 protected_weak54 55## Check that the visibility of all symbols is properly set to INTERNAL.56# RUN: llvm-objcopy %t.o %t3.o --set-symbols-visibility=%t.symbols.regex=internal --regex57# RUN: llvm-readelf -s %t3.o | FileCheck %s --check-prefix=INT58 59# INT-DAG: INTERNAL    1 default_local60# INT-DAG: INTERNAL    1 internal_local61# INT-DAG: INTERNAL    1 hidden_local62# INT-DAG: INTERNAL    1 protected_local63# INT-DAG: INTERNAL    1 default_global64# INT-DAG: INTERNAL    1 default_weak65# INT-DAG: INTERNAL    1 internal_global66# INT-DAG: INTERNAL    1 internal_weak67# INT-DAG: INTERNAL    1 hidden_global68# INT-DAG: INTERNAL    1 hidden_weak69# INT-DAG: INTERNAL    1 protected_global70# INT-DAG: INTERNAL    1 protected_weak71 72## Check that setting the visibility of certain symbols that were read from73## a file does not affect other symbols.74# RUN: echo -e "default_local\ninternal_local" > %t.symbol.list75# RUN: llvm-objcopy %t.o %t4.o --set-symbols-visibility=%t.symbol.list=hidden76# RUN: llvm-readelf -s %t4.o | FileCheck %s --check-prefix=FILE77 78# FILE-DAG: HIDDEN      1 default_local79# FILE-DAG: HIDDEN      1 internal_local80## Unaffected symbols:81# FILE-DAG: HIDDEN      1 hidden_local82# FILE-DAG: PROTECTED   1 protected_local83# FILE-DAG: DEFAULT     1 default_global84# FILE-DAG: DEFAULT     1 default_weak85# FILE-DAG: INTERNAL    1 internal_global86# FILE-DAG: INTERNAL    1 internal_weak87# FILE-DAG: HIDDEN      1 hidden_global88# FILE-DAG: HIDDEN      1 hidden_weak89# FILE-DAG: PROTECTED   1 protected_global90# FILE-DAG: PROTECTED   1 protected_weak91 92## Check that the visibility of a single symbol is set correctly,93## and that no other symbols are affected.94# RUN: llvm-objcopy %t.o %t5.o --set-symbol-visibility=default_local=hidden \95# RUN:                         --set-symbol-visibility=internal_local=protected \96# RUN:                         --set-symbol-visibility=hidden_local=internal \97# RUN:                         --set-symbol-visibility=protected_local=default98# RUN: llvm-readelf -s %t5.o | FileCheck %s --check-prefix=SINGLE99 100# SINGLE-DAG: HIDDEN      1 default_local101# SINGLE-DAG: PROTECTED   1 internal_local102# SINGLE-DAG: INTERNAL    1 hidden_local103# SINGLE-DAG: DEFAULT     1 protected_local104## Unaffected symbols:105# SINGLE-DAG: DEFAULT     1 default_global106# SINGLE-DAG: DEFAULT     1 default_weak107# SINGLE-DAG: INTERNAL    1 internal_global108# SINGLE-DAG: INTERNAL    1 internal_weak109# SINGLE-DAG: HIDDEN      1 hidden_global110# SINGLE-DAG: HIDDEN      1 hidden_weak111# SINGLE-DAG: PROTECTED   1 protected_global112# SINGLE-DAG: PROTECTED   1 protected_weak113 114## Check that the visibility of symbols specified by a regex are set correctly,115## and that no other symbols are affected.116# RUN: llvm-objcopy %t.o %t6.o --set-symbol-visibility='.*'_local=hidden --regex117# RUN: llvm-readelf -s %t6.o | FileCheck %s --check-prefix=REGEX118 119# REGEX-DAG: HIDDEN      1 default_local120# REGEX-DAG: HIDDEN      1 internal_local121# REGEX-DAG: HIDDEN      1 hidden_local122# REGEX-DAG: HIDDEN      1 protected_local123## Unaffected symbols:124# REGEX-DAG: DEFAULT     1 default_global125# REGEX-DAG: DEFAULT     1 default_weak126# REGEX-DAG: INTERNAL    1 internal_global127# REGEX-DAG: INTERNAL    1 internal_weak128# REGEX-DAG: HIDDEN      1 hidden_global129# REGEX-DAG: HIDDEN      1 hidden_weak130# REGEX-DAG: PROTECTED   1 protected_global131# REGEX-DAG: PROTECTED   1 protected_weak132 133## Check that the visibility of symbols specified by a wildcard are set correctly,134## and that no other symbols are affected.135# RUN: llvm-objcopy %t.o %t7.o --set-symbol-visibility='*_local'=hidden --wildcard136# RUN: llvm-readelf -s %t7.o | FileCheck %s --check-prefix=WILDCARD137 138# WILDCARD-DAG: HIDDEN      1 default_local139# WILDCARD-DAG: HIDDEN      1 internal_local140# WILDCARD-DAG: HIDDEN      1 hidden_local141# WILDCARD-DAG: HIDDEN      1 protected_local142## Unaffected symbols:143# WILDCARD-DAG: DEFAULT     1 default_global144# WILDCARD-DAG: DEFAULT     1 default_weak145# WILDCARD-DAG: INTERNAL    1 internal_global146# WILDCARD-DAG: INTERNAL    1 internal_weak147# WILDCARD-DAG: HIDDEN      1 hidden_global148# WILDCARD-DAG: HIDDEN      1 hidden_weak149# WILDCARD-DAG: PROTECTED   1 protected_global150# WILDCARD-DAG: PROTECTED   1 protected_weak151 152## Check that the latest option that matches the same symbols as any of the previous153## options overwrites the visibility of these symbols.154# RUN: echo -e '*_weak\n*_local' > %t.symbols.pattern155# RUN: llvm-objcopy %t.o %t8.o --set-symbol-visibility='default_*'=hidden \156# RUN:                         --set-symbol-visibility='internal_*'=hidden \157# RUN:                         --set-symbols-visibility=%t.symbols.pattern=protected \158# RUN:                         --wildcard159# RUN: llvm-readelf -s %t8.o | FileCheck %s --check-prefix=REWRITE160 161# REWRITE-DAG: PROTECTED   1 default_local162# REWRITE-DAG: HIDDEN      1 default_global163# REWRITE-DAG: PROTECTED   1 default_weak164# REWRITE-DAG: PROTECTED   1 internal_local165# REWRITE-DAG: HIDDEN      1 internal_global166# REWRITE-DAG: PROTECTED   1 internal_weak167# REWRITE-DAG: PROTECTED   1 hidden_local168# REWRITE-DAG: PROTECTED   1 hidden_weak169# REWRITE-DAG: PROTECTED   1 protected_local170# REWRITE-DAG: PROTECTED   1 protected_weak171## Unaffected symbols:172# REWRITE-DAG: HIDDEN      1 hidden_global173# REWRITE-DAG: PROTECTED   1 protected_global174 175## Check that a symbol name with a special charater is treated as a plain name176## when pattern matching options are not enabled.177# RUN: yaml2obj --docnum=2 %s -o %t9.o178# RUN: llvm-objcopy %t9.o --set-symbol-visibility='f*o'=hidden179# RUN: llvm-readelf -s %t9.o | FileCheck %s --check-prefix=SPECIAL180 181# SPECIAL-DAG: HIDDEN      1 f*o182## Unaffected symbol:183# SPECIAL-DAG: DEFAULT     1 foo184 185# RUN: yaml2obj --docnum=3 %s -o %t10.o186 187## Check that the visibility of undefined symbols can be changed as well.188# RUN: llvm-objcopy %t10.o --set-symbol-visibility=foo=hidden189# RUN: llvm-readelf -s %t10.o | FileCheck %s --check-prefix=UNDEF190# UNDEF: HIDDEN    UND foo191 192## Check that passing an invalid visibility type generates an error message.193# RUN: echo 'foo' > %t.symbols194# RUN: not llvm-objcopy %t10.o --set-symbols-visibility=%t.symbols=invalid-type 2>&1 | \195# RUN:   FileCheck %s --check-prefix=TYPE196# RUN: not llvm-objcopy %t10.o --set-symbol-visibility=foo=invalid-type 2>&1 | \197# RUN:   FileCheck %s --check-prefix=TYPE198# TYPE: error: 'invalid-type' is not a valid symbol visibility199 200## Check that omitting the '=' character generates an error.201# RUN: not llvm-objcopy %t10.o --set-symbols-visibility=%t.symbols,hidden 2>&1 | \202# RUN:   FileCheck %s --check-prefix=FORMAT -DOPTION=--set-symbols-visibility203# RUN: not llvm-objcopy %t10.o --set-symbol-visibility=foo default 2>&1 | \204# RUN:   FileCheck %s --check-prefix=FORMAT -DOPTION=--set-symbol-visibility205# FORMAT: error: bad format for [[OPTION]]206 207## Check that using an invalid symbol pattern generates an error.208# RUN: echo '*.' > %t.symbols.regex209# RUN: not llvm-objcopy %t10.o --set-symbols-visibility=%t.symbols.regex=hidden --regex 2>&1 | \210# RUN:   FileCheck %s --check-prefix=SYMBOL211# RUN: not llvm-objcopy %t10.o --set-symbol-visibility='*.'=default --regex 2>&1 | \212# RUN:   FileCheck %s --check-prefix=SYMBOL213# SYMBOL: error: cannot compile regular expression '*.': repetition-operator operand invalid214 215## Check passing an invalid filename generates an error.216# RUN: not llvm-objcopy %t10.o --set-symbols-visibility=no_file=hidden 2>&1 | \217# RUN:   FileCheck %s --check-prefix=NO_FILE -DMSG=%errc_ENOENT218# NO_FILE: error: 'no_file': [[MSG]]219 220---221!ELF222FileHeader:223  Class:   ELFCLASS64224  Data:    ELFDATA2LSB225  Type:    ET_REL226  Machine: EM_X86_64227Sections:228  - Name:  .text229    Type:  SHT_PROGBITS230Symbols:231  - Name:    default_local232    Section: .text233    Binding:  STB_LOCAL234  - Name:    protected_local235    Section: .text236    Binding:  STB_LOCAL237    Other:    [ STV_PROTECTED ]238  - Name:    internal_local239    Section: .text240    Binding:  STB_LOCAL241    Other:    [ STV_INTERNAL ]242  - Name:    hidden_local243    Section: .text244    Binding:  STB_LOCAL245    Other:    [ STV_HIDDEN ]246  - Name:    default_weak247    Section: .text248    Binding:  STB_WEAK249  - Name:    internal_weak250    Section: .text251    Binding:  STB_WEAK252    Other:    [ STV_INTERNAL ]253  - Name:    hidden_weak254    Section: .text255    Binding:  STB_WEAK256    Other:    [ STV_HIDDEN ]257  - Name:    protected_weak258    Section: .text259    Binding:  STB_WEAK260    Other:    [ STV_PROTECTED ]261  - Name:    default_global262    Section: .text263    Binding:  STB_GLOBAL264  - Name:    internal_global265    Section: .text266    Binding:  STB_GLOBAL267    Other:    [ STV_INTERNAL ]268  - Name:    hidden_global269    Section: .text270    Binding:  STB_GLOBAL271    Other:    [ STV_HIDDEN ]272  - Name:    protected_global273    Section: .text274    Binding:  STB_GLOBAL275    Other:    [ STV_PROTECTED ]276  - Name:    ignored_name277    Section: .text278    Binding:  STB_GLOBAL279    Other:    [ STV_INTERNAL ]280...281 282---283!ELF284FileHeader:285  Class:   ELFCLASS64286  Data:    ELFDATA2LSB287  Type:    ET_REL288  Machine: EM_X86_64289Sections:290  - Name:  .text291    Type:  SHT_PROGBITS292Symbols:293  - Name:    f*o294    Section: .text295    Binding:  STB_LOCAL296  - Name:    foo297    Section: .text298    Binding:  STB_LOCAL299...300 301---302!ELF303FileHeader:304  Class:   ELFCLASS64305  Data:    ELFDATA2LSB306  Type:    ET_REL307  Machine: EM_X86_64308Symbols:309  - Name:     foo310    Binding:  STB_LOCAL311...312