aboutsummaryrefslogtreecommitdiff
path: root/libbacktrace/internal.h
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2020-09-16 17:03:52 -0700
committerIan Lance Taylor <iant@golang.org>2020-09-16 17:04:43 -0700
commit90c254565122fa5c02114698ce35ac46679c03b0 (patch)
treec893c6c0c0e87f702441fd7d31f57e522083aa22 /libbacktrace/internal.h
parentfd111c419d146ee47c7df9a36a535e8d843d4802 (diff)
downloadgcc-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.h25
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 *,