From patchwork Tue Jun 5 14:34:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 27630 Received: (qmail 85955 invoked by alias); 5 Jun 2018 14:35:24 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 85782 invoked by uid 89); 5 Jun 2018 14:35:23 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=Advance, extracting, UNIQUE X-HELO: mail-wm0-f65.google.com Received: from mail-wm0-f65.google.com (HELO mail-wm0-f65.google.com) (74.125.82.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 05 Jun 2018 14:35:17 +0000 Received: by mail-wm0-f65.google.com with SMTP id n5-v6so5553715wmc.5 for ; Tue, 05 Jun 2018 07:35:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=Gh+YDfpGPy1GAgqiqlddyZNHTUspeP3ubNQyt5PgSjI=; b=nt97ABsYxa0jATYwcKlQsvY3aBibg91r5v0yynWdywwN5Woz7GTN2ILi3ath0/56a6 7OkZ8UZZ3dYQmFR1vzgFxwrI3MpKn9EpNoGLbsMg7Yqaj7I4QyuTzlPRysfoaIBYpAEK e/vU41urQ0wc8QzP1DBGVhHpkCCWOAqTieMqsSEr/PZrVuQFkYZjZMMSdPEFKaagtD5v yJ19LzwinDF2mCv9GdRyOub7l1/D5zIHaC+212CcCovQg6hiC+4Rz/502nMi3SX7FhH5 v1C1eWWf2phuLtJlQ3MBfFGyZCemp/PZcu7dHS2sLnsWYH+N32L7IXgNJGm0GHOJ25L7 NKSA== X-Gm-Message-State: APt69E3VrXfHPgiCDHohIqjSAn5J3o7sFGeLIbfBs0+WDuruDwWJC14W E9l2sIkGP2zGJtm2uCpQZD5Y7pd2pfU= X-Google-Smtp-Source: ADUXVKJ/FAbxvK2xCq/WECw0l820lVob9aGSqnckktfDvFCaqG1YrNQ58HVNRvMWhhmvjGpwQyrbxg== X-Received: by 2002:a1c:3a91:: with SMTP id h139-v6mr11506413wma.94.1528209312122; Tue, 05 Jun 2018 07:35:12 -0700 (PDT) Received: from localhost ([80.175.9.218]) by smtp.gmail.com with ESMTPSA id q77-v6sm2414491wmg.25.2018.06.05.07.35.10 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Jun 2018 07:35:11 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Andrew Burgess Subject: [PATCHv3 3/4] gdb: Supply a default for gdbarch_dummy_id Date: Tue, 5 Jun 2018 15:34:57 +0100 Message-Id: <82dc4cc20963473b28567a1c7c8567ad4da5ed90.1528206468.git.andrew.burgess@embecosm.com> In-Reply-To: References: In-Reply-To: References: <20180410101323.GO13407@embecosm.com> X-IsSubscribed: yes A lot of targets use the same pattern for their implementation of gdbarch_dummy_id. Create a new function default_dummy_id and use this as the default for gdbarch_dummy_id where possible. gdb/ChangeLog: * aarch64-tdep.c (aarch64_dummy_id): Delete. (aarch64_gdbarch_init): Don't call set_gdbarch_dummy_id. * alpha-tdep.c (alpha_dummy_id): Delete. (alpha_gdbarch_init): Don't call set_gdbarch_dummy_id. * arc-tdep.c (arc_dummy_id): Delete. (arc_gdbarch_init): Don't call set_gdbarch_dummy_id. * arm-tdep.c (arm_dummy_id): Delete. (arm_gdbarch_init): Don't call set_gdbarch_dummy_id. * bfin-tdep.c (bfin_dummy_id): Delete. (bfin_gdbarch_init): Don't call set_gdbarch_dummy_id. * cris-tdep.c (cris_dummy_id): Delete. (cris_gdbarch_init): Don't call set_gdbarch_dummy_id. * dummy-frame.c (default_dummy_id): Defined new function. * dummy-frame.h (default_dummy_id): Declare new function. * frv-tdep.c (frv_dummy_id): Delete. (frv_gdbarch_init): Don't call set_gdbarch_dummy_id. * ft32-tdep.c (ft32_dummy_id): Delete. (ft32_gdbarch_init): Don't call set_gdbarch_dummy_id. * gdbarch.c: Regenerate. * gdbarch.h: Regenerate. * gdbarch.sh: Remove predicate function, and supply default for dummy_id method. Add 'dummy-frame.h' header. * h8300-tdep.c (h8300_dummy_id): Delete. (h8300_gdbarch_init): Don't call set_gdbarch_dummy_id. * hppa-tdep.c (hppa_dummy_id): Delete. (hppa_gdbarch_init): Don't call set_gdbarch_dummy_id. * iq2000-tdep.c (iq2000_dummy_id): Delete. (iq2000_gdbarch_init): Don't call set_gdbarch_dummy_id. * lm32-tdep.c (lm32_dummy_id): Delete. (lm32_gdbarch_init): Don't call set_gdbarch_dummy_id. * m32r-tdep.c (m32r_dummy_id): Delete. (m32r_gdbarch_init): Don't call set_gdbarch_dummy_id. * mep-tdep.c (mep_dummy_id): Delete. (mep_gdbarch_init): Don't call set_gdbarch_dummy_id. * mn10300-tdep.c (mn10300_dummy_id): Delete. (mn10300_frame_unwind_init): Don't call set_gdbarch_dummy_id. * moxie-tdep.c (moxie_dummy_id): Delete. (moxie_gdbarch_init): Don't call set_gdbarch_dummy_id. * msp430-tdep.c (msp430_dummy_id): Delete. (msp430_gdbarch_init): Don't call set_gdbarch_dummy_id. * nds32-tdep.c (nds32_dummy_id): Delete. (nds32_gdbarch_init): Don't call set_gdbarch_dummy_id. * nios2-tdep.c (nios2_dummy_id): Delete. (nios2_gdbarch_init): Don't call set_gdbarch_dummy_id. * or1k-tdep.c (or1k_dummy_id): Delete. (or1k_gdbarch_init): Don't call set_gdbarch_dummy_id. * riscv-tdep.c (riscv_dummy_id): Delete. (riscv_gdbarch_init): Don't call set_gdbarch_dummy_id. * rs6000-tdep.c (rs6000_dummy_id): Delete. (rs6000_gdbarch_init): Don't call set_gdbarch_dummy_id. * rx-tdep.c (rx_dummy_id): Delete. (rx_gdbarch_init): Don't call set_gdbarch_dummy_id. * score-tdep.c (score_dummy_id): Delete. (score_gdbarch_init): Don't call set_gdbarch_dummy_id. * sh-tdep.c (sh_dummy_id): Delete. (sh_gdbarch_init): Don't call set_gdbarch_dummy_id. * tic6x-tdep.c (tic6x_dummy_id): Delete. (tic6x_gdbarch_init): Don't call set_gdbarch_dummy_id. * tilegx-tdep.c (tilegx_unwind_dummy_id): Delete. (tilegx_gdbarch_init): Don't call set_gdbarch_dummy_id. * v850-tdep.c (v850_dummy_id): Delete. (v850_gdbarch_init): Don't call set_gdbarch_dummy_id. * gdb/xstormy16-tdep.c (xstormy16_dummy_id): Delete. (xstormy16_gdbarch_init): Don't call set_gdbarch_dummy_id. --- gdb/ChangeLog | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ gdb/aarch64-tdep.c | 15 ------------ gdb/alpha-tdep.c | 18 -------------- gdb/arc-tdep.c | 14 ----------- gdb/arm-tdep.c | 15 ------------ gdb/bfin-tdep.c | 11 --------- gdb/cris-tdep.c | 13 ---------- gdb/dummy-frame.c | 16 +++++++++++++ gdb/dummy-frame.h | 6 +++++ gdb/frv-tdep.c | 13 ---------- gdb/ft32-tdep.c | 13 ---------- gdb/gdbarch.c | 14 +++-------- gdb/gdbarch.h | 2 -- gdb/gdbarch.sh | 3 ++- gdb/h8300-tdep.c | 8 ------- gdb/hppa-tdep.c | 9 ------- gdb/iq2000-tdep.c | 8 ------- gdb/lm32-tdep.c | 9 ------- gdb/m32r-tdep.c | 17 ------------- gdb/mep-tdep.c | 10 -------- gdb/mn10300-tdep.c | 10 -------- gdb/moxie-tdep.c | 13 ---------- gdb/msp430-tdep.c | 13 ---------- gdb/nds32-tdep.c | 11 --------- gdb/nios2-tdep.c | 11 --------- gdb/or1k-tdep.c | 10 -------- gdb/riscv-tdep.c | 10 -------- gdb/rs6000-tdep.c | 10 -------- gdb/rx-tdep.c | 10 -------- gdb/score-tdep.c | 9 ------- gdb/sh-tdep.c | 9 ------- gdb/tic6x-tdep.c | 12 ---------- gdb/tilegx-tdep.c | 12 ---------- gdb/v850-tdep.c | 9 ------- gdb/xstormy16-tdep.c | 9 ------- 35 files changed, 94 insertions(+), 345 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5bf169ca02d..c2f6957b461 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,70 @@ +2018-06-05 Andrew Burgess + + * aarch64-tdep.c (aarch64_dummy_id): Delete. + (aarch64_gdbarch_init): Don't call set_gdbarch_dummy_id. + * alpha-tdep.c (alpha_dummy_id): Delete. + (alpha_gdbarch_init): Don't call set_gdbarch_dummy_id. + * arc-tdep.c (arc_dummy_id): Delete. + (arc_gdbarch_init): Don't call set_gdbarch_dummy_id. + * arm-tdep.c (arm_dummy_id): Delete. + (arm_gdbarch_init): Don't call set_gdbarch_dummy_id. + * bfin-tdep.c (bfin_dummy_id): Delete. + (bfin_gdbarch_init): Don't call set_gdbarch_dummy_id. + * cris-tdep.c (cris_dummy_id): Delete. + (cris_gdbarch_init): Don't call set_gdbarch_dummy_id. + * dummy-frame.c (default_dummy_id): Defined new function. + * dummy-frame.h (default_dummy_id): Declare new function. + * frv-tdep.c (frv_dummy_id): Delete. + (frv_gdbarch_init): Don't call set_gdbarch_dummy_id. + * ft32-tdep.c (ft32_dummy_id): Delete. + (ft32_gdbarch_init): Don't call set_gdbarch_dummy_id. + * gdbarch.c: Regenerate. + * gdbarch.h: Regenerate. + * gdbarch.sh: Remove predicate function, and supply default for + dummy_id method. Add 'dummy-frame.h' header. + * h8300-tdep.c (h8300_dummy_id): Delete. + (h8300_gdbarch_init): Don't call set_gdbarch_dummy_id. + * hppa-tdep.c (hppa_dummy_id): Delete. + (hppa_gdbarch_init): Don't call set_gdbarch_dummy_id. + * iq2000-tdep.c (iq2000_dummy_id): Delete. + (iq2000_gdbarch_init): Don't call set_gdbarch_dummy_id. + * lm32-tdep.c (lm32_dummy_id): Delete. + (lm32_gdbarch_init): Don't call set_gdbarch_dummy_id. + * m32r-tdep.c (m32r_dummy_id): Delete. + (m32r_gdbarch_init): Don't call set_gdbarch_dummy_id. + * mep-tdep.c (mep_dummy_id): Delete. + (mep_gdbarch_init): Don't call set_gdbarch_dummy_id. + * mn10300-tdep.c (mn10300_dummy_id): Delete. + (mn10300_frame_unwind_init): Don't call set_gdbarch_dummy_id. + * moxie-tdep.c (moxie_dummy_id): Delete. + (moxie_gdbarch_init): Don't call set_gdbarch_dummy_id. + * msp430-tdep.c (msp430_dummy_id): Delete. + (msp430_gdbarch_init): Don't call set_gdbarch_dummy_id. + * nds32-tdep.c (nds32_dummy_id): Delete. + (nds32_gdbarch_init): Don't call set_gdbarch_dummy_id. + * nios2-tdep.c (nios2_dummy_id): Delete. + (nios2_gdbarch_init): Don't call set_gdbarch_dummy_id. + * or1k-tdep.c (or1k_dummy_id): Delete. + (or1k_gdbarch_init): Don't call set_gdbarch_dummy_id. + * riscv-tdep.c (riscv_dummy_id): Delete. + (riscv_gdbarch_init): Don't call set_gdbarch_dummy_id. + * rs6000-tdep.c (rs6000_dummy_id): Delete. + (rs6000_gdbarch_init): Don't call set_gdbarch_dummy_id. + * rx-tdep.c (rx_dummy_id): Delete. + (rx_gdbarch_init): Don't call set_gdbarch_dummy_id. + * score-tdep.c (score_dummy_id): Delete. + (score_gdbarch_init): Don't call set_gdbarch_dummy_id. + * sh-tdep.c (sh_dummy_id): Delete. + (sh_gdbarch_init): Don't call set_gdbarch_dummy_id. + * tic6x-tdep.c (tic6x_dummy_id): Delete. + (tic6x_gdbarch_init): Don't call set_gdbarch_dummy_id. + * tilegx-tdep.c (tilegx_unwind_dummy_id): Delete. + (tilegx_gdbarch_init): Don't call set_gdbarch_dummy_id. + * v850-tdep.c (v850_dummy_id): Delete. + (v850_gdbarch_init): Don't call set_gdbarch_dummy_id. + * gdb/xstormy16-tdep.c (xstormy16_dummy_id): Delete. + (xstormy16_gdbarch_init): Don't call set_gdbarch_dummy_id. + 2018-06-05 Andrew Burgess * arm-tdep.c (arm_unwind_pc): Delete. diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 1d837ec4771..71f5066e996 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -1000,20 +1000,6 @@ struct frame_base aarch64_normal_base = aarch64_normal_frame_base }; -/* Assuming THIS_FRAME is a dummy, return the frame ID of that - dummy frame. The frame ID's base needs to match the TOS value - saved by save_dummy_frame_tos () and returned from - aarch64_push_dummy_call, and the PC needs to match the dummy - frame's breakpoint. */ - -static struct frame_id -aarch64_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build (get_frame_register_unsigned (this_frame, - AARCH64_SP_REGNUM), - get_frame_pc (this_frame)); -} - /* Implement the "unwind_sp" gdbarch method. */ static CORE_ADDR @@ -2940,7 +2926,6 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_frame_align (gdbarch, aarch64_frame_align); /* Frame handling. */ - set_gdbarch_dummy_id (gdbarch, aarch64_dummy_id); set_gdbarch_unwind_sp (gdbarch, aarch64_unwind_sp); /* Advance PC across function entry code. */ diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c index 26b7e34ad23..f82cd8bd0bc 100644 --- a/gdb/alpha-tdep.c +++ b/gdb/alpha-tdep.c @@ -1462,21 +1462,6 @@ reinit_frame_cache_sfunc (const char *args, { reinit_frame_cache (); } - - -/* Assuming NEXT_FRAME->prev is a dummy, return the frame ID of that - dummy frame. The frame ID's base needs to match the TOS value - saved by save_dummy_frame_tos(), and the PC match the dummy frame's - breakpoint. */ - -static struct frame_id -alpha_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - ULONGEST base; - base = get_frame_register_unsigned (this_frame, ALPHA_SP_REGNUM); - return frame_id_build (base, get_frame_pc (this_frame)); -} - /* Helper routines for alpha*-nat.c files to move register sets to and from core files. The UNIQUE pointer is allowed to be NULL, as most @@ -1798,9 +1783,6 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Settings for calling functions in the inferior. */ set_gdbarch_push_dummy_call (gdbarch, alpha_push_dummy_call); - /* Methods for saving / extracting a dummy frame's ID. */ - set_gdbarch_dummy_id (gdbarch, alpha_dummy_id); - set_gdbarch_inner_than (gdbarch, core_addr_lessthan); set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c index fad91709786..569409fdf43 100644 --- a/gdb/arc-tdep.c +++ b/gdb/arc-tdep.c @@ -509,19 +509,6 @@ arc_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, *offset_ptr = 0; } -/* Implement the "dummy_id" gdbarch method. - - Tear down a dummy frame created by arc_push_dummy_call (). This data has - to be constructed manually from the data in our hand. The stack pointer - and program counter can be obtained from the frame info. */ - -static struct frame_id -arc_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build (get_frame_sp (this_frame), - get_frame_pc (this_frame)); -} - /* Implement the "push_dummy_call" gdbarch method. Stack Frame Layout @@ -2014,7 +2001,6 @@ arc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_ps_regnum (gdbarch, ARC_STATUS32_REGNUM); set_gdbarch_fp0_regnum (gdbarch, -1); /* No FPU registers. */ - set_gdbarch_dummy_id (gdbarch, arc_dummy_id); set_gdbarch_push_dummy_call (gdbarch, arc_push_dummy_call); set_gdbarch_push_dummy_code (gdbarch, arc_push_dummy_code); diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 45c5b36383a..933cd136941 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -3055,20 +3055,6 @@ struct frame_base arm_normal_base = { arm_normal_frame_base }; -/* Assuming THIS_FRAME is a dummy, return the frame ID of that - dummy frame. The frame ID's base needs to match the TOS value - saved by save_dummy_frame_tos() and returned from - arm_push_dummy_call, and the PC needs to match the dummy frame's - breakpoint. */ - -static struct frame_id -arm_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build (get_frame_register_unsigned (this_frame, - ARM_SP_REGNUM), - get_frame_pc (this_frame)); -} - static CORE_ADDR arm_unwind_sp (struct gdbarch *gdbarch, struct frame_info *this_frame) { @@ -9347,7 +9333,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_write_pc (gdbarch, arm_write_pc); /* Frame handling. */ - set_gdbarch_dummy_id (gdbarch, arm_dummy_id); set_gdbarch_unwind_sp (gdbarch, arm_unwind_sp); frame_base_set_default (gdbarch, &arm_normal_base); diff --git a/gdb/bfin-tdep.c b/gdb/bfin-tdep.c index b60dd00dbb5..690335b4a55 100644 --- a/gdb/bfin-tdep.c +++ b/gdb/bfin-tdep.c @@ -756,16 +756,6 @@ static const struct frame_base bfin_frame_base = bfin_frame_args_address }; -static struct frame_id -bfin_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp; - - sp = get_frame_register_unsigned (this_frame, BFIN_SP_REGNUM); - - return frame_id_build (sp, get_frame_pc (this_frame)); -} - static CORE_ADDR bfin_frame_align (struct gdbarch *gdbarch, CORE_ADDR address) { @@ -820,7 +810,6 @@ bfin_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_dwarf2_reg_to_regnum (gdbarch, bfin_reg_to_regnum); set_gdbarch_register_name (gdbarch, bfin_register_name); set_gdbarch_register_type (gdbarch, bfin_register_type); - set_gdbarch_dummy_id (gdbarch, bfin_dummy_id); set_gdbarch_push_dummy_call (gdbarch, bfin_push_dummy_call); set_gdbarch_believe_pcc_promotion (gdbarch, 1); set_gdbarch_return_value (gdbarch, bfin_return_value); diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c index d86d9830b8d..a731a673c3f 100644 --- a/gdb/cris-tdep.c +++ b/gdb/cris-tdep.c @@ -764,18 +764,6 @@ cris_frame_prev_register (struct frame_info *this_frame, return trad_frame_get_prev_register (this_frame, info->saved_regs, regnum); } -/* Assuming THIS_FRAME is a dummy, return the frame ID of that dummy - frame. The frame ID's base needs to match the TOS value saved by - save_dummy_frame_tos(), and the PC match the dummy frame's breakpoint. */ - -static struct frame_id -cris_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp; - sp = get_frame_register_unsigned (this_frame, gdbarch_sp_regnum (gdbarch)); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - static CORE_ADDR cris_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) { @@ -4085,7 +4073,6 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_sw_breakpoint_from_kind (gdbarch, cris_sw_breakpoint_from_kind); set_gdbarch_unwind_sp (gdbarch, cris_unwind_sp); - set_gdbarch_dummy_id (gdbarch, cris_dummy_id); if (tdep->cris_dwarf2_cfi == 1) { diff --git a/gdb/dummy-frame.c b/gdb/dummy-frame.c index 82e7251ccec..4df4f4eec35 100644 --- a/gdb/dummy-frame.c +++ b/gdb/dummy-frame.c @@ -385,6 +385,22 @@ const struct frame_unwind dummy_frame_unwind = dummy_frame_sniffer, }; +/* Default implementation of gdbarch_dummy_id. Generate frame_id for + THIS_FRAME assuming that it is a dummy frame. A dummy frame is created + before an inferior call, the frame_id returned here must match the base + address returned by gdbarch_push_dummy_call and the frame's pc must + match the dummy frames breakpoint address. */ + +struct frame_id +default_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) +{ + CORE_ADDR sp, pc; + + sp = get_frame_sp (this_frame); + pc = get_frame_pc (this_frame); + return frame_id_build (sp, pc); +} + static void fprint_dummy_frames (struct ui_file *file) { diff --git a/gdb/dummy-frame.h b/gdb/dummy-frame.h index cad99609927..342e97a327b 100644 --- a/gdb/dummy-frame.h +++ b/gdb/dummy-frame.h @@ -71,4 +71,10 @@ extern void register_dummy_frame_dtor (struct frame_id dummy_id, ptid_t ptid, extern int find_dummy_frame_dtor (dummy_frame_dtor_ftype *dtor, void *dtor_data); +/* Default implementation of gdbarch_dummy_id. Generate a dummy frame_id + for THIS_FRAME assuming that the frame is a dummy frame. */ + +extern struct frame_id default_dummy_id (struct gdbarch *gdbarch, + struct frame_info *this_frame); + #endif /* !defined (DUMMY_FRAME_H) */ diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c index 8170bf94fdb..c967d2a6d16 100644 --- a/gdb/frv-tdep.c +++ b/gdb/frv-tdep.c @@ -1438,18 +1438,6 @@ frv_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame) return frame_unwind_register_unsigned (next_frame, sp_regnum); } - -/* Assuming THIS_FRAME is a dummy, return the frame ID of that dummy - frame. The frame ID's base needs to match the TOS value saved by - save_dummy_frame_tos(), and the PC match the dummy frame's breakpoint. */ - -static struct frame_id -frv_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, sp_regnum); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - static struct gdbarch * frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) { @@ -1541,7 +1529,6 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Settings for calling functions in the inferior. */ set_gdbarch_push_dummy_call (gdbarch, frv_push_dummy_call); - set_gdbarch_dummy_id (gdbarch, frv_dummy_id); /* Settings that should be unnecessary. */ set_gdbarch_inner_than (gdbarch, core_addr_lessthan); diff --git a/gdb/ft32-tdep.c b/gdb/ft32-tdep.c index 5c0a3384dbd..79cf1a08c1d 100644 --- a/gdb/ft32-tdep.c +++ b/gdb/ft32-tdep.c @@ -559,14 +559,6 @@ static const struct frame_base ft32_frame_base = ft32_frame_base_address }; -static struct frame_id -ft32_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, FT32_SP_REGNUM); - - return frame_id_build (sp, get_frame_pc (this_frame)); -} - /* Allocate and initialize the ft32 gdbarch object. */ static struct gdbarch * @@ -614,11 +606,6 @@ ft32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_base_set_default (gdbarch, &ft32_frame_base); - /* Methods for saving / extracting a dummy frame's ID. The ID's - stack address must match the SP value returned by - PUSH_DUMMY_CALL, and saved by generic_save_dummy_frame_tos. */ - set_gdbarch_dummy_id (gdbarch, ft32_dummy_id); - /* Hook in ABI-specific overrides, if they have been registered. */ gdbarch_init_osabi (info, gdbarch); diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index dcd2d59f16c..1ba256f921a 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -49,6 +49,7 @@ #include "objfiles.h" #include "auxv.h" #include "frame-unwind.h" +#include "dummy-frame.h" /* Static function declarations */ @@ -408,6 +409,7 @@ gdbarch_alloc (const struct gdbarch_info *info, gdbarch->ecoff_reg_to_regnum = no_op_reg_to_regnum; gdbarch->sdb_reg_to_regnum = no_op_reg_to_regnum; gdbarch->dwarf2_reg_to_regnum = no_op_reg_to_regnum; + gdbarch->dummy_id = default_dummy_id; gdbarch->deprecated_fp_regnum = -1; gdbarch->call_dummy_location = AT_ENTRY_POINT; gdbarch->code_of_frame_writable = default_code_of_frame_writable; @@ -571,7 +573,7 @@ verify_gdbarch (struct gdbarch *gdbarch) if (gdbarch->register_name == 0) log.puts ("\n\tregister_name"); /* Skip verify of register_type, has predicate. */ - /* Skip verify of dummy_id, has predicate. */ + /* Skip verify of dummy_id, invalid_p == 0 */ /* Skip verify of deprecated_fp_regnum, invalid_p == 0 */ /* Skip verify of push_dummy_call, has predicate. */ /* Skip verify of call_dummy_location, invalid_p == 0 */ @@ -951,9 +953,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) fprintf_unfiltered (file, "gdbarch_dump: dtrace_probe_is_enabled = <%s>\n", host_address_to_string (gdbarch->dtrace_probe_is_enabled)); - fprintf_unfiltered (file, - "gdbarch_dump: gdbarch_dummy_id_p() = %d\n", - gdbarch_dummy_id_p (gdbarch)); fprintf_unfiltered (file, "gdbarch_dump: dummy_id = <%s>\n", host_address_to_string (gdbarch->dummy_id)); @@ -2301,13 +2300,6 @@ set_gdbarch_register_type (struct gdbarch *gdbarch, gdbarch->register_type = register_type; } -int -gdbarch_dummy_id_p (struct gdbarch *gdbarch) -{ - gdb_assert (gdbarch != NULL); - return gdbarch->dummy_id != NULL; -} - struct frame_id gdbarch_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) { diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index c71974f2b36..4d994a17b50 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -378,8 +378,6 @@ typedef struct type * (gdbarch_register_type_ftype) (struct gdbarch *gdbarch, in extern struct type * gdbarch_register_type (struct gdbarch *gdbarch, int reg_nr); extern void set_gdbarch_register_type (struct gdbarch *gdbarch, gdbarch_register_type_ftype *register_type); -extern int gdbarch_dummy_id_p (struct gdbarch *gdbarch); - typedef struct frame_id (gdbarch_dummy_id_ftype) (struct gdbarch *gdbarch, struct frame_info *this_frame); extern struct frame_id gdbarch_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame); extern void set_gdbarch_dummy_id (struct gdbarch *gdbarch, gdbarch_dummy_id_ftype *dummy_id); diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index 19aaa4200d2..6db8b0eb50a 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -480,7 +480,7 @@ m;const char *;register_name;int regnr;regnr;;0 # use "register_type". M;struct type *;register_type;int reg_nr;reg_nr -M;struct frame_id;dummy_id;struct frame_info *this_frame;this_frame +m;struct frame_id;dummy_id;struct frame_info *this_frame;this_frame;;default_dummy_id;;0 # Implement DUMMY_ID and PUSH_DUMMY_CALL, then delete # deprecated_fp_regnum. v;int;deprecated_fp_regnum;;;-1;-1;;0 @@ -1658,6 +1658,7 @@ cat <saved_regs, the addresses of the saved registers of frame described by FRAME_INFO. This includes special registers such as pc and fp saved in special ways @@ -546,7 +538,6 @@ lm32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_frame_align (gdbarch, lm32_frame_align); frame_base_set_default (gdbarch, &lm32_frame_base); set_gdbarch_unwind_sp (gdbarch, lm32_unwind_sp); - set_gdbarch_dummy_id (gdbarch, lm32_dummy_id); frame_unwind_append_unwinder (gdbarch, &lm32_frame_unwind); /* Breakpoints. */ diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c index 9bfff6b0675..77019162d22 100644 --- a/gdb/m32r-tdep.c +++ b/gdb/m32r-tdep.c @@ -864,18 +864,6 @@ static const struct frame_base m32r_frame_base = { m32r_frame_base_address }; -/* Assuming THIS_FRAME is a dummy, return the frame ID of that dummy - frame. The frame ID's base needs to match the TOS value saved by - save_dummy_frame_tos(), and the PC match the dummy frame's breakpoint. */ - -static struct frame_id -m32r_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, M32R_SP_REGNUM); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - - static gdbarch_init_ftype m32r_gdbarch_init; static struct gdbarch * @@ -920,11 +908,6 @@ m32r_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_base_set_default (gdbarch, &m32r_frame_base); - /* Methods for saving / extracting a dummy frame's ID. The ID's - stack address must match the SP value returned by - PUSH_DUMMY_CALL, and saved by generic_save_dummy_frame_tos. */ - set_gdbarch_dummy_id (gdbarch, m32r_dummy_id); - /* Hook in ABI-specific overrides, if they have been registered. */ gdbarch_init_osabi (info, gdbarch); diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c index 0f205988680..2e434daa41e 100644 --- a/gdb/mep-tdep.c +++ b/gdb/mep-tdep.c @@ -2328,15 +2328,6 @@ mep_push_dummy_call (struct gdbarch *gdbarch, struct value *function, return sp; } - -static struct frame_id -mep_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, MEP_SP_REGNUM); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - - /* Initialization. */ @@ -2465,7 +2456,6 @@ mep_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Inferior function calls. */ set_gdbarch_frame_align (gdbarch, mep_frame_align); set_gdbarch_push_dummy_call (gdbarch, mep_push_dummy_call); - set_gdbarch_dummy_id (gdbarch, mep_dummy_id); return gdbarch; } diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c index 8b72c287ab4..3b366e9322d 100644 --- a/gdb/mn10300-tdep.c +++ b/gdb/mn10300-tdep.c @@ -1098,15 +1098,6 @@ mn10300_frame_base (struct frame_info *this_frame, void **this_prologue_cache) } } -/* Here is a dummy implementation. */ -static struct frame_id -mn10300_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, E_SP_REGNUM); - CORE_ADDR pc = get_frame_register_unsigned (this_frame, E_PC_REGNUM); - return frame_id_build (sp, pc); -} - static void mn10300_frame_this_id (struct frame_info *this_frame, void **this_prologue_cache, @@ -1163,7 +1154,6 @@ mn10300_frame_unwind_init (struct gdbarch *gdbarch) { dwarf2_append_unwinders (gdbarch); frame_unwind_append_unwinder (gdbarch, &mn10300_frame_unwind); - set_gdbarch_dummy_id (gdbarch, mn10300_dummy_id); set_gdbarch_unwind_sp (gdbarch, mn10300_unwind_sp); } diff --git a/gdb/moxie-tdep.c b/gdb/moxie-tdep.c index 515357c8ea3..ca235050df5 100644 --- a/gdb/moxie-tdep.c +++ b/gdb/moxie-tdep.c @@ -621,14 +621,6 @@ static const struct frame_base moxie_frame_base = { moxie_frame_base_address }; -static struct frame_id -moxie_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, MOXIE_SP_REGNUM); - - return frame_id_build (sp, get_frame_pc (this_frame)); -} - /* Parse the current instruction and record the values of the registers and memory that will be changed in current instruction to "record_arch_list". Return -1 if something wrong. */ @@ -1101,11 +1093,6 @@ moxie_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_base_set_default (gdbarch, &moxie_frame_base); - /* Methods for saving / extracting a dummy frame's ID. The ID's - stack address must match the SP value returned by - PUSH_DUMMY_CALL, and saved by generic_save_dummy_frame_tos. */ - set_gdbarch_dummy_id (gdbarch, moxie_dummy_id); - /* Hook in ABI-specific overrides, if they have been registered. */ gdbarch_init_osabi (info, gdbarch); diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c index 2e30a648de2..3f09b594f8b 100644 --- a/gdb/msp430-tdep.c +++ b/gdb/msp430-tdep.c @@ -643,18 +643,6 @@ msp430_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) } -/* Implement the "dummy_id" gdbarch method. */ - -static struct frame_id -msp430_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return - frame_id_build (get_frame_register_unsigned - (this_frame, MSP430_SP_REGNUM), - get_frame_pc (this_frame)); -} - - /* Implement the "push_dummy_call" gdbarch method. */ static CORE_ADDR @@ -993,7 +981,6 @@ msp430_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_unwind_append_unwinder (gdbarch, &msp430_unwind); /* Dummy frames, return values. */ - set_gdbarch_dummy_id (gdbarch, msp430_dummy_id); set_gdbarch_push_dummy_call (gdbarch, msp430_push_dummy_call); set_gdbarch_return_value (gdbarch, msp430_return_value); diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c index 59cdacdad82..5df7054f621 100644 --- a/gdb/nds32-tdep.c +++ b/gdb/nds32-tdep.c @@ -1388,16 +1388,6 @@ static const struct frame_unwind nds32_epilogue_frame_unwind = nds32_epilogue_frame_sniffer }; -/* Implement the "dummy_id" gdbarch method. */ - -static struct frame_id -nds32_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, NDS32_SP_REGNUM); - - return frame_id_build (sp, get_frame_pc (this_frame)); -} - /* Implement the "unwind_sp" gdbarch method. */ static CORE_ADDR @@ -2136,7 +2126,6 @@ nds32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_push_dummy_call (gdbarch, nds32_push_dummy_call); set_gdbarch_return_value (gdbarch, nds32_return_value); - set_gdbarch_dummy_id (gdbarch, nds32_dummy_id); set_gdbarch_skip_prologue (gdbarch, nds32_skip_prologue); set_gdbarch_inner_than (gdbarch, core_addr_lessthan); diff --git a/gdb/nios2-tdep.c b/gdb/nios2-tdep.c index b6533d57719..f41fde2da2f 100644 --- a/gdb/nios2-tdep.c +++ b/gdb/nios2-tdep.c @@ -1798,16 +1798,6 @@ nios2_return_value (struct gdbarch *gdbarch, struct value *function, return RETURN_VALUE_REGISTER_CONVENTION; } -/* Implement the dummy_id gdbarch method. */ - -static struct frame_id -nios2_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build - (get_frame_register_unsigned (this_frame, NIOS2_SP_REGNUM), - get_frame_pc (this_frame)); -} - /* Implement the push_dummy_call gdbarch method. */ static CORE_ADDR @@ -2310,7 +2300,6 @@ nios2_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_breakpoint_kind_from_pc (gdbarch, nios2_breakpoint_kind_from_pc); set_gdbarch_sw_breakpoint_from_kind (gdbarch, nios2_sw_breakpoint_from_kind); - set_gdbarch_dummy_id (gdbarch, nios2_dummy_id); set_gdbarch_unwind_sp (gdbarch, nios2_unwind_sp); /* The dwarf2 unwinder will normally produce the best results if diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c index c5104e3959d..faefa0c151f 100644 --- a/gdb/or1k-tdep.c +++ b/gdb/or1k-tdep.c @@ -788,15 +788,6 @@ or1k_push_dummy_call (struct gdbarch *gdbarch, struct value *function, return sp; } - -/* Implement the dummy_id gdbarch method. */ - -static struct frame_id -or1k_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build (get_frame_sp (this_frame), - get_frame_pc (this_frame)); -} /* Support functions for frame handling. */ @@ -1184,7 +1175,6 @@ or1k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_call_dummy_location (gdbarch, ON_STACK); set_gdbarch_push_dummy_code (gdbarch, or1k_push_dummy_code); set_gdbarch_push_dummy_call (gdbarch, or1k_push_dummy_call); - set_gdbarch_dummy_id (gdbarch, or1k_dummy_id); /* Frame unwinders. Use DWARF debug info if available, otherwise use our own unwinder. */ diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c index c732f2cbe27..7ef04627bef 100644 --- a/gdb/riscv-tdep.c +++ b/gdb/riscv-tdep.c @@ -2330,15 +2330,6 @@ riscv_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame) return frame_unwind_register_unsigned (next_frame, RISCV_SP_REGNUM); } -/* Implement the dummy_id gdbarch method. */ - -static struct frame_id -riscv_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build (get_frame_register_signed (this_frame, RISCV_SP_REGNUM), - get_frame_pc (this_frame)); -} - /* Generate, or return the cached frame cache for the RiscV frame unwinder. */ @@ -2542,7 +2533,6 @@ riscv_gdbarch_init (struct gdbarch_info info, set_gdbarch_call_dummy_location (gdbarch, ON_STACK); set_gdbarch_push_dummy_code (gdbarch, riscv_push_dummy_code); set_gdbarch_push_dummy_call (gdbarch, riscv_push_dummy_call); - set_gdbarch_dummy_id (gdbarch, riscv_dummy_id); /* Frame unwinders. Use DWARF debug info if available, otherwise use our own unwinder. */ diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index cf884b7f34f..26ccedb082c 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -3098,14 +3098,6 @@ find_variant_by_arch (enum bfd_architecture arch, unsigned long mach) } -static struct frame_id -rs6000_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build (get_frame_register_unsigned - (this_frame, gdbarch_sp_regnum (gdbarch)), - get_frame_pc (this_frame)); -} - struct rs6000_frame_cache { CORE_ADDR base; @@ -6420,7 +6412,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) case GDB_OSABI_UNKNOWN: frame_unwind_append_unwinder (gdbarch, &rs6000_epilogue_frame_unwind); frame_unwind_append_unwinder (gdbarch, &rs6000_frame_unwind); - set_gdbarch_dummy_id (gdbarch, rs6000_dummy_id); frame_base_append_sniffer (gdbarch, rs6000_frame_base_sniffer); break; default: @@ -6428,7 +6419,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_unwind_append_unwinder (gdbarch, &rs6000_epilogue_frame_unwind); frame_unwind_append_unwinder (gdbarch, &rs6000_frame_unwind); - set_gdbarch_dummy_id (gdbarch, rs6000_dummy_id); frame_base_append_sniffer (gdbarch, rs6000_frame_base_sniffer); } diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c index 3d982795db4..07e83d0e11e 100644 --- a/gdb/rx-tdep.c +++ b/gdb/rx-tdep.c @@ -761,15 +761,6 @@ rx_unwind_sp (struct gdbarch *gdbarch, struct frame_info *this_frame) return sp; } -/* Implement the "dummy_id" gdbarch method. */ -static struct frame_id -rx_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return - frame_id_build (get_frame_register_unsigned (this_frame, RX_SP_REGNUM), - get_frame_pc (this_frame)); -} - /* Implement the "push_dummy_call" gdbarch method. */ static CORE_ADDR rx_push_dummy_call (struct gdbarch *gdbarch, struct value *function, @@ -1137,7 +1128,6 @@ rx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Methods for saving / extracting a dummy frame's ID. The ID's stack address must match the SP value returned by PUSH_DUMMY_CALL, and saved by generic_save_dummy_frame_tos. */ - set_gdbarch_dummy_id (gdbarch, rx_dummy_id); set_gdbarch_push_dummy_call (gdbarch, rx_push_dummy_call); set_gdbarch_return_value (gdbarch, rx_return_value); diff --git a/gdb/score-tdep.c b/gdb/score-tdep.c index e47d7ce18fa..f2d831899d1 100644 --- a/gdb/score-tdep.c +++ b/gdb/score-tdep.c @@ -472,14 +472,6 @@ score_return_value (struct gdbarch *gdbarch, struct value *function, } } -static struct frame_id -score_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build (get_frame_register_unsigned (this_frame, - SCORE_SP_REGNUM), - get_frame_pc (this_frame)); -} - static int score_type_needs_double_align (struct type *type) { @@ -1511,7 +1503,6 @@ score_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Dummy frame hooks. */ set_gdbarch_return_value (gdbarch, score_return_value); set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT); - set_gdbarch_dummy_id (gdbarch, score_dummy_id); set_gdbarch_push_dummy_call (gdbarch, score_push_dummy_call); /* Normal frame hooks. */ diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c index 6dd7e575e64..a65fd170c02 100644 --- a/gdb/sh-tdep.c +++ b/gdb/sh-tdep.c @@ -1982,14 +1982,6 @@ sh_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame) gdbarch_sp_regnum (gdbarch)); } -static struct frame_id -sh_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, - gdbarch_sp_regnum (gdbarch)); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - static CORE_ADDR sh_frame_base_address (struct frame_info *this_frame, void **this_cache) { @@ -2299,7 +2291,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_frame_align (gdbarch, sh_frame_align); set_gdbarch_unwind_sp (gdbarch, sh_unwind_sp); - set_gdbarch_dummy_id (gdbarch, sh_dummy_id); frame_base_set_default (gdbarch, &sh_frame_base); set_gdbarch_stack_frame_destroyed_p (gdbarch, sh_stack_frame_destroyed_p); diff --git a/gdb/tic6x-tdep.c b/gdb/tic6x-tdep.c index 1d2671f155f..84fad648db1 100644 --- a/gdb/tic6x-tdep.c +++ b/gdb/tic6x-tdep.c @@ -801,16 +801,6 @@ tic6x_return_value (struct gdbarch *gdbarch, struct value *function, return RETURN_VALUE_REGISTER_CONVENTION; } -/* This is the implementation of gdbarch method dummy_id. */ - -static struct frame_id -tic6x_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - return frame_id_build - (get_frame_register_unsigned (this_frame, TIC6X_SP_REGNUM), - get_frame_pc (this_frame)); -} - /* Get the alignment requirement of TYPE. */ static int @@ -1292,8 +1282,6 @@ tic6x_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_return_value (gdbarch, tic6x_return_value); - set_gdbarch_dummy_id (gdbarch, tic6x_dummy_id); - /* Enable inferior call support. */ set_gdbarch_push_dummy_call (gdbarch, tic6x_push_dummy_call); diff --git a/gdb/tilegx-tdep.c b/gdb/tilegx-tdep.c index 5885f60dbca..f8a8153bb3e 100644 --- a/gdb/tilegx-tdep.c +++ b/gdb/tilegx-tdep.c @@ -936,17 +936,6 @@ tilegx_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame) return frame_unwind_register_unsigned (next_frame, TILEGX_SP_REGNUM); } -static struct frame_id -tilegx_unwind_dummy_id (struct gdbarch *gdbarch, - struct frame_info *this_frame) -{ - CORE_ADDR sp; - - sp = get_frame_register_unsigned (this_frame, TILEGX_SP_REGNUM); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - - /* We cannot read/write the "special" registers. */ static int @@ -1022,7 +1011,6 @@ tilegx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Frame Info. */ set_gdbarch_unwind_sp (gdbarch, tilegx_unwind_sp); - set_gdbarch_dummy_id (gdbarch, tilegx_unwind_dummy_id); set_gdbarch_frame_align (gdbarch, tilegx_frame_align); frame_base_set_default (gdbarch, &tilegx_frame_base); diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c index 0f08c64f1d1..6434ceb1de4 100644 --- a/gdb/v850-tdep.c +++ b/gdb/v850-tdep.c @@ -1333,14 +1333,6 @@ v850_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame) gdbarch_sp_regnum (gdbarch)); } -static struct frame_id -v850_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, - gdbarch_sp_regnum (gdbarch)); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - static CORE_ADDR v850_frame_base_address (struct frame_info *this_frame, void **this_cache) { @@ -1458,7 +1450,6 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_frame_align (gdbarch, v850_frame_align); set_gdbarch_unwind_sp (gdbarch, v850_unwind_sp); - set_gdbarch_dummy_id (gdbarch, v850_dummy_id); frame_base_set_default (gdbarch, &v850_frame_base); /* Hook in ABI-specific overrides, if they have been registered. */ diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c index 45369cdf56a..ee378600958 100644 --- a/gdb/xstormy16-tdep.c +++ b/gdb/xstormy16-tdep.c @@ -757,14 +757,6 @@ xstormy16_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame) return frame_unwind_register_unsigned (next_frame, E_SP_REGNUM); } -static struct frame_id -xstormy16_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) -{ - CORE_ADDR sp = get_frame_register_unsigned (this_frame, E_SP_REGNUM); - return frame_id_build (sp, get_frame_pc (this_frame)); -} - - /* Function: xstormy16_gdbarch_init Initializer function for the xstormy16 gdbarch vector. Called by gdbarch. Sets up the gdbarch vector(s) for this target. */ @@ -819,7 +811,6 @@ xstormy16_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) * Frame Info */ set_gdbarch_unwind_sp (gdbarch, xstormy16_unwind_sp); - set_gdbarch_dummy_id (gdbarch, xstormy16_dummy_id); set_gdbarch_frame_align (gdbarch, xstormy16_frame_align); frame_base_set_default (gdbarch, &xstormy16_frame_base);