
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
33 lines
1.6 KiB
Plaintext
33 lines
1.6 KiB
Plaintext
# llvm-symbolizer infers the number base from the form of the address.
|
|
RUN: llvm-symbolizer -e %p/Inputs/addr.exe -a 0x1234 | FileCheck %s
|
|
RUN: llvm-symbolizer -e %p/Inputs/addr.exe -a 0X1234 | FileCheck %s
|
|
RUN: llvm-symbolizer -e %p/Inputs/addr.exe -a 4660 | FileCheck %s
|
|
RUN: llvm-symbolizer -e %p/Inputs/addr.exe -a 011064 | FileCheck %s
|
|
RUN: llvm-symbolizer -e %p/Inputs/addr.exe -a 0b1001000110100 | FileCheck %s
|
|
RUN: llvm-symbolizer -e %p/Inputs/addr.exe -a 0B1001000110100 | FileCheck %s
|
|
RUN: llvm-symbolizer -e %p/Inputs/addr.exe -a 0o11064 | FileCheck %s
|
|
|
|
# llvm-symbolizer / StringRef::getAsInteger only accepts the 0o prefix in lowercase.
|
|
RUN: llvm-symbolizer -e %p/Inputs/addr.exe -a 0O1234 | FileCheck %s --check-prefix=INVALID
|
|
|
|
# llvm-addr2line always requires hexadecimal, but accepts an optional 0x prefix.
|
|
RUN: llvm-addr2line -e %p/Inputs/addr.exe -a 0x1234 | FileCheck %s
|
|
RUN: llvm-addr2line -e %p/Inputs/addr.exe -a 0X1234 | FileCheck %s
|
|
RUN: llvm-addr2line -e %p/Inputs/addr.exe -a 1234 | FileCheck %s
|
|
RUN: llvm-addr2line -e %p/Inputs/addr.exe -a 01234 | FileCheck %s
|
|
RUN: llvm-addr2line -e %p/Inputs/addr.exe -a 0b1010 | FileCheck %s --check-prefix=HEXADECIMAL-NOT-BINARY
|
|
RUN: llvm-addr2line -e %p/Inputs/addr.exe -a 0B1010 | FileCheck %s --check-prefix=HEXADECIMAL-NOT-BINARY
|
|
RUN: llvm-addr2line -e %p/Inputs/addr.exe -a 0o1234 | FileCheck %s --check-prefix=INVALID-NOT-OCTAL
|
|
RUN: llvm-addr2line -e %p/Inputs/addr.exe -a 0O1234 | FileCheck %s --check-prefix=INVALID-NOT-OCTAL
|
|
|
|
CHECK: 0x1234
|
|
CHECK-NEXT: ??
|
|
|
|
INVALID: ??
|
|
INVALID-NEXT: ??:0
|
|
|
|
HEXADECIMAL-NOT-BINARY: 0xb1010
|
|
HEXADECIMAL-NOT-BINARY: ??
|
|
|
|
INVALID-NOT-OCTAL: ??:0
|