diff --git a/llvm/docs/CommandGuide/llvm-addr2line.rst b/llvm/docs/CommandGuide/llvm-addr2line.rst index 646a159cd24a6..999b3e0d7e6aa 100644 --- a/llvm/docs/CommandGuide/llvm-addr2line.rst +++ b/llvm/docs/CommandGuide/llvm-addr2line.rst @@ -36,6 +36,9 @@ Here are some of those differences: - ``llvm-addr2line`` parses options from the environment variable ``LLVM_ADDR2LINE_OPTS`` instead of from ``LLVM_SYMBOLIZER_OPTS``. +- ``llvm-addr2line`` accepts an address with a '+' prefix, e.g. `+0x00777fff`. + This is treated as a symbol name by ``llvm-symbolizer``. + SEE ALSO -------- diff --git a/llvm/docs/ReleaseNotes.md b/llvm/docs/ReleaseNotes.md index 7d734f2e258e6..280744aaf780f 100644 --- a/llvm/docs/ReleaseNotes.md +++ b/llvm/docs/ReleaseNotes.md @@ -265,6 +265,7 @@ Changes to the LLVM tools * llvm-strip now supports continuing to process files on encountering an error. * In llvm-objcopy/llvm-strip's ELF port, `--discard-locals` and `--discard-all` now allow and preserve symbols referenced by relocations. ([#47468](https://github.com/llvm/llvm-project/issues/47468)) +* llvm-addr2line now supports a `+` prefix when specifying an address. Changes to LLDB --------------------------------- diff --git a/llvm/test/tools/llvm-symbolizer/symbol-search.test b/llvm/test/tools/llvm-symbolizer/symbol-search.test index b785cf1596fad..bb07c54e100b5 100644 --- a/llvm/test/tools/llvm-symbolizer/symbol-search.test +++ b/llvm/test/tools/llvm-symbolizer/symbol-search.test @@ -66,7 +66,7 @@ RUN: llvm-addr2line --obj=%p/Inputs/symbols.so func_01+0A | FileCheck --check-pr # If '+' is not preceded by a symbol, it is part of a symbol name, not an offset separator. RUN: llvm-symbolizer --obj=%p/Inputs/symbols.so +0x1138 | FileCheck --check-prefix=NONEXISTENT %s -# in addr2line address starting with a `+` sign is a valid address +# In addr2line address starting with a `+` sign is a valid address. RUN: llvm-addr2line --obj=%p/Inputs/symbols.so +0x1138 | FileCheck --check-prefix=CODE-CMD %s # Show that C++ mangled names may be specified. diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp index a682a0762c393..4784dafeb2948 100644 --- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -238,7 +238,7 @@ static Error parseCommand(StringRef BinaryName, bool IsAddr2Line, bool StartsWithDigit = std::isdigit(AddrSpec.front()); // GNU addr2line assumes the address is hexadecimal and allows a redundant - // "0x" or "0X" prefix or with an optional `+` sign; do the same for + // "0x", "0X" prefix or an optional `+` sign; do the same for // compatibility. if (IsAddr2Line) { AddrSpec.consume_front_insensitive("0x") ||