From patchwork Thu Mar 1 17:04:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 26141 Received: (qmail 16021 invoked by alias); 1 Mar 2018 17:04:37 -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 15982 invoked by uid 89); 1 Mar 2018 17:04:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: sessmg23.ericsson.net Received: from sessmg23.ericsson.net (HELO sessmg23.ericsson.net) (193.180.251.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 01 Mar 2018 17:04:31 +0000 Received: from ESESSHC017.ericsson.se (Unknown_Domain [153.88.183.69]) by sessmg23.ericsson.net (Symantec Mail Security) with SMTP id 0A.79.21824.C92389A5; Thu, 1 Mar 2018 18:04:28 +0100 (CET) Received: from ESESSMR501.ericsson.se (153.88.183.108) by ESESSHC017.ericsson.se (153.88.183.69) with Microsoft SMTP Server (TLS) id 14.3.352.0; Thu, 1 Mar 2018 18:04:27 +0100 Received: from ESESBMB503.ericsson.se (153.88.183.170) by ESESSMR501.ericsson.se (153.88.183.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.26; Thu, 1 Mar 2018 18:04:27 +0100 Received: from NAM03-CO1-obe.outbound.protection.outlook.com (153.88.183.157) by ESESBMB503.ericsson.se (153.88.183.170) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.26 via Frontend Transport; Thu, 1 Mar 2018 18:04:27 +0100 Received: from elxacz23q12.ca.am.ericsson.se (192.75.88.130) by MW2PR1501MB2012.namprd15.prod.outlook.com (2603:10b6:302:c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.548.14; Thu, 1 Mar 2018 17:04:22 +0000 From: Simon Marchi To: CC: , Simon Marchi Subject: [PATCH] target debug: Improve printing of flags Date: Thu, 1 Mar 2018 12:04:11 -0500 Message-ID: <1519923851-25998-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: BN6PR13CA0012.namprd13.prod.outlook.com (2603:10b6:404:10a::22) To MW2PR1501MB2012.namprd15.prod.outlook.com (2603:10b6:302:c::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 415c9f9a-15b1-4df9-9405-08d57f967c08 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020); SRVR:MW2PR1501MB2012; X-Microsoft-Exchange-Diagnostics: 1; MW2PR1501MB2012; 3:TYaqkNN1SRPaic2nXgqehONSYPZJrbhqunN8VoBteVDGnJpOvaywyZKJA/ls8dREhhJXXNMVXeJdqIKtFrrQNciFOyaPtEdvaDsk1/VrI6zL4E2YVUY4aa9w7umok8NQrK3XWs8x7cwbyTUeLmr+L/IEPMLzb6v4w3lzkH8X4NotRt9dYzeRVlBUWZV85WAb6wpz9mHTqzL6aUtgAQueHwgq+0RmTcqKx4H+xKZOKqUcNqikmnjWL40p/VtJWRnC; 25:6zywYQLTKWuG7kPHZscgFyRhkaWyffeqlegiLmFAZvet80DNipAHI93HLOdflZEBf7vxA/fGbOked85Qjxj75g6CXWJTiOSHFvM2JOYJDfxM6ixK+P8CcqsnZlTIWuH9iw0Ktbox4irzJ44qH4PR07kfx5nrYNzpIYzg0o00Vmh4P+oEI+Wh4IKbUfZ6YcRm8UPDlzTMXj2nOwKr1TGwZKpyUd1PuSmXKlTur4jm5v90bp3yQaoSKK6ZXteTfgiWC1pjBLNXl9kUkz4WprADouniRM5hX+APp6Hceyfh4u4RyIvo+UK/SwTbnWlJ2E+70BxR/82qIreSluvdXns75g==; 31:SVWQGTsa26AyYeFQtAcCEPrItf2AiHqxKh7uFQ7IkWld7hTOF5Ax3U0jDhyabmMNJ+TZijor/gSCYB3Q7LGlIYl0WXw7xzCoDEnCV9GZoIAGpBdhHdIp+JRFofPmYAFznRFzm/qK5npbwGVBRef3xNsK3YnJ+Mz2WsyxpiYqQOjrzbPsWu1L8Jk7qSRmPFEawU4xBVCStXZfAEmMp1bhvYTp8gQN5bn2phqcwR9yCtQ= X-MS-TrafficTypeDiagnostic: MW2PR1501MB2012: X-Microsoft-Exchange-Diagnostics: 1; MW2PR1501MB2012; 20:0fJk6vkl0xl2j9Occi7fTp+c4YtlhBAaLela2E+niNTWrhv1Soj2CODlwrckWE+yo1tkexXAX/mIZmAcLMK+Mt9SsdcIHTeGt+WI5tNqxuc1May3zI81WBcpd9BlHTL0+HMGNuvu4t7TjvVd4wKQqUq0Ix4k7mdggxu++8PfWfyZZmIUy+7taQQUjsgBlkVIeqH8Ihnmw/RHIaymRDNQSM7yuX80oz3M8DDvhCoqpB0RNEhBfzS47qMnfBGI2GZsuNzbdpvZRsPZ+QVM6WjhpRQQ/p7v3cthpkloQUmEMwfeu9HYISXlek05eOb+swm+wODyA+yo5L8OZLqIds3gHzboQYrENIBS/Xiw6w21g7f2AIFfs+79mnxyTWxr9y6/2q6gt1ZhqoE1+cNHKJ/7DuH8/F0Utqq+5QQMRsEaJYWVcwfEg6cht0Ti3gU8xU8KidIcJKgMv8Vl6P0x+2p0+ADuEKwKzcvtLwd/NNQb5sY2BPc/Kzs1wpW7maJCg73A; 4:wUX1QcT/p0yy26liqSkQWXrUfOmRxS7Y6+/nUo7g3X2VBzbyR/XW8vsuYxbt6YKAsJ4gbX5ukNRkIE8hiV8IF8vAtczQw8AGtuikhk1KX/lXftxmbAXI0c5u2ZPSi0XBuEp9Wyx6hx+Vt6oOduXcbfULOQYNXvDGmQGM66IEmBLnXNF0I3xQz3eCq3Zxh6JXoECSDE7LLxaswR2c44TDEtCWvekKiV0KH7rVjffaTVKPMeDb7+F/33Iyuf9LgO7P6H39fVGQK7r/dP9UEL63Lw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231220)(944501225)(52105095)(10201501046)(6041288)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:MW2PR1501MB2012; BCL:0; PCL:0; RULEID:; SRVR:MW2PR1501MB2012; X-Forefront-PRVS: 05986C03E0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(39380400002)(39860400002)(346002)(396003)(376002)(54534003)(199004)(189003)(8676002)(2351001)(5660300001)(4326008)(50466002)(81156014)(305945005)(7736002)(97736004)(66066001)(36756003)(68736007)(25786009)(47776003)(478600001)(48376002)(6916009)(6666003)(6486002)(106356001)(8936002)(81166006)(50226002)(53936002)(2361001)(6116002)(3846002)(575784001)(86362001)(105586002)(26005)(6506007)(107886003)(386003)(52116002)(51416003)(316002)(2906002)(6512007)(186003)(16526019)(1857600001)(6346003)(16586007); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR1501MB2012; H:elxacz23q12.ca.am.ericsson.se; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR1501MB2012; 23:5StVk8d6MOxXISF2AKYK5rJXqENFBmoqya9YZ1f?= =?us-ascii?Q?WjypTjVIFRgIoIZ56hVsbFnGsRZChFnsJdlhDAnSoJte50Yw6FO0OIqLolKb?= =?us-ascii?Q?0+qNoD72GA4WN7isesDGITryuT7+ZV4hDoCevMrme2m7Xr0tG7z0WurftPYV?= =?us-ascii?Q?N3wD2a1F4y9J90TWTjUCwM1zf3Pmi5SMY2OSayRzD+NDd28qJDuSQHBpFOwK?= =?us-ascii?Q?ya+Uq9Uc2d2HvyIE8H7J/XPQfVsCn63oz641Xf9wvsKmy8tWHlFOCRnrZ97e?= =?us-ascii?Q?nJubzTTSmvRI7xe7jZZJHF0SHkw2M865nmlVXUJgz0NkAy+UY8DshShY1sGp?= =?us-ascii?Q?V0SGunLBWgrAQxQYH6Yk9xEocchAvoUD2l7prN9P5uINqCpX5ZacxVnKK1Zq?= =?us-ascii?Q?tAOZk0RvuRKkmSQrS5WqauEtxzmpXgoZiZvxJe8p73CrcEcqMykRyTcJ9YZI?= =?us-ascii?Q?IUpBdsQX67ETHctun9iC4lbIuiCxQ9v/ZfJIA0jaKgHJTRg5jo+otRQMB3aA?= =?us-ascii?Q?oCJvIMta3Ad77/fHdoVB55LEzEtq9Ah3xuza4GsSS129as8tTiFcc7BNDsxB?= =?us-ascii?Q?owM7qq/qjWjYIpewZInBz0iEm7vwoY3w4gq8krGUuJGDE1k2wT19vpFv7s/g?= =?us-ascii?Q?GoU0RaVwtH0PydcTNZHWeB/wDNZL0B2pnfhS3XIpSekW7N3NEPj/KzEQgC9c?= =?us-ascii?Q?Omn0F5Xx8p6IDqQ9CwOZwftEIJGBTkfPO1T7olP8O7xchQ5WlP/tbMCmuj5W?= =?us-ascii?Q?B2Zr2DoUYVLbvzHoGY3x3oTgfiLZtcTsyfhllRE6qsmzUSaTPFXloNAyA1kc?= =?us-ascii?Q?NlBjRSF9gIiJa4Mi6mDBph5mOS6UTr7j7NnCYYiSY9wEf6wDq/8yJ9skW6k+?= =?us-ascii?Q?H2fiTw6eSybSHayrSG2Y3lbU1FOLxLVeR0S9QoPg1zJMocMYB+sq9QCV7J/L?= =?us-ascii?Q?BFyQz9mASk3kdNZVFLb5dyh1byCYKX+WJvMP3axD7HdN4JIaUwDujtk7fwCc?= =?us-ascii?Q?fwEuI5I9T1rWg4cqz3jMdEC7oNmOxDTIERDOBSXwN6XJpqtGt0/KN4uBEtwX?= =?us-ascii?Q?4qDfJqQkCSoyS4vcGFnNH45nebo4qZVOm2vcfi43zy3ijYLnvO4HmiV51yMH?= =?us-ascii?Q?VM1rv4PuAat/atasjqyGikTPWFWT72UhcIC3THhFjRorSy78XX8/TxD55pBc?= =?us-ascii?Q?ZYKwAGkwHKF35Khi83kIR3tvM44MnF5bi3Zf0?= X-Microsoft-Exchange-Diagnostics: 1; MW2PR1501MB2012; 6:uH/f6IBxG8ii3p00ecEwOKNsoaMia7sTCTRorKHqwlX0+X747ODOSZbZkbsJn7QQQnBWtgtyBG48nai94gwY2iBXrUzYZjtGoz+/QRlp7pacH8GgR7DOSHSXICoOVswGTSdHyp2wuDuJ7XgmITxOJx9ik0b1ICb5Lx2I8IBMxIo5X1dVP6IW1CkZ/P3kmPGuo6vOg6n8M7Dt2F9sE7C5Z/FT4pTKaXJelAodAq7QPHxD6g+yPZtO95+N7sfICkRh1pDTRTaKrLdyH/hrviB6nztm23HIMWR+hSh6GzUNOYhKhpnr4ZVSjKcfiCtB3Uho6v50Icq8ssMacGkr0ZHeLvrM1kc2tpCI/iuWtiZfQ08=; 5:fpcKvNZRuH2mAiQNWVBtjr0aC2ZVhgblYVbhVhda0H44fRUfKShafRlRpxkRynH6UrykIzrcE1wh6V+UgYn70oL/JdOs6QUGKqCCIyUyHZ+nu/Vy1PfmJw50xXds70/F4Y5EMCJZbIYXwcdC2EzlMJnZdwYF/YTm0/53tsUHoG4=; 24:kdO4zRTdhY25FdENaW4SGbfy4/CyXzot3K8krh0q9dhngO3nrDx1f3QkjcZ+8NhqW7lRJkKMve1s2H5awLFJcnGiW2ZMwvB55a1DdpAu0zw=; 7:u8ay+f0+K06XoZnE5HQ9CdA0inpEuhzxTwp69zD601vn6+92vx94C0+Em8XLJx31Hhdd7mNSdBwA3h2M4KippU8dVDlMMooO2qLOvaIz2Mf6M1CIO/jDKL5kig5ZjO9B8PgAkDbL8uEw07nqRVJdJS0u8Dx5ml14vPoLQF6BnYU6aNnwIqBxyMi8qpSQCfllPLP4lGl5jBx2V5jUDxy0WTGyYPWVurdQanhLxqvNj3waRnj1F2xCnW/iftIRAEbo SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2018 17:04:22.7114 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 415c9f9a-15b1-4df9-9405-08d57f967c08 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR1501MB2012 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes Currently, the target debug code prints flags as decimal integers: <- record-btrace->to_call_history (0x240d420, 10, 7) <- record-btrace->to_insn_history (0x240d420, 10, 62) flags ----^ This patch improves that to print an OR expression of the flags: <- record-btrace->to_call_history (0x240e420, 10, RECORD_PRINT_SRC_LINE | RECORD_PRINT_INSN_RANGE | RECORD_PRINT_INDENT_CALLS) <- record-btrace->to_insn_history (0x240e420, 10, DISASSEMBLY_RAW_INSN | DISASSEMBLY_OMIT_FNAME | DISASSEMBLY_FILENAME | DISASSEMBLY_OMIT_PC | DISASSEMBLY_SOURCE) Since the list of possible flags is hand-written in the debug functions, it is possible that we forget to add one there when we add a new flag. In that case, it will be printed in hex (RECORD_PRINT_SRC_LINE | 0x8), so we forgot to consider a possible flag here. gdb/ChangeLog: * target-debug.h (target_debug_print_gdb_disassembly_flags): Change to a function, print flags. (target_debug_print_record_print_flags): Likewise. (target_debug_print_flag): New macro. (target_debug_print_remaining_flags): New function. --- gdb/target-debug.h | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/gdb/target-debug.h b/gdb/target-debug.h index 71d1a3f..19a5ab9 100644 --- a/gdb/target-debug.h +++ b/gdb/target-debug.h @@ -164,16 +164,53 @@ target_debug_do_print (host_address_to_string (X)) #define target_debug_print_enum_remove_bp_reason(X) \ target_debug_do_print (plongest (X)) -#define target_debug_print_gdb_disassembly_flags(X) \ - target_debug_do_print (plongest (X)) #define target_debug_print_traceframe_info_up(X) \ target_debug_do_print (host_address_to_string (X.get ())) #define target_debug_print_gdb_array_view_const_int(X) \ target_debug_do_print (host_address_to_string (X.data ())) #define target_debug_print_inferior_p(inf) \ target_debug_do_print (host_address_to_string (inf)) -#define target_debug_print_record_print_flags(X) \ - target_debug_do_print (plongest (X)) + +#define target_debug_print_flag(flags, enumerator, first) \ + if (flags & enumerator) \ + { \ + flags &= ~enumerator; \ + gdb_stdlog->printf ("%s" STRINGIFY (enumerator) "", first ? "" : " | "); \ + first = false; \ + } + +static void +target_debug_print_remaining_flags (int flags, bool first) +{ + if (flags != 0 || first) + gdb_stdlog->printf ("%s0x%x", first ? "" : " | ", (int) flags); +} + +static void +target_debug_print_record_print_flags (record_print_flags flags) +{ + bool first = true; + + target_debug_print_flag (flags, RECORD_PRINT_SRC_LINE, first); + target_debug_print_flag (flags, RECORD_PRINT_INSN_RANGE, first); + target_debug_print_flag (flags, RECORD_PRINT_INDENT_CALLS, first); + target_debug_print_remaining_flags (flags, first); +} + +static void +target_debug_print_gdb_disassembly_flags (gdb_disassembly_flags flags) +{ + bool first = true; + + target_debug_print_flag (flags, DISASSEMBLY_SOURCE_DEPRECATED, first); + target_debug_print_flag (flags, DISASSEMBLY_RAW_INSN, first); + target_debug_print_flag (flags, DISASSEMBLY_OMIT_FNAME, first); + target_debug_print_flag (flags, DISASSEMBLY_FILENAME, first); + target_debug_print_flag (flags, DISASSEMBLY_OMIT_PC, first); + target_debug_print_flag (flags, DISASSEMBLY_SOURCE, first); + target_debug_print_flag (flags, DISASSEMBLY_SPECULATIVE, first); + target_debug_print_remaining_flags (flags, first); +} static void target_debug_print_struct_target_waitstatus_p (struct target_waitstatus *status)