From d96fa208a5dfdd4f1ea6d6aa3b24f987a57b0dc2 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 13 Aug 2015 22:56:01 +0000 Subject: [PATCH] dwarf.c (read_function_entry): Add vec_inlined parameter. * dwarf.c (read_function_entry): Add vec_inlined parameter. Change all callers. From-SVN: r226878 --- libbacktrace/ChangeLog | 5 +++++ libbacktrace/dwarf.c | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog index d043761bbe7..5862906907e 100644 --- a/libbacktrace/ChangeLog +++ b/libbacktrace/ChangeLog @@ -1,3 +1,8 @@ +2015-08-13 Ian Lance Taylor + + * dwarf.c (read_function_entry): Add vec_inlined parameter. + Change all callers. + 2015-06-11 Martin Sebor PR sanitizer/65479 diff --git a/libbacktrace/dwarf.c b/libbacktrace/dwarf.c index e32c4688573..54e5ace9b4a 100644 --- a/libbacktrace/dwarf.c +++ b/libbacktrace/dwarf.c @@ -2250,7 +2250,8 @@ read_function_entry (struct backtrace_state *state, struct dwarf_data *ddata, struct unit *u, uint64_t base, struct dwarf_buf *unit_buf, const struct line_header *lhdr, backtrace_error_callback error_callback, void *data, - struct function_vector *vec) + struct function_vector *vec_function, + struct function_vector *vec_inlined) { while (unit_buf->left > 0) { @@ -2258,6 +2259,7 @@ read_function_entry (struct backtrace_state *state, struct dwarf_data *ddata, const struct abbrev *abbrev; int is_function; struct function *function; + struct function_vector *vec; size_t i; uint64_t lowpc; int have_lowpc; @@ -2279,6 +2281,11 @@ read_function_entry (struct backtrace_state *state, struct dwarf_data *ddata, || abbrev->tag == DW_TAG_entry_point || abbrev->tag == DW_TAG_inlined_subroutine); + if (abbrev->tag == DW_TAG_inlined_subroutine) + vec = vec_inlined; + else + vec = vec_function; + function = NULL; if (is_function) { @@ -2458,7 +2465,8 @@ read_function_entry (struct backtrace_state *state, struct dwarf_data *ddata, if (!is_function) { if (!read_function_entry (state, ddata, u, base, unit_buf, lhdr, - error_callback, data, vec)) + error_callback, data, vec_function, + vec_inlined)) return 0; } else @@ -2471,7 +2479,8 @@ read_function_entry (struct backtrace_state *state, struct dwarf_data *ddata, memset (&fvec, 0, sizeof fvec); if (!read_function_entry (state, ddata, u, base, unit_buf, lhdr, - error_callback, data, &fvec)) + error_callback, data, vec_function, + &fvec)) return 0; if (fvec.count > 0) @@ -2535,7 +2544,7 @@ read_function_info (struct backtrace_state *state, struct dwarf_data *ddata, while (unit_buf.left > 0) { if (!read_function_entry (state, ddata, u, 0, &unit_buf, lhdr, - error_callback, data, pfvec)) + error_callback, data, pfvec, pfvec)) return; } -- 2.30.2