From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by sourceware.org (Postfix) with ESMTPS id 8FB143858D1E for ; Tue, 20 Jun 2023 15:55:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8FB143858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1687276510; x=1718812510; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=qHk58Wxy53hMFQgB7YjfaGvQxaIfi1+9fwmspVr/r/0=; b=WJaJzt/he78UnDBFCCVnWlmXGj1WVOsU1XbkRdtsZ63XG1HjltgE1kld y8yrgMh/u44rZ9gHzTSpt/B4VF2A7spINH5b85wiGHQo39TKV44C9Eerb 2pXxFjbVTyYlMOUOnZiBAjCqXQ0zw40Mh9PI5mCtbw3F6GFnL4scevh30 MZfwQQaa24PUhsWWrKUS2NJNE+G2lxqOIFCreIzv3855nktxcfmU25B6o N2SVulwWdO/PFliSTStBS97p6Hb2pzKZoEJJycDdEz3m05uIOQVs5zsmd dmy5r/2+fpUe8wrRrzr9oQm+t0N7JHI0bHe0mzcgR/gacNvS15Yk/Bp58 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10747"; a="423562687" X-IronPort-AV: E=Sophos;i="6.00,257,1681196400"; d="scan'208";a="423562687" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jun 2023 08:55:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10747"; a="714089940" X-IronPort-AV: E=Sophos;i="6.00,257,1681196400"; d="scan'208";a="714089940" Received: from ultl2604.iul.intel.com (HELO localhost) ([172.28.48.47]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jun 2023 08:55:07 -0700 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Cc: tom@tromey.com Subject: [PATCH v2] gdbserver: dump 'xx...x' in collect_register_as_string for unavailable register (was: gdbserver: extract code out of regcache's registers_to_string) Date: Tue, 20 Jun 2023 17:54:57 +0200 Message-Id: <20230620155457.1023518-1-tankut.baris.aktemur@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-9.1 required=5.0 tests=AC_FROM_MANY_DOTS,BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Fix 'collect_register_as_string' so that unavailable registers are dumped as 'xx...x' instead of arbitrary values. This gives the opportunity that we can reuse 'collect_register_as_string' in 'registers_to_string' for additional code simplification. --- gdbserver/regcache.cc | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/gdbserver/regcache.cc b/gdbserver/regcache.cc index 0b1141662ac..c0a6d6eb0a4 100644 --- a/gdbserver/regcache.cc +++ b/gdbserver/regcache.cc @@ -210,24 +210,13 @@ find_register_by_number (const struct target_desc *tdesc, int n) void registers_to_string (struct regcache *regcache, char *buf) { - unsigned char *registers = regcache->registers; const struct target_desc *tdesc = regcache->tdesc; for (int i = 0; i < tdesc->reg_defs.size (); ++i) { - if (regcache->register_status[i] == REG_VALID) - { - bin2hex (registers, buf, register_size (tdesc, i)); - buf += register_size (tdesc, i) * 2; - } - else - { - memset (buf, 'x', register_size (tdesc, i) * 2); - buf += register_size (tdesc, i) * 2; - } - registers += register_size (tdesc, i); + collect_register_as_string (regcache, i, buf); + buf += register_size (tdesc, i) * 2; } - *buf = '\0'; } void @@ -472,8 +461,15 @@ regcache_raw_get_unsigned_by_name (struct regcache *regcache, void collect_register_as_string (struct regcache *regcache, int n, char *buf) { - bin2hex (register_data (regcache, n), buf, - register_size (regcache->tdesc, n)); + int reg_size = register_size (regcache->tdesc, n); + + if (regcache->register_status[n] == REG_VALID) + bin2hex (register_data (regcache, n), buf, reg_size); + else + memset (buf, 'x', reg_size * 2); + + buf += reg_size * 2; + *buf = '\0'; } void -- 2.25.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928