From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 56153 invoked by alias); 16 Oct 2017 21:40:22 -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 56135 invoked by uid 89); 16 Oct 2017 21:40:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 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: sesbmg23.ericsson.net Received: from sesbmg23.ericsson.net (HELO sesbmg23.ericsson.net) (193.180.251.37) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 16 Oct 2017 21:40:19 +0000 Received: from ESESSHC011.ericsson.se (Unknown_Domain [153.88.183.51]) by sesbmg23.ericsson.net (Symantec Mail Security) with SMTP id F7.9C.03220.04725E95; Mon, 16 Oct 2017 23:40:16 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.51) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 16 Oct 2017 23:40:15 +0200 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [142.133.49.59] (192.75.88.130) by DB4PR07MB316.eurprd07.prod.outlook.com (2a01:111:e400:982f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.5; Mon, 16 Oct 2017 21:40:13 +0000 Subject: Re: [PATCH] Record and output access specifiers for nested typedefs To: Keith Seitz CC: References: <1508189538-6733-1-git-send-email-keiths@redhat.com> From: Simon Marchi Message-ID: Date: Mon, 16 Oct 2017 21:40:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <1508189538-6733-1-git-send-email-keiths@redhat.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MWHPR14CA0012.namprd14.prod.outlook.com (2603:10b6:300:ae::22) To DB4PR07MB316.eurprd07.prod.outlook.com (2a01:111:e400:982f::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f66ab56b-e454-4699-3935-08d514de7c43 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:DB4PR07MB316; X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB316;3:351STeNhBCSGL2GX/dmvLBpsUD4Jt1YqytzBx5nCHCtj+7RyRQXza9AQXCY84LZIIKJgd3SFSLTn/0WuFqXuy1dxhpgpzMaN7kCbTt51d0GZ4ROPfYJQQ2KdLkuRjVCLPMtYfGNeX11Z0buQd2c3DYoBVRvlYorch8nTIX2tlIE2cjGVemgzAqXfEe1swwNNWOjkj8cpp3O094MxXN/Upy+g6Nx2u26qw5J7JXNZIu9bxXC/N1dowerjiW61+Cjr;25:9U6vwmnMa1oWkj3Lj0uZgOFzE/LzZ+cTfwJ31YHbz4wDPYECWCsX2UbKgmy0Zserpwj5I9nUUgRqEYPZcKBCwbd1/BVQ65pfjdCuZ/lcSV4HA2tN3uA6xpukoBN/u/uW1adBQpiaraLdUYOViorr24hw5GgZzFcrTOqzTmYjRuwjrDCkS5aL9oR2RtMasxGb0f9GGSxknn56cODf8ITxijs035NnujpxO7E+5PztXENob7Vt9nEbJEcryYOk5ftpHZbJX8r7Ybmuh9zfTdHq3LmAstv9OPy+dOgLY74z8fqYbUPPpbW3KMwtBnmoWq2/fgjIT8hQMLSexQVTw1rLewcV5KYxd61lFu/PAZKk2sg=;31:E7NDVWjhSwsXSb0xPiBjo9oO4+qPeLHgqJZ3jbhvw3plHFElreCAU4pHMwgeNNsZqr0aeN9bYrbPYc4fZN1liB5JnL4P1gAHCX9D1N7MT76y/wsnxBRcGYrG104L/bB7iE1/J4HZgtMkeCyO6WmE9fY6yHQIMD25Dn97XHAkWNzY4Jb0iNqJNHYBHo5eTpQmUd7KaqXEr4bTp0i+HQxEKexEbbZkwSLadeXmWh25h5s= X-MS-TrafficTypeDiagnostic: DB4PR07MB316: X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB316;20:Col45sQgXa8iWXkb/2bd0hrly9p09c6PPUM6nwS+OtG+709LC6fy7WFrfHaGEFeJ5lPvzfY1hQJWbio4N71Ku78fE082HyPUoSbdU+s3RRqAZIJsxnh8USN1pLYZc4jOu3N9LrSzm3r6EXGW3Gz/gmbNYwxXK9xdpEJOOVnaY8TKSyGZOJdI0qI+7B5KF6QAtGHrfTbm2z2ZtvvODfbY7xW86SUz049JsaDdemGpQTAe/VG0YF8fmVSL2CFYOPWONT9SKZwAbqOVTcUuqSfX/1TmkhN/pIp9gCxATZFn/TYdkZ3TAmaQTsew9cvLKhZH4jlEzw5WcFHq/21rXKWsc1Er2hxDkiXMJemOOGX3IwjSBQWI3olsdeg2KP0QfeAognaMCy5EI8kslNDMyRLXy5ldpWQRMic2r4W1p5U7jZxUYrsbBhRYckR/POn+VUM6anvuBuoGj6QDq1MndVFB5F9oEHbpqeDMZ0ro31P9u9BiGbL3Iz2wQ9tgfoYBGzhB;4:FRWGoPFTwmDIDwzflnyXW9ccubKmbuVATnirogT8AGnhPAO/67JDJhhypQiq0vR3Vk8lhRGtbBLk+CpbJT1dcCB/2dx6pv/HbVZDDv/dxqehw3Iskr41sFSe9tzuwaE6PpHMzOSwlRUJB1SjhHkidTyMoJt9D4CLisS8raKAGAtbstARJ/BqAhWRZfn9RgxHtkfo962hC6/gsHVW8h8YpXSrZ69UNcRl3lQbhFMEgaFsBUXKgD/5tIelllFGUL13 X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123558100)(20161123564025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB4PR07MB316;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB4PR07MB316; X-Forefront-PRVS: 0462918D61 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(346002)(376002)(39860400002)(377454003)(24454002)(189002)(54534003)(377424004)(199003)(65806001)(64126003)(105586002)(54356999)(6486002)(2906002)(189998001)(16526018)(65956001)(36756003)(4001150100001)(49976008)(23676002)(6116002)(478600001)(53936002)(53546010)(97736004)(66066001)(50986999)(76176999)(31696002)(31686004)(3846002)(47776003)(305945005)(7736002)(2950100002)(6916009)(83506001)(58126008)(316002)(16576012)(101416001)(6246003)(25786009)(229853002)(33646002)(230700001)(81166006)(68736007)(50466002)(5660300001)(4326008)(86362001)(81156014)(8676002)(6666003)(8936002)(345774005)(106356001)(65826007)(78286006);DIR:OUT;SFP:1101;SCL:1;SRVR:DB4PR07MB316;H:[142.133.49.59];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjRQUjA3TUIzMTY7MjM6L2xWRlJLM3lQbFZsVGtDVFQ0WlZqV1BSbHl0?= =?utf-8?B?RmpxelJQemx2Y2hIY2g4VkR3TXFIYXN0djM1dmhDd0loalNPT21MUEhPL3c1?= =?utf-8?B?ZU83ZU84bWdlTmN4Y1MydjhSTjNldlhsM0JZaThZa1NVQjNVOEVvblRXZDQy?= =?utf-8?B?bGlYbERnZDZFNTlGZjFuUWpTNC9SL0xQaDBwNlFrMzc0Q0pBWWpRZVc1a08x?= =?utf-8?B?SUpSMXFtaVVnSk5raEd6VVVvSmYwYW53RmlFUFBGOVRzb3cxc1NaV2RYb0xs?= =?utf-8?B?U0gwekdzRkkwN0JWcWNSZHhlSmlXK3Uvd05TR1VNRTJkN2NJQkRzbkNmVVMz?= =?utf-8?B?UE1TSmlDaWVkUGVYVHBlRjdEanVjK1Z4T3dJMi93M21JSkFiZ1l1c1VPd3pN?= =?utf-8?B?WExnNldMTXg4bXFxM21QVWZxRWUzSmRhMCt5ZWsxNTEzOGdSQ0EyWmdiMGRm?= =?utf-8?B?QTF5eDJTY1RJTW5OWEt2cGY2NnM2TFpWTlF3eCs5c0pBOHM1VHRmWHphY3I3?= =?utf-8?B?dGd1aTBFbFRFTzlyTmsyM1RZNGhuc2ZncVd0U1pxQ1VQaTR3M3IyeEhtelBI?= =?utf-8?B?c2dXQjFmMEJyVXFQSlJZenhHdnVUTnVDRnFVYjRvSjRPMENJKzUwTktGYWxV?= =?utf-8?B?U3NlUVFDUzVLMHFFVzcrSjNqZ1lqZ0tNWDFtMzFwdEU1VWJPQjkzZldvWndj?= =?utf-8?B?M0dsanhXMXNXZkY3QlhjbEtPY3Nlbnl5ejVUbmRZdzZ6eHRRTG03SEtDb3gv?= =?utf-8?B?Q1Z4NUVBZWNTUVhLVnQ2MURqTDVpekVhWXFnUEJvNll4bzB6RFpKRVBSSENj?= =?utf-8?B?ZHpMNTFBaW5xWllaT1owS05WZFNtczJTWWxxSnJiNG04ZnhPeWsxVlZNTWdM?= =?utf-8?B?WkVibE5kMzBjUHV4UEVSK29sVWdBUDkvUlBkRWQ5S3JFZ3RPTU1VNm1sZVN5?= =?utf-8?B?cHpueWFjaDJ3bjRiMmY3TStFSTRxb2ZQU1Z6bHZ4cEZLaXNYUU1iNFJSR3VI?= =?utf-8?B?aVRTRk5NT3FRRXFQaE5FTEQ0NTVWVUFMQ1ViWVlvcEhlZldweTlNRWcrS2Uw?= =?utf-8?B?R3VoNG9IWUwvcmNWeGZQRGZyakVKMnllb25aZitYYUorYy9Jay9Tdm5aOFBo?= =?utf-8?B?L2U3anhrbFRzUWhxSkxRMGxPeEtuTHl3UDR2Ukp4aVBjNlVpRng5UGNDbVhO?= =?utf-8?B?KzhGVHVMaEsxaTlxaWJXRFhMVnVIdUwzUkNLYnNBeFk1amQ4TzVQNkJIWUlB?= =?utf-8?B?Qzl6dTAxMWt2Qzcyd1dvQ3RnNHptMEg0bjgwOGN5UTFzVGdjMEpFM2RMU3lQ?= =?utf-8?B?VEJHMTFkQ2VkK2FiZy9IbGJvd1J6WXMzTkpZd2FBbXhBRkNCdjJMcHJiWENo?= =?utf-8?B?TWsyajI3KzNTK1ZRck11MDMxbVpsdnVWVENJc0NSSWliM3VWSWVzbFJmeExl?= =?utf-8?B?Z0Z3VjNUQmRHRyt4S05ZR2oxN3BUMGdIK2p5VUtwQXpiUUJLRzNEMjNvR3J6?= =?utf-8?B?clJ2RVNQYkZwV0dFcEltMXdBcGtUeVJiNU1xS2dRd2kwSFZQeDYvV01wczUv?= =?utf-8?B?bU4vRDFkV3RFTlB0eFF4bmdXSEF0ejNYek43OC9qNnBzK3hwak40MUdnYUkw?= =?utf-8?B?Mk5aM00wMHlhMXhWaGRrS1F1MzhzL2xqV3NWNmMxNStKck9HNnZEL3loQXJF?= =?utf-8?B?ZEZ0aHRVRXJjc1M3NUZIUVV6N1VhTnY5b1NWUVNOUi85eEkvMncvWFRseE15?= =?utf-8?B?aCtaeU9pRXN5VTFUalhhcElaTHZPTWtUZ09QOGs1WkNEUEFUcnNZZHhDSysr?= =?utf-8?B?N1c4T1pCZ2NsbDJCT2lpOGJPbFVtMVFDSVBud2Y1djdzRVdZeTVHUFM5OUhL?= =?utf-8?B?aVlrTSttMTE4VVp6TEVkQXJpKzI1cWZRZGRtdzFQbXUveFB5bG9FSUIwZFo2?= =?utf-8?B?M0xIdE1YWXBqY1V5djNmSjRDK3R0cGhKOUlMYitTbXNackk5ZGU4dkFHeFps?= =?utf-8?B?ME1HT29CRUJXczIwYXNwMlhXaThQNXlNaUJnPT0=?= X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB316;6:MWUvzAcdDgyzE/O/UZ5y1wwAXLPdUT+/6W8UbCfnZH0uDdn7H0EgZnuPBgM6InSvPjB/5vnZjummJAFws+bWTx1Rd6kYkNz+0QuVNnISK5LgtBFEvthcdPU9En3N9PqoP2AQZ5nhQWQBPZDiNQjWpWVdKqW+mACXdWR0vYdqkWeLuAG3OX7MpIcHFPwqYLoSoNQ81ByeBHYjFDDDSoBOq0Rfl2ufkQuW5zWAGlyNDpen8pNCw8k6q/kPeLFrDTDG7mHI0wcbBUYWEbdhK4a1z0h/QqB3swY7L+FiObE8hynIS9ZL1SPNIoD8aRliBui8ywyd4rVarc1B5Aatu/zNYA==;5:iZYOykrB73Hbcgg+1suBT8KDp7EwizDdEIoYXF8dGgLsEzD27nUfCWSCVNK5UJmR5X50P1Mrks9Fb4qQJTFXv3FEMmEXMMczi6ztlYvCSiESEyGU8xnCzBwGAPQS5Q4T/0yqVbSaQQbnK90jW/Wtcg==;24:rTI7M5t9mfAuF2hbqAgen8FaSjcMZj6O5x/vxRgoBFibJfWF2WWa5n+oaVtvtbLTeNg1L/vAX0UVc1sCwqeSW4o3AUXv+lynmz1HVKB9yCo=;7:WRRnyA7QUuPq4DpG0lDoJOCaA7WDH+ZPVO8zbRvDWAuAKP+U7mK1GjptQMuWr8Nzw5C8M/wWt+QMK314cRINKl4W8zthKSiWgRcPvRVFLEzm/RLjT0Y1WS5ncaWUvoxlVNhV6VE1ujbQQO+/ms1OrfqAC+FdK6f+8G4jPMAd0CQoLRcAPPYYC8D86WjJ2OQ3wfduae+fl6PYnjyJc09BzSrTEH6IEpt5xFgXjAlqmbM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2017 21:40:13.4431 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR07MB316 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2017-10/txt/msg00476.txt.bz2 On 2017-10-16 05:32 PM, Keith Seitz wrote: > On 10/16/2017 12:56 PM, Simon Marchi wrote: >> On 2017-10-13 03:18 PM, Keith Seitz wrote: >>> gdb/ChangeLog: >>> >>> * c-typeprint.c (enum access_specifier): Moved here from >>> c_type_print_base. >>> (output_access_specifier): New function. >>> (c_type_print_base): Consider typedefs when assessing >>> whether access labels are needed. >>> Use output_access_specifier as needed. >>> Output access specifier for typedefs, if needed. >>> * dwarf2read.c (dwarf2_add_typedef): Record DW_AT_accessibility. >>> * gdbtypes.h (struct typedef_field) : New >>> fields. >>> (TYPE_TYPEDEF_FIELD_PROTECTED, TYPE_TYEPDEF_FIELD_PRIVATE): New >> "TYPE_TYEPDEF_FIELD_PRIVATE" >> > Fixed. > >>> accessor macros. >>> >>> diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c >>> index 978fcc4..3dc74f9 100644 >>> --- a/gdb/c-typeprint.c >>> +++ b/gdb/c-typeprint.c >>> @@ -826,7 +836,42 @@ c_type_print_template_args (const struct type_print_options *flags, >>> fputs_filtered (_("] "), stream); >>> } >>> >>> -/* Print the name of the type (or the ultimate pointer target, >>> +/* Output an access specifier to STREAM, if needed. */ >>> + >>> +static void >>> +output_access_specifier (struct ui_file *stream, enum access_specifier &access, >>> + int level, bool is_protected, bool is_private) >> I would suggest renaming access it to last_access or previous_access. Could you also document >> it in the function comment? > Done. > >> It might also be clearer to have output_access_specifier return the access_specifier, >> rather than modifying the passed value directly. Otherwise, it's not really obvious >> what's happening in the caller. > Also done. > >>> + /* Print the name of the type (or the ultimate pointer target, >> Spurious indent change on that last line. > Removed. > >>> diff --git a/gdb/testsuite/gdb.cp/classes.exp b/gdb/testsuite/gdb.cp/classes.exp >>> index 256fa68..1f6d377 100644 >>> --- a/gdb/testsuite/gdb.cp/classes.exp >>> +++ b/gdb/testsuite/gdb.cp/classes.exp >>> @@ -316,6 +316,64 @@ proc test_ptype_class_objects {} { >>> { field public "int y;" } >>> { method public "DynamicBar(int, int);" } >>> } >>> + >>> + # Classes with tyepdefs of different access. >> "tyepdefs". > Darn fingers. Fixed. > >> >>> + >>> + cp_test_ptype_class \ >>> + "class class_with_typedefs" "" "class" "class_with_typedefs" \ >>> + { >>> + { field protected \ >>> + "class_with_typedefs::public_int public_int_;" } >>> + { field protected \ >>> + "class_with_typedefs::protected_int protected_int_;" } >>> + { field protected \ >>> + "class_with_typedefs::private_int private_int_;" } >>> + { method public "class_with_typedefs(void);" } >>> + { method public "class_with_typedefs::public_int add_public(class_with_typedefs::public_int);" } >>> + { method public \ >>> + "class_with_typedefs::public_int add_all(int);" } >>> + { method protected "class_with_typedefs::protected_int add_protected(class_with_typedefs::protected_int);" } >>> + { method private "class_with_typedefs::private_int add_private(class_with_typedefs::private_int);" } >>> + {typedef public "typedef int public_int;" } >>> + {typedef protected "typedef int protected_int;" } >>> + {typedef private "typedef int private_int;" } >> Add spaces after {, for consistency. > Also fixed. [How'd I not see that?!] > >>> + # For the following two cases, we cannot use cp_test_ptype_class. >>> + # We need to explicitly check whether the access label was suppressed. >>> + set ws {[\ \t\r\n]*} >> I don't think it's necessary to escape the space. >> > Indeed not. Removed. > > Thank you for the reivew. > > Keith Great, LGTM. Simon