mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 01:26:05 +00:00

1. With a Clang that doesn't default to GNU extensions they need to be enabled explicitly. 2. The X86 directory lit config sets it already, there's no reason for this test to do it by itself. 3. The C frontend executable will fail if there's for example a Clang resource file for the C++ mode that sets C++-specific options: ``` + /home/tambre/dev/llvm/build/bin/clang --target=x86_64-unknown-linux-gnu -fPIE -fuse-ld=lld -Wl,--unresolved-symbols=ignore-all -pie -fPIC -shared /home/tambre/dev/llvm/bolt/test/R_ABS.pic.lld.cpp -o /home/tambre/dev/llvm/build/tools/bolt/test/Output/R_ABS.pic.lld.cpp.tmp.so -Wl,-q -fuse-ld=lld clang: warning: argument unused during compilation: '-pie' [-Wunused-command-line-argument] error: invalid argument '-std=c23' not allowed with 'C++' ```
105 lines
5.3 KiB
Plaintext
105 lines
5.3 KiB
Plaintext
; REQUIRES: x86_64-linux
|
|
; RUN: rm -rf %t
|
|
; RUN: mkdir %t
|
|
; RUN: cd %t
|
|
; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-inlined-subroutine-gc-sections-range-main.s \
|
|
; RUN: -split-dwarf-file=main.dwo -o main.o
|
|
; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-inlined-subroutine-gc-sections-range-helper.s \
|
|
; RUN: -split-dwarf-file=helper.dwo -o helper.o
|
|
; RUN: %clang -fuse-ld=lld -Wl,-gc-sections -Wl,-q -gdwarf-5 -gsplit-dwarf=split main.o helper.o -o main.exe
|
|
; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections
|
|
; RUN: llvm-dwarfdump --debug-addr main.exe > log.txt
|
|
; RUN: llvm-dwarfdump --debug-rnglists --verbose --show-form main.dwo >> log.txt
|
|
; RUN: llvm-dwarfdump --debug-info --verbose --show-form main.dwo >> log.txt
|
|
; RUN: llvm-dwarfdump --debug-rnglists --verbose --show-form helper.dwo >> log.txt
|
|
; RUN: llvm-dwarfdump --debug-info --verbose --show-form helper.dwo >> log.txt
|
|
; RUN: llvm-dwarfdump --debug-addr main.exe.bolt > logBolt.txt
|
|
; RUN: llvm-dwarfdump --debug-info --verbose --show-form main.dwo.dwo >> logBolt.txt
|
|
; RUN: llvm-dwarfdump --debug-info --verbose --show-form helper.dwo.dwo >> logBolt.txt
|
|
; RUN: cat log.txt | FileCheck -check-prefix=BOLT-PRE %s
|
|
; RUN: cat logBolt.txt | FileCheck -check-prefix=BOLT-MAIN %s
|
|
|
|
;; Tests whether BOLT handles correctly DW_TAG_inlined_subroutine when DW_AT_ranges is 0,
|
|
;; and split dwarf is enabled.
|
|
|
|
; BOLT-PRE: Addrs:
|
|
; BOLT-PRE: 0x0000000000000000
|
|
; BOLT-PRE: 0x0000000000000000
|
|
; BOLT-PRE-NOT: 0x0000000000000000
|
|
; BOLT-PRE: Addrs:
|
|
; BOLT-PRE: 0x0000000000000000
|
|
; BOLT-PRE: 0x0000000000000000
|
|
; BOLT-PRE: 0x0000000000000000
|
|
|
|
; main.dwo
|
|
; BOLT-PRE: [DW_RLE_base_addressx]: 0x0000000000000002
|
|
; BOLT-PRE: [DW_RLE_offset_pair ]: 0x0000000000000018, 0x000000000000002d => [0x000000000000001a, 0x000000000000002f)
|
|
; BOLT-PRE: [DW_RLE_end_of_list ]
|
|
; BOLT-PRE: [DW_RLE_base_addressx]: 0x0000000000000002
|
|
; BOLT-PRE: [DW_RLE_offset_pair ]: 0x0000000000000033, 0x0000000000000042 => [0x0000000000000035, 0x0000000000000044)
|
|
; BOLT-PRE: [DW_RLE_end_of_list ]
|
|
; BOLT-PRE: DW_TAG_inlined_subroutine [9] * (0x0000006c)
|
|
; BOLT-PRE: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0044 => {0x00000044} "_Z7doStuffi")
|
|
; BOLT-PRE: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014
|
|
; BOLT-PRE: [0x000000000000001a, 0x000000000000002f))
|
|
; BOLT-PRE: DW_TAG_inlined_subroutine [9] * (0x0000006c)
|
|
; BOLT-PRE: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x005a => {0x0000005a} "_Z11doStuffSamei")
|
|
; BOLT-PRE: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x0000001a
|
|
; BOLT-PRE: [0x0000000000000035, 0x0000000000000044))
|
|
|
|
; helper.dwo
|
|
; BOLT-PRE: [DW_RLE_base_addressx]: 0x0000000000000002
|
|
; BOLT-PRE: [DW_RLE_offset_pair ]: 0x000000000000000d, 0x000000000000001a => [0x000000000000000f, 0x000000000000001c)
|
|
; BOLT-PRE: [DW_RLE_end_of_list ]
|
|
; BOLT-PRE: [DW_RLE_base_addressx]: 0x0000000000000002
|
|
; BOLT-PRE: [DW_RLE_offset_pair ]: 0x0000000000000020, 0x000000000000002d => [0x0000000000000022, 0x000000000000002f)
|
|
; BOLT-PRE: [DW_RLE_end_of_list ]
|
|
; BOLT-PRE: DW_TAG_inlined_subroutine [11] * (0x0000008c)
|
|
; BOLT-PRE: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0054 => {0x00000054} "_Z12doStuff2Samei")
|
|
; BOLT-PRE: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014
|
|
; BOLT-PRE: [0x000000000000000f, 0x000000000000001c))
|
|
; BOLT-PRE: DW_TAG_inlined_subroutine [11] * (0x0000008c)
|
|
; BOLT-PRE: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0072 => {0x00000072} "_Z8doStuff2i")
|
|
; BOLT-PRE: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x0000001a
|
|
; BOLT-PRE: [0x0000000000000022, 0x000000000000002f))
|
|
|
|
; BOLT-MAIN: Addrs:
|
|
; BOLT-MAIN: 0x0000000000000000
|
|
; BOLT-MAIN-NOT: 0x0000000000000000
|
|
; BOLT-MAIN-NOT: 0x0000000000000000
|
|
; BOLT-MAIN-NOT: 0x0000000000000000
|
|
; BOLT-MAIN: Addrs:
|
|
; BOLT-MAIN: 0x0000000000000000
|
|
|
|
; main.dwo.dwo
|
|
; BOLT-MAIN: DW_TAG_inlined_subroutine
|
|
; BOLT-MAIN: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0044 => {0x00000044} "_Z7doStuffi")
|
|
; BOLT-MAIN: DW_AT_call_file
|
|
; BOLT-MAIN: DW_AT_call_line
|
|
; BOLT-MAIN: DW_AT_call_column
|
|
; BOLT-MAIN: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000002) address = <unresolved>)
|
|
; BOLT-MAIN: DW_AT_high_pc [DW_FORM_data4] (0x00000015)
|
|
; BOLT-MAIN: DW_TAG_inlined_subroutine
|
|
; BOLT-MAIN: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x005a => {0x0000005a} "_Z11doStuffSamei")
|
|
; BOLT-MAIN: DW_AT_call_file
|
|
; BOLT-MAIN: DW_AT_call_line
|
|
; BOLT-MAIN: DW_AT_call_column
|
|
; BOLT-MAIN: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000003) address = <unresolved>)
|
|
; BOLT-MAIN: DW_AT_high_pc [DW_FORM_data4] (0x0000000f)
|
|
|
|
; helper.dwo.dwo
|
|
; BOLT-MAIN: DW_TAG_inlined_subroutine
|
|
; BOLT-MAIN: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0054 => {0x00000054} "_Z12doStuff2Samei")
|
|
; BOLT-MAIN: DW_AT_call_file
|
|
; BOLT-MAIN: DW_AT_call_line
|
|
; BOLT-MAIN: DW_AT_call_column
|
|
; BOLT-MAIN: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000000) address = <unresolved>)
|
|
; BOLT-MAIN: DW_AT_high_pc [DW_FORM_data4] (0x0000001a)
|
|
; BOLT-MAIN: DW_TAG_inlined_subroutine
|
|
; BOLT-MAIN: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0072 => {0x00000072} "_Z8doStuff2i")
|
|
; BOLT-MAIN: DW_AT_call_file
|
|
; BOLT-MAIN: DW_AT_call_line
|
|
; BOLT-MAIN: DW_AT_call_column
|
|
; BOLT-MAIN: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000000) address = <unresolved>)
|
|
; BOLT-MAIN: DW_AT_high_pc [DW_FORM_data4] (0x0000002d)
|