mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 04:33:05 +00:00
740a75968a
Previous algorithm for constructing [Address ranges]->[Compile Units] mapping was wrong. It somewhat relied on the assumption that address ranges for different compile units may not overlap. It is not so. For example, two compile units may contain the definition of the same linkonce_odr function. These definitions will be merged at link-time, resulting in equivalent .debug_ranges entries for both these units Instead of sorting and merging original address ranges (from .debug_ranges and .debug_aranges), implement a different approach: save endpoints of all ranges, and then use a sweep-line approach to construct the desired mapping. If we find that certain address maps to several compilation units, we just pick any of them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210860 91177308-0d34-0410-b5e6-96231b3b80d8
142 lines
4.6 KiB
Plaintext
142 lines
4.6 KiB
Plaintext
RUN: echo "%p/Inputs/dwarfdump-test.elf-x86-64 0x400559" > %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-test.elf-x86-64.debuglink 0x400559" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-test.elf-x86-64 0x400436" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-test.elf-x86-64 0x400528" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-test.elf-x86-64 0x400586" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-test2.elf-x86-64 0x4004e8" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-test2.elf-x86-64 0x4004f4" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-test4.elf-x86-64 0x62c" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-inl-test.elf-x86-64 0x710" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-inl-test.elf-x86-64 0x7d1" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-inl-test.elf-x86-64 0x785" >> %t.input
|
|
RUN: echo "%p/Inputs/dwarfdump-inl-test.high_pc.elf-x86-64 0x568" >> %t.input
|
|
RUN: echo "\"%p/Inputs/dwarfdump-test3.elf-x86-64 space\" 0x640" >> %t.input
|
|
RUN: echo "\"%p/Inputs/dwarfdump-test3.elf-x86-64 space\" 0x633" >> %t.input
|
|
RUN: echo "\"%p/Inputs/dwarfdump-test3.elf-x86-64 space\" 0x62d" >> %t.input
|
|
RUN: echo "%p/Inputs/macho-universal 0x1f84" >> %t.input
|
|
RUN: echo "%p/Inputs/macho-universal:i386 0x1f67" >> %t.input
|
|
RUN: echo "%p/Inputs/macho-universal:x86_64 0x100000f05" >> %t.input
|
|
RUN: echo "%p/Inputs/llvm-symbolizer-dwo-test 0x400514" >> %t.input
|
|
RUN: echo "%p/Inputs/fission-ranges.elf-x86_64 0x720" >> %t.input
|
|
RUN: echo "%p/Inputs/arange-overlap.elf-x86_64 0x714" >> %t.input
|
|
|
|
RUN: llvm-symbolizer --functions=linkage --inlining --demangle=false \
|
|
RUN: --default-arch=i386 < %t.input | FileCheck %s
|
|
|
|
CHECK: main
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
|
|
|
|
CHECK: main
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
|
|
|
|
CHECK: _start
|
|
|
|
CHECK: _Z1fii
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:11
|
|
|
|
CHECK: DummyClass
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:4
|
|
|
|
CHECK: a
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test2-helper.cc:2
|
|
|
|
CHECK: main
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test2-main.cc:4
|
|
|
|
CHECK: _Z1cv
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test4-part1.cc:2
|
|
|
|
CHECK: inlined_h
|
|
CHECK-NEXT: dwarfdump-inl-test.h:2
|
|
CHECK-NEXT: inlined_g
|
|
CHECK-NEXT: dwarfdump-inl-test.h:7
|
|
CHECK-NEXT: inlined_f
|
|
CHECK-NEXT: dwarfdump-inl-test.cc:3
|
|
CHECK-NEXT: main
|
|
CHECK-NEXT: dwarfdump-inl-test.cc:8
|
|
|
|
CHECK: inlined_g
|
|
CHECK-NEXT: dwarfdump-inl-test.h:7
|
|
CHECK-NEXT: inlined_f
|
|
CHECK-NEXT: dwarfdump-inl-test.cc:3
|
|
CHECK-NEXT: main
|
|
CHECK-NEXT: dwarfdump-inl-test.cc:8
|
|
|
|
CHECK: inlined_f
|
|
CHECK-NEXT: dwarfdump-inl-test.cc:3
|
|
CHECK-NEXT: main
|
|
CHECK-NEXT: dwarfdump-inl-test.cc:8
|
|
|
|
CHECK: inlined_h
|
|
CHECK-NEXT: dwarfdump-inl-test.h:3
|
|
CHECK-NEXT: inlined_g
|
|
CHECK-NEXT: dwarfdump-inl-test.h:7
|
|
CHECK-NEXT: inlined_f
|
|
CHECK-NEXT: dwarfdump-inl-test.cc:3
|
|
CHECK-NEXT: main
|
|
CHECK-NEXT: dwarfdump-inl-test.cc:8
|
|
|
|
CHECK: C
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test3.cc:3
|
|
|
|
CHECK: _Z3do1v
|
|
CHECK-NEXT: /tmp/include{{[/\\]}}dwarfdump-test3-decl.h:7
|
|
|
|
CHECK: _Z3do2v
|
|
CHECK-NEXT: /tmp/dbginfo{{[/\\]}}include{{[/\\]}}dwarfdump-test3-decl2.h:1
|
|
|
|
CHECK: main
|
|
CHECK: _Z3inci
|
|
CHECK: _Z3inci
|
|
|
|
CHECK: main
|
|
CHECK-NEXT: llvm-symbolizer-dwo-test.cc:11
|
|
|
|
CHECK: main
|
|
CHECK-NEXT: {{.*}}fission-ranges.cc:6
|
|
|
|
CHECK: _ZN1S3bazEv
|
|
CHECK-NEXT: {{.*}}arange-overlap.cc:6
|
|
|
|
RUN: echo "unexisting-file 0x1234" > %t.input2
|
|
RUN: llvm-symbolizer < %t.input2
|
|
|
|
RUN: echo "%p/Inputs/macho-universal 0x1f84" > %t.input3
|
|
RUN: llvm-symbolizer < %t.input3 | FileCheck %s --check-prefix=UNKNOWN-ARCH
|
|
|
|
UNKNOWN-ARCH-NOT: main
|
|
UNKNOWN-ARCH: ??
|
|
UNKNOWN-ARCH-NOT: main
|
|
|
|
RUN: echo "0x400559" > %t.input4
|
|
RUN: echo "0x400436" >> %t.input4
|
|
RUN: llvm-symbolizer --obj %p/Inputs/dwarfdump-test.elf-x86-64 < %t.input4 \
|
|
RUN: | FileCheck %s --check-prefix=BINARY
|
|
|
|
BINARY: main
|
|
BINARY-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
|
|
BINARY: _start
|
|
|
|
RUN: echo "0x400720" > %t.input5
|
|
RUN: echo "0x4004a0" >> %t.input5
|
|
RUN: echo "0x4006f0" >> %t.input5
|
|
RUN: llvm-symbolizer --obj %p/Inputs/llvm-symbolizer-test.elf-x86-64 < %t.input5 \
|
|
RUN: | FileCheck %s --check-prefix=BINARY_C
|
|
|
|
BINARY_C: main
|
|
BINARY_C-NEXT: /tmp/dbginfo{{[/\\]}}llvm-symbolizer-test.c:10
|
|
BINARY_C: _start
|
|
BINARY_C: {{g$}}
|
|
|
|
RUN: echo "0x1f1" > %t.input6
|
|
RUN: llvm-symbolizer --obj %p/Inputs/shared-object-stripped.elf-i386 < %t.input6 \
|
|
RUN: | FileCheck %s --check-prefix=STRIPPED
|
|
|
|
STRIPPED: global_func
|
|
|
|
RUN: echo "%p/Inputs/dwarfdump-test4.elf-x86-64 0x62c" > %t.input7
|
|
RUN: llvm-symbolizer --functions=short --use-symbol-table=false --demangle=false < %t.input7 \
|
|
RUN: | FileCheck %s --check-prefix=SHORT_FUNCTION_NAME
|
|
|
|
SHORT_FUNCTION_NAME-NOT: _Z1cv
|