mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 03:06:04 +00:00

`clang -g -gpubnames` (with optional -gsplit-dwarf) creates the `.debug_names` section ("per-CU" index). By default lld concatenates input `.debug_names` sections into an output `.debug_names` section. LLDB can consume the concatenated section but the lookup performance is not good. This patch adds --debug-names to create a per-module index by combining the per-CU indexes into a single index that covers the entire load module. The produced `.debug_names` is a replacement for `.gdb_index`. Type units (-fdebug-types-section) are not handled yet. Co-authored-by: Fangrui Song <i@maskray.me> --------- Co-authored-by: Fangrui Song <i@maskray.me>
67 lines
2.9 KiB
Plaintext
67 lines
2.9 KiB
Plaintext
# REQUIRES: x86
|
|
|
|
# RUN: not ld.lld --unknown1 --unkn=own2 -m foo /no/such/file -lnosuchlib \
|
|
# RUN: 2>&1 | FileCheck -check-prefix=UNKNOWN %s
|
|
|
|
# UNKNOWN: error: unknown argument '--unknown1'
|
|
# UNKNOWN: error: unknown argument '--unkn=own2'
|
|
# UNKNOWN: error: unknown emulation: foo
|
|
# UNKNOWN: error: cannot open /no/such/file
|
|
# UNKNOWN: error: unable to find library -lnosuchlib
|
|
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
|
# RUN: not ld.lld %t -o /no/such/file 2>&1 | FileCheck -check-prefix=MISSING %s
|
|
# MISSING: error: cannot open output file /no/such/file
|
|
|
|
# RUN: ld.lld --help 2>&1 | FileCheck -check-prefix=HELP %s
|
|
# HELP: USAGE:
|
|
# HELP: : supported targets:{{.*}} elf
|
|
|
|
# RUN: not ld.lld --versin 2>&1 | FileCheck -check-prefix=SPELLVERSION %s
|
|
# SPELLVERSION: error: unknown argument '--versin', did you mean '--version'
|
|
|
|
## Attempt to link DSO with -r
|
|
# RUN: ld.lld -shared %t -o %t.so
|
|
# RUN: not ld.lld -r %t.so %t -o /dev/null 2>&1 | FileCheck -check-prefix=ERR %s
|
|
# ERR: error: attempted static link of dynamic object
|
|
|
|
# RUN: not ld.lld -r -shared -pie --export-dynamic %t -o /dev/null 2>&1 | FileCheck -check-prefix=ERR2 %s
|
|
# ERR2: error: -r and -shared may not be used together
|
|
# ERR2: error: -r and -pie may not be used together
|
|
# ERR2: error: -r and --export-dynamic may not be used together
|
|
|
|
# RUN: not ld.lld -r --icf=all --gdb-index --debug-names %t -o /dev/null 2>&1 | FileCheck -check-prefix=ERR4 %s
|
|
# ERR4: error: -r and --gdb-index may not be used together
|
|
# ERR4: error: -r and --icf may not be used together
|
|
# ERR4: error: -r and --debug-names may not be used together
|
|
|
|
# RUN: not ld.lld -shared -pie %t -o /dev/null 2>&1 | FileCheck -check-prefix=ERR7 %s
|
|
# ERR7: error: -shared and -pie may not be used together
|
|
|
|
## "--output=foo" is equivalent to "-o foo".
|
|
# RUN: not ld.lld %t --output=/no/such/file 2>&1 | FileCheck -check-prefix=ERR8 %s
|
|
# ERR8: error: cannot open output file /no/such/file
|
|
|
|
## "-output=foo" is equivalent to "-o utput=foo".
|
|
# RUN: not ld.lld %t -output=/no/such/file 2>&1 | FileCheck -check-prefix=ERR9 %s
|
|
# ERR9: error: cannot open output file utput=/no/such/file
|
|
|
|
# RUN: ld.lld %t -z foo -o /dev/null 2>&1 | FileCheck -check-prefix=ERR10 %s --implicit-check-not=warning:
|
|
# RUN: ld.lld %t -z foo -z rel -z rela -z max-page-size=1 -z common-page-size=1 -o /dev/null --version 2>&1 | \
|
|
# RUN: FileCheck -check-prefix=ERR10 %s --implicit-check-not=warning:
|
|
# ERR10: warning: unknown -z value: foo
|
|
|
|
## Check we report "unknown -z value" error even with -v.
|
|
# RUN: ld.lld %t -z foo -z rel -o /dev/null -v 2>&1 | FileCheck -check-prefix=ERR10 %s --implicit-check-not=warning:
|
|
|
|
## Note: in GNU ld, --fatal-warning still leads to a warning.
|
|
# RUN: not ld.lld %t -z foo --fatal-warnings 2>&1 | FileCheck --check-prefix=ERR10-FATAL %s
|
|
# ERR10-FATAL: error: unknown -z value: foo
|
|
|
|
# RUN: not ld.lld %t -z max-page-size 2>&1 | FileCheck -check-prefix=ERR11 %s
|
|
# ERR11: error: invalid max-page-size:
|
|
|
|
.globl _start
|
|
_start:
|
|
nop
|