Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[sanitizer] Allow Fuchsia symbolizer to be reused by Myriad RTEMS
Like Fuchsia, Myriad RTEMS uses an off-line symbolizer -- we just need a custom backtrace frame string. Move this definition to sanitizer_fuchsia.h; the corresponding RTEMS one will be added when we add sanitizer_rtems.h. Differential Revision: https://reviews.llvm.org/D46462 llvm-svn: 332157
- Loading branch information
1 parent
811a83d
commit d8f7b0b
Showing
5 changed files
with
104 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
40 changes: 40 additions & 0 deletions
40
compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_fuchsia.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
//===-- sanitizer_symbolizer_fuchsia.h -----------------------------------===// | ||
// | ||
// The LLVM Compiler Infrastructure | ||
// | ||
// This file is distributed under the University of Illinois Open Source | ||
// License. See LICENSE.TXT for details. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// This file is shared between various sanitizers' runtime libraries. | ||
// | ||
// Define Fuchsia's string formats and limits for the markup symbolizer. | ||
//===----------------------------------------------------------------------===// | ||
#ifndef SANITIZER_SYMBOLIZER_FUCHSIA_H | ||
#define SANITIZER_SYMBOLIZER_FUCHSIA_H | ||
|
||
#include "sanitizer_internal_defs.h" | ||
|
||
namespace __sanitizer { | ||
|
||
// See the spec at: | ||
// https://fuchsia.googlesource.com/zircon/+/master/docs/symbolizer_markup.md | ||
|
||
// This is used by UBSan for type names, and by ASan for global variable names. | ||
constexpr const char *kFormatDemangle = "{{{symbol:%s}}}"; | ||
constexpr uptr kFormatDemangleMax = 1024; // Arbitrary. | ||
|
||
// Function name or equivalent from PC location. | ||
constexpr const char *kFormatFunction = "{{{pc:%p}}}"; | ||
constexpr uptr kFormatFunctionMax = 64; // More than big enough for 64-bit hex. | ||
|
||
// Global variable name or equivalent from data memory address. | ||
constexpr const char *kFormatData = "{{{data:%p}}}"; | ||
|
||
// One frame in a backtrace (printed on a line by itself). | ||
constexpr const char *kFormatFrame = "{{{bt:%u:%p}}}"; | ||
|
||
} // namespace __sanitizer | ||
|
||
#endif // SANITIZER_SYMBOLIZER_FUCHSIA_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
41 changes: 41 additions & 0 deletions
41
compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_rtems.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
//===-- sanitizer_symbolizer_rtems.h -----------------------------------===// | ||
// | ||
// The LLVM Compiler Infrastructure | ||
// | ||
// This file is distributed under the University of Illinois Open Source | ||
// License. See LICENSE.TXT for details. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// This file is shared between various sanitizers' runtime libraries. | ||
// | ||
// Define RTEMS's string formats and limits for the markup symbolizer. | ||
//===----------------------------------------------------------------------===// | ||
#ifndef SANITIZER_SYMBOLIZER_RTEMS_H | ||
#define SANITIZER_SYMBOLIZER_RTEMS_H | ||
|
||
#include "sanitizer_internal_defs.h" | ||
|
||
namespace __sanitizer { | ||
|
||
// The Myriad RTEMS symbolizer currently only parses backtrace lines, | ||
// so use a format that the symbolizer understands. For other | ||
// markups, keep them the same as the Fuchsia's. | ||
|
||
// This is used by UBSan for type names, and by ASan for global variable names. | ||
constexpr const char *kFormatDemangle = "{{{symbol:%s}}}"; | ||
constexpr uptr kFormatDemangleMax = 1024; // Arbitrary. | ||
|
||
// Function name or equivalent from PC location. | ||
constexpr const char *kFormatFunction = "{{{pc:%p}}}"; | ||
constexpr uptr kFormatFunctionMax = 64; // More than big enough for 64-bit hex. | ||
|
||
// Global variable name or equivalent from data memory address. | ||
constexpr const char *kFormatData = "{{{data:%p}}}"; | ||
|
||
// One frame in a backtrace (printed on a line by itself). | ||
constexpr const char *kFormatFrame = " [%u] IP: %p"; | ||
|
||
} // namespace __sanitizer | ||
|
||
#endif // SANITIZER_SYMBOLIZER_RTEMS_H |