From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27763 invoked by alias); 9 May 2017 07:01:03 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 17563 invoked by uid 89); 9 May 2017 07:00:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy= X-HELO: mga14.intel.com Received: from mga14.intel.com (HELO mga14.intel.com) (192.55.52.115) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 09 May 2017 07:00:41 +0000 Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 May 2017 00:00:16 -0700 X-ExtLoop1: 1 Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga004.fm.intel.com with ESMTP; 09 May 2017 00:00:15 -0700 Received: from ulvlx001.iul.intel.com (ulvlx001.iul.intel.com [172.28.207.17]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id v4970FTR016638; Tue, 9 May 2017 08:00:15 +0100 Received: from ulvlx001.iul.intel.com (localhost [127.0.0.1]) by ulvlx001.iul.intel.com with ESMTP id v4970EJV023938; Tue, 9 May 2017 09:00:14 +0200 Received: (from twiederh@localhost) by ulvlx001.iul.intel.com with œ id v4970E1c023934; Tue, 9 May 2017 09:00:14 +0200 From: Tim Wiederhake To: gdb-patches@sourceware.org Cc: markus.t.metzger@intel.com Subject: [PATCH v3 06/12] btrace: Remove constant arguments. Date: Tue, 09 May 2017 07:01:00 -0000 Message-Id: <1494312929-22749-7-git-send-email-tim.wiederhake@intel.com> In-Reply-To: <1494312929-22749-1-git-send-email-tim.wiederhake@intel.com> References: <1494312929-22749-1-git-send-email-tim.wiederhake@intel.com> X-IsSubscribed: yes X-SW-Source: 2017-05/txt/msg00191.txt.bz2 2017-05-09 Tim Wiederhake gdb/ChangeLog: * btrace.c (ftrace_new_function, ftrace_new_call, ftrace_new_tailcall, ftrace_new_return, ftrace_new_switch, ftrace_new_gap, ftrace_update_function): Remove arguments that implicitly were always BTINFO->END. (btrace_compute_ftrace_bts, ftrace_add_pt, btrace_compute_ftrace_pt): Don't pass BTINFO->END. --- gdb/btrace.c | 85 ++++++++++++++++++++++++++++-------------------------------- 1 file changed, 40 insertions(+), 45 deletions(-) diff --git a/gdb/btrace.c b/gdb/btrace.c index cb30dcf..1bd11f0 100644 --- a/gdb/btrace.c +++ b/gdb/btrace.c @@ -202,19 +202,19 @@ ftrace_function_switched (const struct btrace_function *bfun, return 0; } -/* Allocate and initialize a new branch trace function segment. +/* Allocate and initialize a new branch trace function segment at the end of + the trace. BTINFO is the branch trace information for the current thread. - PREV is the chronologically preceding function segment. MFUN and FUN are the symbol information we have for this function. */ static struct btrace_function * ftrace_new_function (struct btrace_thread_info *btinfo, - struct btrace_function *prev, struct minimal_symbol *mfun, struct symbol *fun) { - struct btrace_function *bfun; + struct btrace_function *bfun, *prev; + prev = btinfo->end; bfun = XCNEW (struct btrace_function); bfun->msym = mfun; @@ -238,7 +238,7 @@ ftrace_new_function (struct btrace_thread_info *btinfo, } btinfo->functions.push_back (bfun); - return bfun; + return btinfo->end = bfun; } /* Update the UP field of a function segment. */ @@ -277,20 +277,18 @@ ftrace_fixup_caller (struct btrace_function *bfun, ftrace_update_caller (next, caller, flags); } -/* Add a new function segment for a call. +/* Add a new function segment for a call at the end of the trace. BTINFO is the branch trace information for the current thread. - CALLER is the chronologically preceding function segment. MFUN and FUN are the symbol information we have for this function. */ static struct btrace_function * ftrace_new_call (struct btrace_thread_info *btinfo, - struct btrace_function *caller, struct minimal_symbol *mfun, struct symbol *fun) { - struct btrace_function *bfun; + struct btrace_function *caller = btinfo->end; + struct btrace_function *bfun = ftrace_new_function (btinfo, mfun, fun); - bfun = ftrace_new_function (btinfo, caller, mfun, fun); bfun->up = caller; bfun->level += 1; @@ -299,20 +297,18 @@ ftrace_new_call (struct btrace_thread_info *btinfo, return bfun; } -/* Add a new function segment for a tail call. +/* Add a new function segment for a tail call at the end of the trace. BTINFO is the branch trace information for the current thread. - CALLER is the chronologically preceding function segment. MFUN and FUN are the symbol information we have for this function. */ static struct btrace_function * ftrace_new_tailcall (struct btrace_thread_info *btinfo, - struct btrace_function *caller, struct minimal_symbol *mfun, struct symbol *fun) { - struct btrace_function *bfun; + struct btrace_function *caller = btinfo->end; + struct btrace_function *bfun = ftrace_new_function (btinfo, mfun, fun); - bfun = ftrace_new_function (btinfo, caller, mfun, fun); bfun->up = caller; bfun->level += 1; bfun->flags |= BFUN_UP_LINKS_TO_TAILCALL; @@ -379,20 +375,20 @@ ftrace_find_call (struct btrace_function *bfun) return bfun; } -/* Add a continuation segment for a function into which we return. +/* Add a continuation segment for a function into which we return at the end of + the trace. BTINFO is the branch trace information for the current thread. - PREV is the chronologically preceding function segment. MFUN and FUN are the symbol information we have for this function. */ static struct btrace_function * ftrace_new_return (struct btrace_thread_info *btinfo, - struct btrace_function *prev, struct minimal_symbol *mfun, struct symbol *fun) { + struct btrace_function *prev = btinfo->end; struct btrace_function *bfun, *caller; - bfun = ftrace_new_function (btinfo, prev, mfun, fun); + bfun = ftrace_new_function (btinfo, mfun, fun); /* It is important to start at PREV's caller. Otherwise, we might find PREV itself, if PREV is a recursive function. */ @@ -460,22 +456,21 @@ ftrace_new_return (struct btrace_thread_info *btinfo, return bfun; } -/* Add a new function segment for a function switch. +/* Add a new function segment for a function switch at the end of the trace. BTINFO is the branch trace information for the current thread. - PREV is the chronologically preceding function segment. MFUN and FUN are the symbol information we have for this function. */ static struct btrace_function * ftrace_new_switch (struct btrace_thread_info *btinfo, - struct btrace_function *prev, struct minimal_symbol *mfun, struct symbol *fun) { + struct btrace_function *prev = btinfo->end; struct btrace_function *bfun; /* This is an unexplained function switch. We can't really be sure about the call stack, yet the best I can think of right now is to preserve it. */ - bfun = ftrace_new_function (btinfo, prev, mfun, fun); + bfun = ftrace_new_function (btinfo, mfun, fun); bfun->up = prev->up; bfun->flags = prev->flags; @@ -484,15 +479,15 @@ ftrace_new_switch (struct btrace_thread_info *btinfo, return bfun; } -/* Add a new function segment for a gap in the trace due to a decode error. +/* Add a new function segment for a gap in the trace due to a decode error at + the end of the trace. BTINFO is the branch trace information for the current thread. - PREV is the chronologically preceding function segment. ERRCODE is the format-specific error code. */ static struct btrace_function * -ftrace_new_gap (struct btrace_thread_info *btinfo, - struct btrace_function *prev, int errcode) +ftrace_new_gap (struct btrace_thread_info *btinfo, int errcode) { + struct btrace_function *prev = btinfo->end; struct btrace_function *bfun; /* We hijack prev if it was empty. */ @@ -500,7 +495,7 @@ ftrace_new_gap (struct btrace_thread_info *btinfo, && VEC_empty (btrace_insn_s, prev->insn)) bfun = prev; else - bfun = ftrace_new_function (btinfo, prev, NULL, NULL); + bfun = ftrace_new_function (btinfo, NULL, NULL); bfun->errcode = errcode; @@ -515,13 +510,13 @@ ftrace_new_gap (struct btrace_thread_info *btinfo, Return the chronologically latest function segment, never NULL. */ static struct btrace_function * -ftrace_update_function (struct btrace_thread_info *btinfo, - struct btrace_function *bfun, CORE_ADDR pc) +ftrace_update_function (struct btrace_thread_info *btinfo, CORE_ADDR pc) { struct bound_minimal_symbol bmfun; struct minimal_symbol *mfun; struct symbol *fun; struct btrace_insn *last; + struct btrace_function *bfun = btinfo->end; /* Try to determine the function we're in. We use both types of symbols to avoid surprises when we sometimes get a full symbol and sometimes @@ -535,7 +530,7 @@ ftrace_update_function (struct btrace_thread_info *btinfo, /* If we didn't have a function or if we had a gap before, we create one. */ if (bfun == NULL || bfun->errcode != 0) - return ftrace_new_function (btinfo, bfun, mfun, fun); + return ftrace_new_function (btinfo, mfun, fun); /* Check the last instruction, if we have one. We do this check first, since it allows us to fill in the call stack @@ -563,9 +558,9 @@ ftrace_update_function (struct btrace_thread_info *btinfo, different frame id's. This will confuse stepping. */ fname = ftrace_print_function_name (bfun); if (strcmp (fname, "_dl_runtime_resolve") == 0) - return ftrace_new_tailcall (btinfo, bfun, mfun, fun); + return ftrace_new_tailcall (btinfo, mfun, fun); - return ftrace_new_return (btinfo, bfun, mfun, fun); + return ftrace_new_return (btinfo, mfun, fun); } case BTRACE_INSN_CALL: @@ -573,7 +568,7 @@ ftrace_update_function (struct btrace_thread_info *btinfo, if (last->pc + last->size == pc) break; - return ftrace_new_call (btinfo, bfun, mfun, fun); + return ftrace_new_call (btinfo, mfun, fun); case BTRACE_INSN_JUMP: { @@ -583,13 +578,13 @@ ftrace_update_function (struct btrace_thread_info *btinfo, /* A jump to the start of a function is (typically) a tail call. */ if (start == pc) - return ftrace_new_tailcall (btinfo, bfun, mfun, fun); + return ftrace_new_tailcall (btinfo, mfun, fun); /* If we can't determine the function for PC, we treat a jump at the end of the block as tail call if we're switching functions and as an intra-function branch if we don't. */ if (start == 0 && ftrace_function_switched (bfun, mfun, fun)) - return ftrace_new_tailcall (btinfo, bfun, mfun, fun); + return ftrace_new_tailcall (btinfo, mfun, fun); break; } @@ -604,7 +599,7 @@ ftrace_update_function (struct btrace_thread_info *btinfo, ftrace_print_function_name (bfun), ftrace_print_filename (bfun)); - return ftrace_new_switch (btinfo, bfun, mfun, fun); + return ftrace_new_switch (btinfo, mfun, fun); } return bfun; @@ -1022,7 +1017,7 @@ btrace_compute_ftrace_bts (struct thread_info *tp, if (block->end < pc) { /* Indicate the gap in the trace. */ - end = ftrace_new_gap (btinfo, end, BDE_BTS_OVERFLOW); + end = ftrace_new_gap (btinfo, BDE_BTS_OVERFLOW); if (begin == NULL) begin = end; @@ -1035,7 +1030,7 @@ btrace_compute_ftrace_bts (struct thread_info *tp, break; } - end = ftrace_update_function (btinfo, end, pc); + end = ftrace_update_function (btinfo, pc); if (begin == NULL) begin = end; @@ -1070,7 +1065,7 @@ btrace_compute_ftrace_bts (struct thread_info *tp, { /* Indicate the gap in the trace. We just added INSN so we're not at the beginning. */ - end = ftrace_new_gap (btinfo, end, BDE_BTS_INSN_SIZE); + end = ftrace_new_gap (btinfo, BDE_BTS_INSN_SIZE); VEC_safe_push (bfun_s, *gaps, end); @@ -1192,7 +1187,7 @@ ftrace_add_pt (struct btrace_thread_info *btinfo, from some other instruction. Indicate this as a trace gap. */ if (insn.enabled) { - *pend = end = ftrace_new_gap (btinfo, end, BDE_PT_DISABLED); + *pend = end = ftrace_new_gap (btinfo, BDE_PT_DISABLED); VEC_safe_push (bfun_s, *gaps, end); @@ -1207,7 +1202,7 @@ ftrace_add_pt (struct btrace_thread_info *btinfo, /* Indicate trace overflows. */ if (insn.resynced) { - *pend = end = ftrace_new_gap (btinfo, end, BDE_PT_OVERFLOW); + *pend = end = ftrace_new_gap (btinfo, BDE_PT_OVERFLOW); if (begin == NULL) *pbegin = begin = end; @@ -1220,7 +1215,7 @@ ftrace_add_pt (struct btrace_thread_info *btinfo, offset, insn.ip); } - upd = ftrace_update_function (btinfo, end, insn.ip); + upd = ftrace_update_function (btinfo, insn.ip); if (upd != end) { *pend = end = upd; @@ -1240,7 +1235,7 @@ ftrace_add_pt (struct btrace_thread_info *btinfo, break; /* Indicate the gap in the trace. */ - *pend = end = ftrace_new_gap (btinfo, end, errcode); + *pend = end = ftrace_new_gap (btinfo, errcode); if (begin == NULL) *pbegin = begin = end; @@ -1372,7 +1367,7 @@ btrace_compute_ftrace_pt (struct thread_info *tp, /* Indicate a gap in the trace if we quit trace processing. */ if (error.reason == RETURN_QUIT && btinfo->end != NULL) { - btinfo->end = ftrace_new_gap (btinfo, btinfo->end, BDE_PT_USER_QUIT); + btinfo->end = ftrace_new_gap (btinfo, BDE_PT_USER_QUIT); VEC_safe_push (bfun_s, *gaps, btinfo->end); } -- 2.7.4