From patchwork Tue Apr 4 10:12:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Hayward X-Patchwork-Id: 19811 Received: (qmail 43075 invoked by alias); 4 Apr 2017 10:12: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 43004 invoked by uid 89); 4 Apr 2017 10:12:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=24957 X-HELO: EUR02-VE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr20061.outbound.protection.outlook.com (HELO EUR02-VE1-obe.outbound.protection.outlook.com) (40.107.2.61) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 04 Apr 2017 10:12:15 +0000 Received: from AM3PR08MB0101.eurprd08.prod.outlook.com (10.160.211.19) by AM3PR08MB0102.eurprd08.prod.outlook.com (10.160.211.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10; Tue, 4 Apr 2017 10:12:14 +0000 Received: from AM3PR08MB0101.eurprd08.prod.outlook.com ([fe80::5931:f431:f97d:943d]) by AM3PR08MB0101.eurprd08.prod.outlook.com ([fe80::5931:f431:f97d:943d%16]) with mapi id 15.01.1005.018; Tue, 4 Apr 2017 10:12:13 +0000 From: Alan Hayward To: "gdb-patches@sourceware.org" CC: nd Subject: [PATCH 2/11] Add IA64_MAX_REGISTER_SIZE Date: Tue, 4 Apr 2017 10:12:13 +0000 Message-ID: authentication-results: sourceware.org; dkim=none (message not signed) header.d=none; sourceware.org; dmarc=none action=none header.from=arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-microsoft-exchange-diagnostics: 1; AM3PR08MB0102; 7:bV9pt9970CYYd5aa0XK2oNa+iGxsIiT96AmHaDvjYyVX/0joaBOmfZ32bSiWafdU8JtRYIn1tUZ4O5Wqzr3n/FdJr7n4TN44lDOnxLKgkRGOdBesWXsC2JN4QDb+daf5sduni7R7v66melueS5XtqvXCQyljgTsPEU2NnGye3BU9e5HNwjquD9TQDzFaSFAxZvRhDAh+5Fo2PFD9p4j9Hpr8tGrpPMqONDPb7f6HhcjlXetLqyNC/7/jEGNwKNZFo7Pt3hdnjpqEgoZQi/ZbN7X0IzTijPcu7OaJ68f4yD9kVQ2vrHUszMU45BiAKpMJHU7Y/E+IWdssXGUMkxzF6w==; 20:gn7eFUe9ifEZG3/33G0guivWJzt4pxiyYLXj4DRPQHsBUAhpXa8dJSNhXGI2IU4xQNZfbzzp8OMGsANMMjjr8jh4RWR2OsfXthtS0au8EjojtiSjnZcj/pFC6h5qQmUB436qG10wfMwOAAr9H3CI4pS3YQ7spx6D2j/BNlDQWIM= x-ms-office365-filtering-correlation-id: 0f77a918-66b2-4c10-4138-08d47b431081 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(48565401081)(201703131423075)(201703031133081)(201702281549075); SRVR:AM3PR08MB0102; nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(20161123564025)(20161123562025)(6072148); SRVR:AM3PR08MB0102; BCL:0; PCL:0; RULEID:; SRVR:AM3PR08MB0102; x-forefront-prvs: 0267E514F9 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(39410400002)(39860400002)(39450400003)(39850400002)(39400400002)(39840400002)(377424004)(8936002)(2351001)(4326008)(81166006)(8676002)(25786009)(6916009)(5250100002)(2906002)(86362001)(50986999)(33656002)(2900100001)(54356999)(189998001)(3660700001)(3846002)(110136004)(38730400002)(6486002)(83716003)(6506006)(66066001)(36756003)(7736002)(99286003)(5660300001)(5640700003)(82746002)(6436002)(53936002)(6116002)(305945005)(3280700002)(6512007)(102836003)(2501003)(15760500002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM3PR08MB0102; H:AM3PR08MB0101.eurprd08.prod.outlook.com; FPR:; SPF:None; MLV:sfv; LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-ID: <2B567A5E89D2CD4994F74F384862C3BF@eurprd08.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Apr 2017 10:12:13.5083 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR08MB0102 Max size set to 128bits, which I determined using regformats/reg-ia64.dat Tested on a --enable-targets=all build using make check with board files unix and native-gdbserver. I do not have an IA64 machine to test on. Ok to commit? Alan. 2017-04-04 Alan Hayward * ia64-tdep.c (ia64_register_to_value): Use IA64_MAX_REGISTER_SIZE (ia64_value_to_register): Likewise. (examine_prologue): Likewise. (ia64_sigtramp_frame_prev_register): Likewise. (ia64_access_reg): Likewise. (ia64_access_rse_reg): Likewise. (ia64_libunwind_frame_prev_register): Likewise. (ia64_extract_return_value): Likewise. (ia64_store_return_value): Likewise. (ia64_push_dummy_call): Likewise. * ia64-tdep.h: Add IA64_MAX_REGISTER_SIZE diff --git a/gdb/ia64-tdep.h b/gdb/ia64-tdep.h index a9a55ab00f1030f1a081a8afa8fc6061f9fb1d12..18c03c5b3cb72cd20e1bb091f82763b3c351873b 100644 --- a/gdb/ia64-tdep.h +++ b/gdb/ia64-tdep.h @@ -199,6 +199,9 @@ #define IA64_NAT32_REGNUM (IA64_NAT0_REGNUM + 32) #define IA64_NAT127_REGNUM (IA64_NAT0_REGNUM + 127) +/* Big enough to hold the size of the largest register in bytes. */ +#define IA64_MAX_REGISTER_SIZE 16 + struct frame_info; struct regcache; diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 4c53bc6b05a011e4995c94b669b4f11108a12a38..031c4548968304bc749e6ca957d561a4af2256d5 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -1227,7 +1227,7 @@ ia64_register_to_value (struct frame_info *frame, int regnum, int *optimizedp, int *unavailablep) { struct gdbarch *gdbarch = get_frame_arch (frame); - gdb_byte in[MAX_REGISTER_SIZE]; + gdb_byte in[IA64_MAX_REGISTER_SIZE]; /* Convert to TYPE. */ if (!get_frame_register_bytes (frame, regnum, 0, @@ -1245,7 +1245,7 @@ ia64_value_to_register (struct frame_info *frame, int regnum, struct type *valtype, const gdb_byte *in) { struct gdbarch *gdbarch = get_frame_arch (frame); - gdb_byte out[MAX_REGISTER_SIZE]; + gdb_byte out[IA64_MAX_REGISTER_SIZE]; convert_typed_floating (in, valtype, out, ia64_ext_type (gdbarch)); put_frame_register (frame, regnum, out); } @@ -1516,7 +1516,7 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc, else if (qp == 0 && rN == 2 && ((rM == fp_reg && fp_reg != 0) || rM == 12)) { - gdb_byte buf[MAX_REGISTER_SIZE]; + gdb_byte buf[IA64_MAX_REGISTER_SIZE]; CORE_ADDR saved_sp = 0; /* adds r2, spilloffset, rFramePointer or @@ -2289,7 +2289,7 @@ static struct value * ia64_sigtramp_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum) { - gdb_byte buf[MAX_REGISTER_SIZE]; + gdb_byte buf[IA64_MAX_REGISTER_SIZE]; struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); @@ -2495,7 +2495,7 @@ ia64_access_reg (unw_addr_space_t as, unw_regnum_t uw_regnum, unw_word_t *val, struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); long new_sof, old_sof; - gdb_byte buf[MAX_REGISTER_SIZE]; + gdb_byte buf[IA64_MAX_REGISTER_SIZE]; /* We never call any libunwind routines that need to write registers. */ gdb_assert (!write); @@ -2575,7 +2575,7 @@ ia64_access_rse_reg (unw_addr_space_t as, unw_regnum_t uw_regnum, struct gdbarch *gdbarch = get_regcache_arch (regcache); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); long new_sof, old_sof; - gdb_byte buf[MAX_REGISTER_SIZE]; + gdb_byte buf[IA64_MAX_REGISTER_SIZE]; /* We never call any libunwind routines that need to write registers. */ gdb_assert (!write); @@ -2982,7 +2982,7 @@ ia64_libunwind_frame_prev_register (struct frame_info *this_frame, { int rrb_pr = 0; ULONGEST cfm; - gdb_byte buf[MAX_REGISTER_SIZE]; + gdb_byte buf[IA64_MAX_REGISTER_SIZE]; /* Fetch predicate register rename base from current frame marker for this frame. */ @@ -3229,7 +3229,7 @@ ia64_extract_return_value (struct type *type, struct regcache *regcache, float_elt_type = is_float_or_hfa_type (type); if (float_elt_type != NULL) { - gdb_byte from[MAX_REGISTER_SIZE]; + gdb_byte from[IA64_MAX_REGISTER_SIZE]; int offset = 0; int regnum = IA64_FR8_REGNUM; int n = TYPE_LENGTH (type) / TYPE_LENGTH (float_elt_type); @@ -3294,7 +3294,7 @@ ia64_store_return_value (struct type *type, struct regcache *regcache, float_elt_type = is_float_or_hfa_type (type); if (float_elt_type != NULL) { - gdb_byte to[MAX_REGISTER_SIZE]; + gdb_byte to[IA64_MAX_REGISTER_SIZE]; int offset = 0; int regnum = IA64_FR8_REGNUM; int n = TYPE_LENGTH (type) / TYPE_LENGTH (float_elt_type); @@ -3856,7 +3856,7 @@ ia64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, len = TYPE_LENGTH (type); while (len > 0 && floatreg < IA64_FR16_REGNUM) { - gdb_byte to[MAX_REGISTER_SIZE]; + gdb_byte to[IA64_MAX_REGISTER_SIZE]; convert_typed_floating (value_contents (arg) + argoffset, float_elt_type, to, ia64_ext_type (gdbarch));