Files
clang-p2996/llvm/test/tools/llvm-symbolizer/invalid-input-address.test
Serge Pavlov 1792852f86 [symbolizer] Change reaction on invalid input
If llvm-symbolizer finds a malformed command, it echoes it to the
standard output. New versions of binutils (starting from 2.39) allow to
specify an address by a symbols. Implementation of this feature in
llvm-symbolizer makes the current reaction on invalid input
inappropriate. Almost any invalid command may be treated as a symbol
name, so the right reaction should be "symbol not found" in such case.

The exception are commands that are recognized but have incorrect
syntax, like "FILE:FILE:". The utility must produce descriptive
diagnostic for such input and route it to the stderr.

This change implements the new reaction on invalid input and is a
prerequisite for implementation of symbol lookup in llvm-symbolizer.

Differential Revision: https://reviews.llvm.org/D157210
2023-08-30 17:54:37 +07:00

26 lines
1.2 KiB
Plaintext

# Use address that can't fit in a 64-bit number. Show that llvm-symbolizer
# simply treats it as an unknown symbol.
RUN: llvm-symbolizer --obj=%p/Inputs/addr.exe 0x10000000000000000 | FileCheck --check-prefix=LARGE-ADDR %s
LARGE-ADDR-NOT: {{.}}
LARGE-ADDR: ??
LARGE-ADDR-NEXT: ??:0:0
LARGE-ADDR-EMPTY:
LARGE-ADDR-NOT: {{.}}
RUN: echo '"some text"' '"some text2"' > %t.rsp
RUN: echo -e 'some text\nsome text2\n' > %t.inp
# Test bad input address values, via stdin, command line and response file.
RUN: llvm-symbolizer --obj=%p/Inputs/addr.exe < %t.inp | FileCheck --check-prefix=BAD-INPUT %s
RUN: llvm-symbolizer --obj=%p/Inputs/addr.exe "some text" "some text2" | FileCheck --check-prefix=BAD-INPUT %s
RUN: llvm-symbolizer --obj=%p/Inputs/addr.exe @%t.rsp | FileCheck --check-prefix=BAD-INPUT %s
# Test bad input address values for the GNU-compatible version.
RUN: llvm-addr2line --obj=%p/Inputs/addr.exe < %t.inp | FileCheck --check-prefix=BAD-INPUT %s
RUN: llvm-addr2line --obj=%p/Inputs/addr.exe "some text" "some text2" | FileCheck --check-prefix=BAD-INPUT %s
RUN: llvm-addr2line --obj=%p/Inputs/addr.exe @%t.rsp | FileCheck --check-prefix=BAD-INPUT %s
BAD-INPUT: ??
BAD-INPUT-NEXT: ??:0