diff options
author | Ian Lance Taylor <iant@golang.org> | 2020-09-16 17:03:52 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2020-09-16 17:04:43 -0700 |
commit | 90c254565122fa5c02114698ce35ac46679c03b0 (patch) | |
tree | c893c6c0c0e87f702441fd7d31f57e522083aa22 /libbacktrace/internal.h | |
parent | fd111c419d146ee47c7df9a36a535e8d843d4802 (diff) | |
download | gcc-90c254565122fa5c02114698ce35ac46679c03b0.zip gcc-90c254565122fa5c02114698ce35ac46679c03b0.tar.gz gcc-90c254565122fa5c02114698ce35ac46679c03b0.tar.bz2 |
libbacktrace: use ELF symbol table if no debug info available
PR libbacktrace/97080
* fileline.c (backtrace_syminfo_to_full_callback): New function.
(backtrace_syminfo_to_full_error_callback): New function.
* elf.c (elf_nodebug): Call syminfo_fn if possible.
* internal.h (struct backtrace_call_full): Define.
(backtrace_syminfo_to_full_callback): Declare.
(backtrace_syminfo_to_full_error_callback): Declare.
* mtest.c (f3): Only check all[i] if data.index permits.
Diffstat (limited to 'libbacktrace/internal.h')
-rw-r--r-- | libbacktrace/internal.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/libbacktrace/internal.h b/libbacktrace/internal.h index 0986233..047a700 100644 --- a/libbacktrace/internal.h +++ b/libbacktrace/internal.h @@ -326,6 +326,31 @@ extern int backtrace_dwarf_add (struct backtrace_state *state, void *data, fileline *fileline_fn, struct dwarf_data **fileline_entry); +/* A data structure to pass to backtrace_syminfo_to_full. */ + +struct backtrace_call_full +{ + backtrace_full_callback full_callback; + backtrace_error_callback full_error_callback; + void *full_data; + int ret; +}; + +/* A backtrace_syminfo_callback that can call into a + backtrace_full_callback, used when we have a symbol table but no + debug info. */ + +extern void backtrace_syminfo_to_full_callback (void *data, uintptr_t pc, + const char *symname, + uintptr_t symval, + uintptr_t symsize); + +/* An error callback that corresponds to + backtrace_syminfo_to_full_callback. */ + +extern void backtrace_syminfo_to_full_error_callback (void *, const char *, + int); + /* A test-only hook for elf_uncompress_zdebug. */ extern int backtrace_uncompress_zdebug (struct backtrace_state *, |