Files
clang-p2996/lld/test/MachO/invalid/duplicate-symbol-debug.s
Daniel Bertalan ed39fd515a [lld-macho] Use source information in duplicate symbol errors
Similarly to how undefined symbol diagnostics were changed in D128184,
we now show where in the source file duplicate symbols are defined at:

  ld64.lld: error: duplicate symbol: _foo
  >> defined in bar.c:42
  >>            /path/to/bar.o
  >> defined in baz.c:1
  >>            /path/to/libbaz.a(baz.o)

For objects that don't contain DWARF data, the format is unchanged.

A slight difference to undefined symbol diagnostics is that we don't
print the name of the symbol on the third line, as it's already
contained on the first line.

Differential Revision: https://reviews.llvm.org/D128425
2022-06-23 11:07:15 -04:00

44 lines
1.5 KiB
ArmAsm

# REQUIRES: aarch64
# RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %s -o %t.o
# RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %s -o %t-dup.o
# RUN: not %lld -dylib -arch arm64 -o /dev/null %t.o %t-dup.o 2>&1 | FileCheck %s -DFILE_1=%t.o -DFILE_2=%t-dup.o
# CHECK: error: duplicate symbol: _foo
# CHECK-NEXT: >>> defined in duplicate-symbol-debug.s:20
# CHECK-NEXT: >>> [[FILE_1]]
# CHECK-NEXT: >>> defined in duplicate-symbol-debug.s:20
# CHECK-NEXT: >>> [[FILE_2]]
## Test case adapted from lld/test/ELF/Inputs/vs-diagnostics-duplicate2.s
.file 1 "" "duplicate-symbol-debug.s"
.text
.globl _foo
.loc 1 20
_foo:
nop
.section __DWARF,__debug_abbrev,regular,debug
.byte 1 ; Abbreviation code
.byte 17 ; DW_TAG_compile_unit
.byte 0 ; DW_CHILDREN_no
.byte 16 ; DW_AT_stmt_list
.byte 23 ; DW_FORM_sec_offset
.byte 0 ; EOM(1)
.byte 0 ; EOM(2)
.byte 0 ; EOM(3)
.section __DWARF,__debug_info,regular,debug
.long Lend0 - Lbegin0 ; Length of Unit
Lbegin0:
.short 4 ; DWARF version number
.long __debug_abbrev ; Offset Into Abbrev. Section
.byte 8 ; Address Size (in bytes)
.byte 1 ; Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
.long __debug_line ; DW_AT_stmt_list
Lend0:
.section __DWARF,__debug_line,regular,debug