This libbacktrace patch moves
backtrace_syminfo_to_full_callback_moredata from fileline.c to elf.c
and makes it static. This fixes at least some cases of the
libsanitizer build, as libsanitizer uses #define to rename all
externally visible libbacktrace functions. Committed to mainline.
Ian
* elf.c (backtrace_syminfo_to_full_callback_moredata): Move to
elf.c from fileline.c and make static.
* fileline.c (backtrace_syminfo_to_full_callback_moredata):
Moved to elf.c.
* internal.h (backtrace_syminfo_to_full_callback_moredata): Don't
declare.
diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c
index 64e055b898c..072369c7fa6 100644
--- a/libbacktrace/elf.c
+++ b/libbacktrace/elf.c
@@ -566,6 +566,26 @@ elf_nosyms (struct backtrace_state *state ATTRIBUTE_UNUSED,
error_callback (data, "no symbol table in ELF executable", -1);
}
+/* Variant of backtrace_syminfo_to_full_callback that handles the exta
+ wrapping of moredata. */
+
+static void
+backtrace_syminfo_to_full_callback_moredata (void *data, uintptr_t pc,
+ const char *symname,
+ uintptr_t symval ATTRIBUTE_UNUSED,
+ uintptr_t symsize ATTRIBUTE_UNUSED)
+{
+ struct backtrace_moredata *md = (struct backtrace_moredata *) data;
+ struct backtrace_call_full *bdata;
+ struct backtrace_moredata callback_md;
+
+ bdata = (struct backtrace_call_full *) md->backtrace_data;
+ memset (&callback_md, 0, sizeof callback_md);
+ callback_md.backtrace_version = BACKTRACE_MOREDATA_VERSION;
+ callback_md.backtrace_data = bdata->full_data;
+ bdata->ret = bdata->full_callback (&callback_md, pc, NULL, 0, symname);
+}
+
/* A callback function used when we can't find any debug info. */
static int
diff --git a/libbacktrace/fileline.c b/libbacktrace/fileline.c
index 4f92bf3632a..28afc6c2a4f 100644
--- a/libbacktrace/fileline.c
+++ b/libbacktrace/fileline.c
@@ -429,26 +429,6 @@ backtrace_syminfo_to_full_callback (void *data, uintptr_t
pc,
bdata->ret = bdata->full_callback (bdata->full_data, pc, NULL, 0, symname);
}
-/* Variant of backtrace_syminfo_to_full_callback that handles the exta
- wrapping of moredata. */
-
-void
-backtrace_syminfo_to_full_callback_moredata (void *data, uintptr_t pc,
- const char *symname,
- uintptr_t symval ATTRIBUTE_UNUSED,
- uintptr_t symsize ATTRIBUTE_UNUSED)
-{
- struct backtrace_moredata *md = (struct backtrace_moredata *) data;
- struct backtrace_call_full *bdata;
- struct backtrace_moredata callback_md;
-
- bdata = (struct backtrace_call_full *) md->backtrace_data;
- memset (&callback_md, 0, sizeof callback_md);
- callback_md.backtrace_version = BACKTRACE_MOREDATA_VERSION;
- callback_md.backtrace_data = bdata->full_data;
- bdata->ret = bdata->full_callback (&callback_md, pc, NULL, 0, symname);
-}
-
/* An error callback that corresponds to
backtrace_syminfo_to_full_callback. */
diff --git a/libbacktrace/internal.h b/libbacktrace/internal.h
index e678b710d50..26b41fb7f7f 100644
--- a/libbacktrace/internal.h
+++ b/libbacktrace/internal.h
@@ -394,15 +394,6 @@ extern void backtrace_syminfo_to_full_callback (void
*data, uintptr_t pc,
uintptr_t symval,
uintptr_t symsize);
-/* A variant of backtrace_syminfo_to_full_callback for when the moredata
- flag is set. */
-
-extern void backtrace_syminfo_to_full_callback_moredata (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. */