diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-08-13 22:56:01 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-08-13 22:56:01 +0000 |
commit | 8ae2112fad395ea5ff9b4bc34c9b0f43d0ba7520 (patch) | |
tree | 5f43e2954137771fce35952120b3ac5f9e0a38e6 /libbacktrace | |
parent | d1dff243625561126520b6eba1ca719cc6f172b0 (diff) | |
download | gcc-8ae2112fad395ea5ff9b4bc34c9b0f43d0ba7520.tar.gz |
* dwarf.c (read_function_entry): Add vec_inlined parameter.
Change all callers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226878 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libbacktrace')
-rw-r--r-- | libbacktrace/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <iant@google.com> + + * dwarf.c (read_function_entry): Add vec_inlined parameter. + Change all callers. + 2015-06-11 Martin Sebor <msebor@redhat.com> 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; } |