brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · dd88c51 Raw
175 lines · plain
1// REQUIRES: x862# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o3# RUN: llvm-dwarfdump %t.o | FileCheck -check-prefix=INPUT %s4# RUN: not ld.lld %t.o %t.o -o /dev/null 2>&1 | FileCheck %s5 6# INPUT:     .debug_info contents:7# INPUT:       DW_TAG_variable8# INPUT-NEXT:    DW_AT_name      ("foo")9# INPUT-NEXT:    DW_AT_decl_file ("1.c")10# INPUT-NEXT:    DW_AT_decl_line (1)11# INPUT-NEXT:    DW_AT_type      (0x00000032 "int")12# INPUT-NEXT:    DW_AT_external  (true)13# INPUT-NEXT:    DW_AT_location  (DW_OP_addr 0x0)14# INPUT:       DW_TAG_variable15# INPUT-NEXT:    DW_AT_name      ("bar")16# INPUT-NEXT:    DW_AT_decl_file ("1.c")17# INPUT-NEXT:    DW_AT_decl_line (2)18# INPUT-NEXT:    DW_AT_type      (0x00000032 "int")19# INPUT-NEXT:    DW_AT_external  (true)20# INPUT-NEXT:    DW_AT_location  (DW_OP_addr 0x0)21 22## Check we use information from .debug_info in messages.23# CHECK:      duplicate symbol: bar24# CHECK-NEXT: >>> defined at 1.c:225# CHECK-NEXT: >>>            {{.*}}:(bar)26# CHECK-NEXT: >>> defined at 1.c:227# CHECK-NEXT: >>>            {{.*}}:(.data+0x0)28# CHECK:      duplicate symbol: foo29# CHECK-NEXT: >>> defined at 1.c:130# CHECK-NEXT: >>>            {{.*}}:(foo)31# CHECK-NEXT: >>> defined at 1.c:132# CHECK-NEXT: >>>            {{.*}}:(.bss+0x0)33 34## Check that stripping debug sections does not break error reporting.35# RUN: not ld.lld --strip-debug %t.o %t.o -o /dev/null 2>&1 | FileCheck %s36 37# Used reduced output from following code and gcc 7.1.038# to produce this input file:39# Source (1.c):40#  int foo = 0;41#  int bar = 1;42#  static int zed = 3;43# Invocation: g++ -g -S 1.c44 45.data46.globl  bar47.type  bar, @object48.size  bar, 449bar:50 .byte 051 52.bss53.globl  foo54.type  foo, @object55.size  foo, 456foo:57 58.local zed59zed:60 61.text62.file 1 "1.c"63 64.section  .debug_info,"",@progbits65  .long  0x5a            # Compile Unit: length = 0x0000004b)66  .value  0x4            # version = 0x000467  .long  0               # abbr_offset = 0x068  .byte  0x8             # addr_size = 0x0869 70  .uleb128 0x1           # DW_TAG_compile_unit [1] *71  .long  0               # DW_AT_producer [DW_FORM_strp]  ( .debug_str[0x00000000] = )72  .byte  0x4             # DW_AT_language [DW_FORM_data1]  (DW_LANG_C_plus_plus)73  .string  "1.c"         # DW_AT_name [DW_FORM_string]  ("1.c")74  .long  0               # DW_AT_comp_dir [DW_FORM_strp]  ( .debug_str[0x00000000] = )75  .long  0               # DW_AT_stmt_list [DW_FORM_sec_offset]  (0x00000000)76 77  .uleb128 0x2           # DW_TAG_variable [2]78  .string  "foo"         # DW_AT_name [DW_FORM_string]  ("foo")79  .byte  0x1             # DW_AT_decl_file [DW_FORM_data1]  ("1.c")80  .byte  0x1             # DW_AT_decl_line [DW_FORM_data1]  (1)81  .long  0x32            # DW_AT_type [DW_FORM_ref4]  (cu + 0x0032 => {0x00000032})82  .uleb128 0x9           # DW_AT_external [DW_FORM_flag_present]  (true)83  .byte  0x384  .quad  foo             # DW_AT_location [DW_FORM_exprloc]  (DW_OP_addr 0x0)85 86  .uleb128 0x3           # DW_TAG_base_type [3]87  .byte  0x4             # DW_AT_byte_size [DW_FORM_data1]  (0x04)88  .byte  0x5             # DW_AT_encoding [DW_FORM_data1]  (DW_ATE_signed)89  .string  "int"         # DW_AT_name [DW_FORM_string]  ("int")90 91  .uleb128 0x2           # DW_TAG_variable [2]92  .string  "bar"         # DW_AT_name [DW_FORM_string]  ("bar")93  .byte  0x1             # DW_AT_decl_file [DW_FORM_data1]  ("1.c")94  .byte  0x2             # DW_AT_decl_line [DW_FORM_data1]  (2)95  .long  0x32            # DW_AT_type [DW_FORM_ref4]  (cu + 0x0032 => {0x00000032})96  .uleb128 0x9           # DW_AT_external [DW_FORM_flag_present]  (true)97  .byte  0x398  .quad  bar             # DW_AT_location [DW_FORM_exprloc]  (DW_OP_addr 0x0)99  100  .uleb128 0x4           # DW_TAG_variable [2]101  .string  "zed"         # DW_AT_name [DW_FORM_string]  ("zed")102  .byte  0x1             # DW_AT_decl_file [DW_FORM_data1]  ("1.c")103  .byte  0x3             # DW_AT_decl_line [DW_FORM_data1]  (2)104  .long  0x32            # DW_AT_type [DW_FORM_ref4]  (cu + 0x0032 => {0x00000032})105  .quad  zed             # DW_AT_location [DW_FORM_exprloc]  (DW_OP_addr 0x0)106  107  .byte  0               # END108 109 110.section  .debug_abbrev,"",@progbits111  .uleb128 0x1   # Abbreviation code.112  .uleb128 0x11  # DW_TAG_compile_unit113 114  .byte  0x1     # ID115  .uleb128 0x25  # DW_AT_producer, DW_FORM_strp116  .uleb128 0xe117  .uleb128 0x13  # DW_AT_language, DW_FORM_data1118  .uleb128 0xb119  .uleb128 0x3   # DW_AT_name, DW_FORM_string120  .uleb128 0x8121  .uleb128 0x1b  # DW_AT_comp_dir, DW_FORM_strp122  .uleb128 0xe123  .uleb128 0x10  # DW_AT_stmt_list, DW_FORM_sec_offset124  .uleb128 0x17125  .byte  0126  .byte  0127 128  .uleb128 0x2  # ID129  .uleb128 0x34 # DW_TAG_variable, DW_CHILDREN_no130  .byte  0131  .uleb128 0x3  # DW_AT_name, DW_FORM_string132  .uleb128 0x8133  .uleb128 0x3a # DW_AT_decl_file, DW_FORM_data1134  .uleb128 0xb135  .uleb128 0x3b # DW_AT_decl_line, DW_FORM_data1136  .uleb128 0xb137  .uleb128 0x49 # DW_AT_type, DW_FORM_ref4138  .uleb128 0x13139  .uleb128 0x3f # DW_AT_external, DW_FORM_flag_present140  .uleb128 0x19141  .uleb128 0x2  # DW_AT_location, DW_FORM_exprloc142  .uleb128 0x18143  .byte  0144  .byte  0145 146  .uleb128 0x3  # ID147  .uleb128 0x24 # DW_TAG_base_type, DW_CHILDREN_no148  .byte  0149  .uleb128 0xb  # DW_AT_byte_size, DW_FORM_data1150  .uleb128 0xb151  .uleb128 0x3e # DW_AT_encoding, DW_FORM_data1152  .uleb128 0xb153  .uleb128 0x3  # DW_AT_name, DW_FORM_string154  .uleb128 0x8155  .byte  0156  .byte  0157  158  .uleb128 0x4  # ID159  .uleb128 0x34 # DW_TAG_variable, DW_CHILDREN_no160  .byte  0161  .uleb128 0x3  # DW_AT_name, DW_FORM_string162  .uleb128 0x8163  .uleb128 0x3a # DW_AT_decl_file, DW_FORM_data1164  .uleb128 0xb165  .uleb128 0x3b # DW_AT_decl_line, DW_FORM_data1166  .uleb128 0xb167  .uleb128 0x49 # DW_AT_type, DW_FORM_ref4168  .uleb128 0x13169  .uleb128 0x2  # DW_AT_location, DW_FORM_exprloc170  .uleb128 0x18171  .byte  0172  .byte  0173 174  .byte  0175