From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 125676 invoked by alias); 11 Dec 2017 21:50:40 -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 125663 invoked by uid 89); 11 Dec 2017 21:50:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-7.7 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_1,SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:2537 X-HELO: sessmg22.ericsson.net Received: from sessmg22.ericsson.net (HELO sessmg22.ericsson.net) (193.180.251.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 11 Dec 2017 21:50:38 +0000 Received: from ESESSHC009.ericsson.se (Unknown_Domain [153.88.183.45]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 28.D9.00652.BADFE2A5; Mon, 11 Dec 2017 22:50:35 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.45) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 11 Dec 2017 22:50:35 +0100 Received: from [142.133.49.104] (192.75.88.130) by DB4PR07MB315.eurprd07.prod.outlook.com (2a01:111:e400:982f::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.323.4; Mon, 11 Dec 2017 21:50:32 +0000 Subject: Re: [PATCH v3 2/2] Implement pahole-like 'ptype /o' option To: Sergio Durigan Junior , GDB Patches CC: Tom Tromey , Eli Zaretskii References: <20171121160709.23248-1-sergiodj@redhat.com> <20171211195757.18044-1-sergiodj@redhat.com> <20171211195757.18044-3-sergiodj@redhat.com> From: Simon Marchi Message-ID: <2b1ed21e-2d41-19d2-a0cf-3b4780cf9060@ericsson.com> Date: Mon, 11 Dec 2017 21:50:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <20171211195757.18044-3-sergiodj@redhat.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MWHPR08CA0052.namprd08.prod.outlook.com (2603:10b6:300:c0::26) To DB4PR07MB315.eurprd07.prod.outlook.com (2a01:111:e400:982f::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f77aa29-7dd2-4637-6f4d-08d540e134c4 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603307);SRVR:DB4PR07MB315; X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB315;3:bciIcN9MaSlzecf4NswNRakXIgEDZpFTtHNxLLEuDgVHwxf6t6AIghOj677acCrvjqmorHz2ro/Xo/1W+2oDlcFFppWwj8fXj2g2YjW5HrQLLCuHnZrxYDd3d1VBq0eLVlRdve7SO6FDThkExx3G9SsjtSUeb7HDkJWCfwOeCBpPPlGBH8xmcR9Gz0r+wIGthhn5W88hw/h3fmv/yH9SyPCzSpTBNmoVkSoebkAIStYQDoNs9v0yV+hO9V/gOYK9;25:S7RjmI1LAb9Ch5Rwy92K/tMOlpdzMeo3NqFLS/RQ/Ah5xLfW0XAxKvw6PBvFJiGqMwjQ2Dn8KDU17PUckEZSbEXQR7V0+jdTZSJrmizIiLQmTHz46ApAOzucLUbva+MFbhXnavEB73tunm3wGtquv+8n3NOjto7My5m1oBoRJBIpVsP0X9hdw7OB3ihtMM6JxI1aKxMm/eG5Im0/LZ1p8oZz8ZDue1UAv+QQlVDz2/vdcm+5ZpxRDA7Bo1vZBkLvr5dr7TPwFwtkV6nGmjB5RfZ1kJawqVPdDNhSNu5WtGfWI9efea51X53ETrJkTHmWZ02k4j/86Di+pMRfD5ZJn7qm10nzzn29wcGsUb6mhnA=;31:pRkfLz73al+tqMynEzSNBsYi+5NWMGREkE0PPlwinLdmQwkPlNo2BKVdV9tdDjscOQmw2DHZooTJPjT8TNpoh2Ckj9l8NmLXGZqro9F4svkTTR1p8svmjgppVNOqrdNkJI/zzxoN3VbUea3sSTNwJWdpNZXy7B+hmatgG05q7GKWZqo7kkfqGxy+Ayv0JYLg1QX0eJQfkhY8QOD20Qoxy/7B6oA4/aciWx+MFtYj6ls= X-MS-TrafficTypeDiagnostic: DB4PR07MB315: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB315;20:a2ynLaAK4vuDtkwGI/eW3a247lBKY+c6/9oWPE7IA/CLrIb4qBcbeATLcjDEHNchbpWaRCpXqrbm7e00PEmb45sOFXUt8qzH2i7YSSmg8ov0FsL1aj/chl173EorGJncDPzXyFlAxX7SEf167DH5ToKkRFa97ge+c+30WsxrqI54av5yjmeJ0X2kh8C3IZNGLYWYoUB0ea9J4HsWBHPCcjOv5j7jFQgp0gLN3xvhKFVOWBfAYcTh/LqTZmB/k8qJcbBFStdStzf7vc3JIZXQrTFmXwnSMw14gwR9qtPxmgV7Dp8ub+8INA4xrIo8+SH441SJG0e0weEajW+/T49qLErxLYQh4nGtowWzPKmePPhefSN1SxkFyUhQ/6JV4jj3AhmOsy752OmX4Erv6ahFnKCyX6PNWJIPtn2zY8cgUYgMZKyWfw6JNDv1M1k4TKWoMq4WOHgvBS/L9Quyz9o9IG21ZDYGTNzGmPAilgA5qRWSP93ZB9T3SJD3S1BApjCF;4:f/QG153xktX/ycfJyKqN+H8/1uybXuY8Fb14YiyuJq51N6rRk6DdKkkWftnQYjanbes6/yKAHWk07xiACUzbqWMIy/+HJf8GsyfSZ2WI3om5C6zezsjHk4WFZ9klsF9UV9+Dsvs97UuyfKyLjDlk88f1ZVt0WcUUdqAt4+iq7t36ALuUOo4QoWIMPu02+Dx+wgU4lRrPlUg/QR1GdBIRTzw/41eikou5N/h1Z89C5uhu8cY/rBQFI9aM4K9JGLvClm7SxsXPJ3Fwacd/4jmvWruughS/OpC4ot75qJvCnWsBsLNcXUc2KZjCDxtiKXq/ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(3231023)(3002001)(10201501046)(93006095)(93001095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123560025)(20161123562025)(20161123558100)(20161123564025)(6072148)(201708071742011);SRVR:DB4PR07MB315;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DB4PR07MB315; X-Forefront-PRVS: 0518EEFB48 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(376002)(366004)(346002)(39860400002)(189003)(199004)(377424004)(24454002)(316002)(16576012)(58126008)(54906003)(25786009)(36756003)(4326008)(6246003)(65826007)(110136005)(53936002)(8936002)(5660300001)(106356001)(2950100002)(83506002)(6666003)(47776003)(65956001)(65806001)(66066001)(105586002)(229853002)(31686004)(49976008)(478600001)(6486002)(2906002)(68736007)(53546010)(59450400001)(52116002)(23676004)(52146003)(2486003)(31696002)(97736004)(81166006)(76176011)(50466002)(3846002)(86362001)(16526018)(4001150100001)(230700001)(8676002)(6116002)(81156014)(305945005)(7736002)(64126003)(78286006);DIR:OUT;SFP:1101;SCL:1;SRVR:DB4PR07MB315;H:[142.133.49.104];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?MTtEQjRQUjA3TUIzMTU7MjM6aTROYjhrNllZN2E0c2lnSFJUMUhJYk9iNjYr?= =?utf-8?B?ckpsV0tBRGU3b2RNaDVGVW9ZYUdpb3pyb2lVUXNIbnF5WHVlVXRCUUpHUlk4?= =?utf-8?B?bTBzMmtVa01BMGVJdUUyMlBNOWFCTU9BT09wdkJtZmZOTUFXa09vaTF6bkc0?= =?utf-8?B?Y0tZZll6OXRZZExUMyt5R0FieUtVZmdYeGFmS2JiSjBpTy9NbUFvSUxwQ0dB?= =?utf-8?B?MGFzS09Hd3MrWklybGhoOVZMQ1N1UUwxNzdOWXkrcEwvUDZKUExvRGVMZ3NH?= =?utf-8?B?ZUJ2KytBWXRPRHQwRGlCYUljd0g4dENVS09IZ2tjSzd5Z2FJZEtOVDFNN01M?= =?utf-8?B?RHh2M2F2RUw3UUxpVUNFcUJSTjA0Nmx1NTdCZXNyUDBlcjRkTmdtQTdXQllI?= =?utf-8?B?Y3Rid3hJNmxjcGUraU50U2t3SnNhczVXVDZhSmtzTXhqZDhQVm9hbWlidXhL?= =?utf-8?B?WDFjcUhZODB0Z1pNSnhhYWZORVV0cGV6bFA2bGRsVmI0MFlZSEVsWk9sSWls?= =?utf-8?B?ejdHVTlzMjM1VWllSmVMazZuYW9jd2Q3VmlkT2xja20wZkxzc3ZEd2Uxc3hm?= =?utf-8?B?SE13SzhFSU9iaFpmeFltRll3a0RNY2VLL2xVWndpaEJBZGxDZ0F0MkRXYmto?= =?utf-8?B?VmtpSGVHUW94UkRENlBJSUdpcjJoRHdlVitrSjE1bHdqc1NCVk9KUVN1eGox?= =?utf-8?B?SVVOM1lEcEN6dkRyY0dsSXhxMGpUOFczQzM1NjN4cFI4VFlralpLR055REdk?= =?utf-8?B?c3RLSGZkN01YVU8vaFBUdWRkeldtTk5Tbm1KUlVpek8yaEZhYjB5M1RMQmZT?= =?utf-8?B?THlmRjQ2QnEzTGpLcGFQbURzT0xvTDNwU0FaaG94dlhmMXE3clowODBCQWtS?= =?utf-8?B?MHZRZDI4RzlWdzhHdW5QallqRnNPdEduVFpHcHlvZGtPOTlzZ3VYNGs5ZmFy?= =?utf-8?B?NWV1bVIvRExlQS82Q2szY3FRVGEvdHNUOE5DcXJBd3pmVXhrK1FVcW5CNmUw?= =?utf-8?B?REI4S2czY2daK2VUTDFSQXMwSm1Oa2pBUWF2RW1kZTV6QnEyaHhkKzVmRFpz?= =?utf-8?B?OTNYbHhBNDhxNHRtbkVtaFNpN2hRV0hhUm14NXM2WGRZb3d0QjlkbTBZTU81?= =?utf-8?B?amhGVngvSWNBQWQ0YVdBWmVjTHJCWm9uTCs5TUNjT3RraTNPQXB4cnlXRFVX?= =?utf-8?B?Q3gvcG1OSVNEQ1BlejZ3Z1BRVUk1Y0l4aG9uN0xMdDl2SUYzV3hZZElpckE1?= =?utf-8?B?TEtBdURoZzVaS1lydDBHeEFFMXk1Ky9iTXV5VGVvVUhlZ0tjUDFFQ0lZWHgv?= =?utf-8?B?R2F2K1NBbEthS1oyQXZEcFJIMkRuVlM2ZGpNMHRzQW5CMmw4Nm05S2VBdGxN?= =?utf-8?B?akgwaFI5c2RhY1B0cE9DNk1qd1ZwT1QxQmtQQWVscmd4ZS9Qak9EYUtkM1Vs?= =?utf-8?B?bmsvc1BoQUpzdUM0dGcrR3hOZ2Irc0JhdGllUnVkVGwxSU9kNHFSU0ttQnhs?= =?utf-8?B?REpwaXAvWHpKeW9tWkswSG8wMWo0K3AzMmgyVFlNbVliWGU5ZXh6cEk3YVdw?= =?utf-8?B?dXpRWEl4TWxTWi9teDE4MExuUkNsRkFlbTVDcXJ0UmlsSXZiRGhNdkUrUzFS?= =?utf-8?B?NSs3Wk1UVWNtTE1rcjRUL1dTSlErRndoNXcxckhwRGRUbmhIRGFHaEtlM0FG?= =?utf-8?B?L2hpeHlKZjNwakNWOEM5RFR3aWFTVGU1YWk2bFZpaXRNZVhtRXJ4Yy85Tzdx?= =?utf-8?B?dVdkVDJZVStlREl4dGZ1T0t2TEJwcWdVeDlMSzhMaUVOSk9qTEt2NFJCVUxM?= =?utf-8?B?Wk1tRzVsY09RQjdLME5SeDdNOTRKSkd5M2hMTDBKZUFmOVdIdDZ3UjA0VDYv?= =?utf-8?B?U3FWRCswMVN5TUI0WG1QUE9wS2tiU1EzSytaZ2o4aThwc1pjbmJNaWt2TmYz?= =?utf-8?B?cE1CaDE3akE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB315;6:4zQiE8paR9T64ehMkEFDPxeaEPjtoWIjr4IKLiXzNDy9IFIM/k5OadR5ISUF5W/9ftAmGA9MPKBDyyAHbQorFWrOyLZ+GVWSYqGa3K/3d2uUMmwKK5zk2krOmhzfK3MB79BaNHusVJhR8jDwKrbsLvqCzmUhcxMleyV/LmsnwuuoyGqyUIbA+CNdNjYEOENUM8SqgBNx3mYvsZpHgaiJjYvwMBLCQFJi6gLNa9qdDa5fcqpJigjIKZr/1T4aaDCqe7YZMAhqXF+l37rUK2ulMaMjFTVQqy3Mf/AfcLlkd02qaf9d3SD09rfwZkdm05YMkY+/aKiVz1QjWNL2B6cQ1VHuzN4c5uoxeoPaEGg7OKo=;5:bDdaUFmUCFOgEocYMVUycBIhxxeVJ07kkeZLxrgeX8T4PY0gnzZM6lTnf3kUrTwac0hVOYO9rOzLEPYw1PvtxJys3ifbqNn/pFhtdB0et+SQ4BMJI5byXn6fo0kBHydpAAuDextE8FaVv9HgLPtXYrGDI6nmCco4NqJZH1XmSuw=;24:17muIdPTEj3GiGjEBuV5EI+PlZZTSO/wO+0L2vqnKouX+/p7CpUEeelN1rHLMxrYoDNsEzqNUxRKymhNcpI0Sroyq7coWMl0IUr2E/8hTpQ=;7:VE8OifD8nfZKkyNozOfmpOieljVB3Gbbb0ba2GvWK7/D48gWRAMbLC5L+zeEyFKQfp0H1NMk1MHW/UNGmAcjZcQrqESWd2Cgzxgau1K8sBMigM9fn0E0kM2zsllwpkpIhnuKkjGl6AsfjCBGshm1Y4jnFq8UHPx1q7a/JXEKAUA09eSl+7nXbflt1iDFLBPBGvMlT+V0N3EWAswy4+RiFg4e5dDxuIuhwAsA6dOpggbPNhtLgdrE1zT2sNf4Moof SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2017 21:50:32.5995 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2f77aa29-7dd2-4637-6f4d-08d540e134c4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR07MB315 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2017-12/txt/msg00251.txt.bz2 Hi Sergio, LGTM, with some nits. On 2017-12-11 02:57 PM, Sergio Durigan Junior wrote: > @@ -867,14 +890,86 @@ output_access_specifier (struct ui_file *stream, > if (last_access != s_public) > { > last_access = s_public; > - fprintfi_filtered (level + 2, stream, > - "public:\n"); > + print_spaces_filtered_with_print_options (level + 2, stream, flags); > + fprintf_filtered (stream, "public:\n"); > } > } > > return last_access; > } > > +/* Print information about the offset of TYPE inside its union. > + FIELD_IDX represents the index of this TYPE inside the union. We > + just print the type size, and nothing more. > + > + The output is strongly based on pahole(1). */ > + > +static void > +c_print_type_union_field_offset (struct type *type, unsigned int field_idx, > + struct ui_file *stream) > +{ > + struct type *ftype = check_typedef (TYPE_FIELD_TYPE (type, field_idx)); > + > + fprintf_filtered (stream, "/* %4u */", TYPE_LENGTH (ftype)); > +} > + > +/* Print information about the offset of TYPE inside its struct. > + FIELD_IDX represents the index of this TYPE inside the struct, and > + ENDPOS is the end position of the previous type (this is how we > + calculate whether there are holes in the struct). At the end, > + ENDPOS is updated. The wording confuses me a bit. TYPE is not inside a struct; the struct contains fields, not types. And TYPE is the struct type IIUC, not the field type. So it should maybe be something like: Print information about field at index FIELD_IDX of the struct type TYPE. ENDPOS is the one-past-the-end bit position of the previous field (where we expect this field to be if there is no hole). At the end, ENDPOS is updated to the one-past-the-end bit position of the current field. What does OFFSET_BITPOS do? > + > + The output is strongly based on pahole(1). */ > + > +static void > +c_print_type_struct_field_offset (struct type *type, unsigned int field_idx, > + unsigned int *endpos, struct ui_file *stream, > + unsigned int offset_bitpos) > +{ > + struct type *ftype = check_typedef (TYPE_FIELD_TYPE (type, field_idx)); > + unsigned int bitpos = TYPE_FIELD_BITPOS (type, field_idx); > + unsigned int fieldsize_byte = TYPE_LENGTH (ftype); > + unsigned int fieldsize_bit; > + > + if (*endpos > 0 && *endpos < bitpos) Why do you check for *endpos > 0? Did you see a case where *endpos is 0 and bitpos > 0? That would mean that there's a "hole" before the first field. Would we want to show it as a hole anyway? Simon