brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 22b2479 Raw
178 lines · plain
1# REQUIRES: x862# RUN: rm -rf %t; split-file %s %t3 4# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin \5# RUN:     %t/main.s -o %t/main.o6# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin \7# RUN:     %t/renames.s -o %t/renames.o8 9## Check that section and segment renames happen as expected10# RUN: %lld                -o %t/ydata %t/main.o %t/renames.o -lSystem11# RUN: %lld -no_data_const -o %t/ndata %t/main.o %t/renames.o -lSystem12# RUN: %lld -no_pie        -o %t/nopie %t/main.o %t/renames.o -lSystem13# RUN: %lld -platform_version macos 10.14 11.0 -o %t/old %t/main.o %t/renames.o -lSystem14 15# RUN: llvm-objdump --syms %t/ydata | \16# RUN:     FileCheck %s --check-prefixes=CHECK,YDATA17# RUN: llvm-objdump --syms %t/ndata | \18# RUN:     FileCheck %s --check-prefixes=CHECK,NDATA19# RUN: llvm-objdump --syms %t/nopie | \20# RUN:     FileCheck %s --check-prefixes=CHECK,NDATA21# RUN: llvm-objdump --syms %t/old | \22# RUN:     FileCheck %s --check-prefixes=CHECK,NDATA23 24# CHECK-LABEL: {{^}}SYMBOL TABLE:25 26# CHECK-DAG: __TEXT,__text __TEXT__StaticInit27 28# NDATA-DAG: __DATA,__auth_got __DATA__auth_got29# NDATA-DAG: __DATA,__auth_ptr __DATA__auth_ptr30# NDATA-DAG: __DATA,__nl_symbol_ptr __DATA__nl_symbol_ptr31# NDATA-DAG: __DATA,__const __DATA__const32# NDATA-DAG: __DATA,__cfstring __DATA__cfstring33# NDATA-DAG: __DATA,__mod_init_func __DATA__mod_init_func34# NDATA-DAG: __DATA,__mod_term_func __DATA__mod_term_func35# NDATA-DAG: __DATA,__objc_classlist __DATA__objc_classlist36# NDATA-DAG: __DATA,__objc_nlclslist __DATA__objc_nlclslist37# NDATA-DAG: __DATA,__objc_catlist __DATA__objc_catlist38# NDATA-DAG: __DATA,__objc_nlcatlist __DATA__objc_nlcatlist39# NDATA-DAG: __DATA,__objc_protolist __DATA__objc_protolist40# NDATA-DAG: __DATA,__nl_symbol_ptr __IMPORT__pointers41 42# YDATA-DAG: __DATA_CONST,__auth_got __DATA__auth_got43# YDATA-DAG: __DATA_CONST,__auth_ptr __DATA__auth_ptr44# YDATA-DAG: __DATA_CONST,__nl_symbol_ptr __DATA__nl_symbol_ptr45# YDATA-DAG: __DATA_CONST,__const __DATA__const46# YDATA-DAG: __DATA_CONST,__cfstring __DATA__cfstring47# YDATA-DAG: __DATA_CONST,__mod_init_func __DATA__mod_init_func48# YDATA-DAG: __DATA_CONST,__mod_term_func __DATA__mod_term_func49# YDATA-DAG: __DATA_CONST,__objc_classlist __DATA__objc_classlist50# YDATA-DAG: __DATA_CONST,__objc_nlclslist __DATA__objc_nlclslist51# YDATA-DAG: __DATA_CONST,__objc_catlist __DATA__objc_catlist52# YDATA-DAG: __DATA_CONST,__objc_nlcatlist __DATA__objc_nlcatlist53# YDATA-DAG: __DATA_CONST,__objc_protolist __DATA__objc_protolist54# YDATA-DAG: __DATA_CONST,__nl_symbol_ptr __IMPORT__pointers55 56## Check that the SG_READ_ONLY flag is set on __DATA_CONST.57# RUN: llvm-otool -v -l %t/ydata | \58# RUN:     FileCheck %s --check-prefix=FLAGS59 60# FLAGS-LABEL: Load command 261# FLAGS-NEXT:      cmd LC_SEGMENT_6462# FLAGS-NEXT:  cmdsize63# FLAGS-NEXT:  segname __DATA_CONST64# FLAGS-NEXT:   vmaddr65# FLAGS-NEXT:   vmsize66# FLAGS-NEXT:  fileoff67# FLAGS-NEXT: filesize68# FLAGS-NEXT:  maxprot rw-69# FLAGS-NEXT: initprot rw-70# FLAGS-NEXT:   nsects 1371# FLAGS-NEXT:    flags SG_READ_ONLY72 73## LLD doesn't support defining symbols in synthetic sections, so we test them74## via this slightly more awkward route.75# RUN: llvm-readobj --section-headers %t/ydata | \76# RUN:     FileCheck %s --check-prefix=SYNTH -DSEGNAME=__DATA_CONST77# RUN: llvm-readobj --section-headers %t/ndata | \78# RUN:     FileCheck %s --check-prefix=SYNTH -DSEGNAME=__DATA79# RUN: llvm-readobj --section-headers %t/nopie | \80# RUN:     FileCheck %s --check-prefix=SYNTH -DSEGNAME=__DATA81# RUN: llvm-readobj --section-headers %t/old | \82# RUN:     FileCheck %s --check-prefix=SYNTH -DSEGNAME=__DATA83 84# SYNTH:      Name: __got85# SYNTH-NEXT: Segment: [[SEGNAME]] ({{.*}})86## Note that __la_symbol_ptr always remains in the non-const data segment.87# SYNTH:      Name: __la_symbol_ptr88# SYNTH-NEXT: Segment: __DATA ({{.*}})89 90#--- renames.s91.section __DATA,__auth_got92.global __DATA__auth_got93__DATA__auth_got:94  .space 895 96.section __DATA,__auth_ptr97.global __DATA__auth_ptr98__DATA__auth_ptr:99  .space 8100 101.section __DATA,__nl_symbol_ptr102.global __DATA__nl_symbol_ptr103__DATA__nl_symbol_ptr:104  .space 8105 106.section __DATA,__const107.global __DATA__const108__DATA__const:109  .space 8110 111.section __DATA,__cfstring112.global __DATA__cfstring113__DATA__cfstring:114  .space 8115 116.section __DATA,__mod_init_func,mod_init_funcs117.global __DATA__mod_init_func118__DATA__mod_init_func:119  .space 8120 121.section __DATA,__mod_term_func,mod_term_funcs122.global __DATA__mod_term_func123__DATA__mod_term_func:124  .space 8125 126.section __DATA,__objc_classlist127.global __DATA__objc_classlist128__DATA__objc_classlist:129  .space 8130 131.section __DATA,__objc_nlclslist132.global __DATA__objc_nlclslist133__DATA__objc_nlclslist:134  .space 8135 136.section __DATA,__objc_catlist137.global __DATA__objc_catlist138__DATA__objc_catlist:139  .space 8140 141.section __DATA,__objc_nlcatlist142.global __DATA__objc_nlcatlist143__DATA__objc_nlcatlist:144  .space 8145 146.section __DATA,__objc_protolist147.global __DATA__objc_protolist148__DATA__objc_protolist:149  .space 8150 151## __objc_imageinfo should get moved under __DATA_CONST as well, but symbols152## within __objc_imageinfo get dropped during link, so we are cannot test this153## case using the output of `llvm-objdump --syms`. TODO: rewrite test to use154## `llvm-readobj --section-headers`, which will avoid this issue.155# .section __DATA,__objc_imageinfo156# .global __DATA__objc_imageinfo157# __DATA__objc_imageinfo:158#   .space 8159 160.section __IMPORT,__pointers,non_lazy_symbol_pointers161.global __IMPORT__pointers162__IMPORT__pointers:163  .space 8164 165.section __TEXT,__StaticInit166.section __TEXT,__StaticInit167.global __TEXT__StaticInit168__TEXT__StaticInit:169  .space 8170 171#--- main.s172.text173.global _main174_main:175  mov ___nan@GOTPCREL(%rip), %rax ## ensure the __got section is created176  callq ___isnan ## ensure the __la_symbol_ptr section is created177  ret178