diff options
| author | Alexey Samsonov <samsonov@google.com> | 2012-06-01 06:11:13 +0000 |
|---|---|---|
| committer | Alexey Samsonov <samsonov@google.com> | 2012-06-01 06:11:13 +0000 |
| commit | 6f596767c39ce6ac5ce9baa79479b0e30e1729fc (patch) | |
| tree | 2bf523a5abc9e8662336fe2cdd67ffaabf729e1e /compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h | |
| parent | 1d4d62d76c1d4d387434278e0642531ac93bab8f (diff) | |
| download | bcm5719-llvm-6f596767c39ce6ac5ce9baa79479b0e30e1729fc.tar.gz bcm5719-llvm-6f596767c39ce6ac5ce9baa79479b0e30e1729fc.zip | |
Stub files for common symbolizer for AddressSanitizer and ThreadSanitizer tools.
It is an analogue of addr2line utility and should allow to map instruction address to a location
in source code at run-time. It should use debug information (in DWARF) in a binary, and hopefully
it would be possible to re-use code from llvm/DebugInfo/DIContext.h
llvm-svn: 157806
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h')
| -rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h new file mode 100644 index 00000000000..cce6fc93bb3 --- /dev/null +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h @@ -0,0 +1,60 @@ +//===-- symbolizer.h --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Symbolizer is intended to be used by both +// AddressSanitizer and ThreadSanitizer to symbolize a given +// address. It is an analogue of addr2line utility and allows to map +// instruction address to a location in source code at run-time. +// +// Symbolizer is planned to use debug information (in DWARF format) +// in a binary via interface defined in "llvm/DebugInfo/DIContext.h" +// +// Symbolizer code should be called from the run-time library of +// dynamic tools, and generally should not call memory allocation +// routines or other system library functions intercepted by those tools. +// Instead, Symbolizer code should use their replacements, defined in +// "compiler-rt/lib/sanitizer_common/sanitizer_libc.h". +//===----------------------------------------------------------------------===// +#ifndef SANITIZER_SYMBOLIZER_H +#define SANITIZER_SYMBOLIZER_H + +#include "sanitizer_defs.h" +#include "sanitizer_libc.h" +// WARNING: Do not include system headers here. See details above. + +namespace __sanitizer { + +struct AddressInfo { + uptr address; + char *module; + uptr module_offset; + char *function; + char *file; + int line; + int column; + + // Deletes all strings. + void Clear(); +}; + +struct AddressInfoList { + AddressInfoList *next; + AddressInfo info; + + // Deletes all nodes in a list. + void Clear(); +}; + +// Returns a list of descriptions for a given address (in all inlined +// functions). The ownership is transferred to the caller. +AddressInfoList* SymbolizeCode(uptr address); + +} // namespace __sanitizer + +#endif // SANITIZER_SYMBOLIZER_H |

