116 lines · plain
1# REQUIRES: x86-registered-target2 3# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o4 5# RUN: llvm-symbolizer 0 --obj=%t.o | FileCheck %s --check-prefix=LINKAGE6# RUN: llvm-symbolizer 0 -f --obj=%t.o | FileCheck %s --check-prefix=LINKAGE7# RUN: llvm-symbolizer 0 --functions --obj=%t.o | FileCheck %s --check-prefix=LINKAGE8# RUN: llvm-symbolizer 0 -f=linkage --obj=%t.o | FileCheck %s --check-prefix=LINKAGE9# RUN: llvm-symbolizer 0 --functions=linkage --obj=%t.o | FileCheck %s --check-prefix=LINKAGE10# RUN: llvm-symbolizer 0 -f=short --obj=%t.o | FileCheck %s --check-prefix=SHORT11# RUN: llvm-symbolizer 0 --functions=short --obj=%t.o | FileCheck %s --check-prefix=SHORT12# RUN: llvm-symbolizer 0 -f=none --obj=%t.o | FileCheck %s --check-prefix=NONE13# RUN: llvm-symbolizer 0 --functions=none --obj=%t.o | FileCheck %s --check-prefix=NONE14 15## Characterise behaviour for no '=' sign. llvm-symbolizer treats the next option as an16## input address, and just prints it.17# RUN: llvm-symbolizer 0 -f none --obj=%t.o | FileCheck %s --check-prefixes=LINKAGE,ERR18# RUN: llvm-symbolizer 0 --functions none --obj=%t.o | FileCheck %s --check-prefixes=LINKAGE,ERR19 20# LINKAGE: {{^}}foo(int){{$}}21# LINKAGE-NEXT: functions.cpp:2:022 23# SHORT: {{^}}foo{{$}}24# SHORT-NEXT: functions.cpp:2:025 26# NONE-NOT: foo27# NONE: functions.cpp:2:028 29# ERR: ??30# ERR-NEXT: ??:031 32# The assembly below is a stripped down version of the output of:33# clang -S -g --target=x86_64-pc-linux34# for the following C++ source:35# void foo(int bar) {}36 .type _Z3fooi,@function37_Z3fooi:38.Lfunc_begin0:39 .file 1 "/llvm-symbolizer/Inputs" "functions.cpp"40 .loc 1 2 0 # functions.cpp:2:041 nop42 .loc 1 2 20 prologue_end # functions.cpp:2:2043.Lfunc_end0:44 45 .section .debug_str,"MS",@progbits,146.Linfo_string1:47 .asciz "functions.cpp"48.Linfo_string2:49 .asciz "/llvm-symbolizer/Inputs"50.Linfo_string3:51 .asciz "_Z3fooi"52.Linfo_string4:53 .asciz "foo"54 55 .section .debug_abbrev,"",@progbits56 .byte 1 # Abbreviation Code57 .byte 17 # DW_TAG_compile_unit58 .byte 1 # DW_CHILDREN_yes59 .byte 3 # DW_AT_name60 .byte 14 # DW_FORM_strp61 .byte 16 # DW_AT_stmt_list62 .byte 23 # DW_FORM_sec_offset63 .byte 27 # DW_AT_comp_dir64 .byte 14 # DW_FORM_strp65 .byte 17 # DW_AT_low_pc66 .byte 1 # DW_FORM_addr67 .byte 18 # DW_AT_high_pc68 .byte 6 # DW_FORM_data469 .byte 0 # EOM(1)70 .byte 0 # EOM(2)71 .byte 2 # Abbreviation Code72 .byte 46 # DW_TAG_subprogram73 .byte 0 # DW_CHILDREN_no74 .byte 17 # DW_AT_low_pc75 .byte 1 # DW_FORM_addr76 .byte 18 # DW_AT_high_pc77 .byte 6 # DW_FORM_data478 .byte 110 # DW_AT_linkage_name79 .byte 14 # DW_FORM_strp80 .byte 3 # DW_AT_name81 .byte 14 # DW_FORM_strp82 .byte 58 # DW_AT_decl_file83 .byte 11 # DW_FORM_data184 .byte 59 # DW_AT_decl_line85 .byte 11 # DW_FORM_data186 .byte 0 # EOM(1)87 .byte 0 # EOM(2)88 .byte 0 # EOM(3)89 90 .section .debug_info,"",@progbits91.Lcu_begin0:92 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit93.Ldebug_info_start0:94 .short 4 # DWARF version number95 .long .debug_abbrev # Offset Into Abbrev. Section96 .byte 8 # Address Size (in bytes)97 .byte 1 # Abbrev [1] 0xb:0x4f DW_TAG_compile_unit98 .long .Linfo_string1 # DW_AT_name99 .long .Lline_table_start0 # DW_AT_stmt_list100 .long .Linfo_string2 # DW_AT_comp_dir101 .quad .Lfunc_begin0 # DW_AT_low_pc102 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc103 .byte 2 # Abbrev [2] 0x2a:0x28 DW_TAG_subprogram104 .quad .Lfunc_begin0 # DW_AT_low_pc105 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc106 .long .Linfo_string3 # DW_AT_linkage_name107 .long .Linfo_string4 # DW_AT_name108 .byte 1 # DW_AT_decl_file109 .byte 2 # DW_AT_decl_line110 .byte 0 # End Of Children Mark111 .byte 0 # End Of Children Mark112.Ldebug_info_end0:113 114 .section .debug_line,"",@progbits115.Lline_table_start0:116