From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id 378EA3858435 for ; Tue, 25 Oct 2022 07:14:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 378EA3858435 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 69F831F74A; Tue, 25 Oct 2022 07:14:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1666682063; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=u+HhWz95x1bmDKtlqopgK0p1MKXoz/USjtL1NTxw+iQ=; b=odJOuw45EoDInaj11k4mcRvAMwcth/0Bd06kWhEgEBfTzdLxYXP5HLv0BsfRGxacQaToJu 0NX7CvS5euAY0eZCh4WNxkcVJ2EAc2Gw68b4k8Oxj24ASVWSmDGahQoPuyFPDbhVLs06TA 9o76O/DagJM/j27fph2rE//2ueKeBEY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1666682063; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=u+HhWz95x1bmDKtlqopgK0p1MKXoz/USjtL1NTxw+iQ=; b=a+7J4HQ/E1MO/E8ekeuxeWc9WZ0qqJ5Kv21C9u7rql5XadHTRdE4du7mH/YKvnmmRCAy1O sb+EY4V5fU27Y5Dw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 4F48A134CA; Tue, 25 Oct 2022 07:14:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id iLAgEs+MV2MddwAAMHmgww (envelope-from ); Tue, 25 Oct 2022 07:14:23 +0000 Content-Type: multipart/mixed; boundary="------------1hw1gwKKo80gfj2blMM459iW" Message-ID: <546f7fe4-7caa-4b78-bfd5-19480d60420e@suse.de> Date: Tue, 25 Oct 2022 09:14:22 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [PATCH 2/2] [gdb] Fix rethrow exception slicing in insert_bp_location Content-Language: en-US To: Pedro Alves , gdb-patches@sourceware.org References: <20221024084913.19429-1-tdevries@suse.de> <20221024084913.19429-3-tdevries@suse.de> <02ad6f69-2a1b-b938-0ab4-ba6288f10fde@suse.de> <0203ad6e-426f-3e8f-fac8-1d2f0e8781a6@palves.net> From: Tom de Vries In-Reply-To: <0203ad6e-426f-3e8f-fac8-1d2f0e8781a6@palves.net> X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP 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: This is a multi-part message in MIME format. --------------1hw1gwKKo80gfj2blMM459iW Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 10/24/22 18:51, Pedro Alves wrote: > > > On 2022-10-24 5:43 p.m., Tom de Vries wrote: >> On 10/24/22 18:36, Pedro Alves wrote: >>> On 2022-10-24 9:49 a.m., Tom de Vries via Gdb-patches wrote: >>> >>>> +#define RETHROW_ON_TARGET_CLOSE_ERROR(E)                \ >>>> +  do                                    \ >>>> +    {                                    \ >>>> +      if ((E).reason != 0)                        \ >>>> +    {                                \ >>>> +      /* Can't set the breakpoint.  */                \ >>>> +                                    \ >>>> +      if ((E).error == TARGET_CLOSE_ERROR)                \ >>>> +        /* If the target has closed then it will have deleted any    \ >>>> +           breakpoints inserted within the target inferior, as a    \ >>>> +           result any further attempts to interact with the        \ >>>> +           breakpoint objects is not possible.  Just rethrow the    \ >>>> +           error.  Don't use E to rethrow, to prevent object    \ >>>> +           slicing of the exception.  */                \ >>>> +        throw;                            \ >>>> +    }                                \ >>>> +    } while (0) >>> >>> Is there a reason this is a macro instead of a function? >> >> yes, the throw without expression. >> >> Do you know of a way to do this using a function? > > WDYM? I believe it should Just Work. E.g.: > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > #include > > struct excpt > { > }; > > struct excpt2 : excpt > { > }; > > void > rethrow () > { > throw; > } > > int main () > { > try > { > try > { > throw excpt2{}; > } > catch (const excpt &) > { > rethrow (); > } > } > catch (const excpt2 &) > { > printf ("caught excpt2\n"); > } > return 0; > } > > $ g++ test_rethrow.cc -o test_rethrow > $ ./test_rethrow > caught excpt2 > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hmm, it does indeed, I didn't realize this was possible. Fixed in attached patch. Any further comments? Thanks, - Tom --------------1hw1gwKKo80gfj2blMM459iW Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-Rewrite-RETHROW_ON_TARGET_CLOSE_ERROR-into-funct.patch" Content-Disposition: attachment; filename*0="0001-gdb-Rewrite-RETHROW_ON_TARGET_CLOSE_ERROR-into-funct.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2MzNkZmI5NjQ1YTI4MWJkMWQ2OWI2M2QwNDZkMmVkODQwOGNiMGQzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IFR1ZSwgMjUgT2N0IDIwMjIgMDg6MTc6NDYgKzAyMDAKU3ViamVjdDogW1BBVENI XSBbZ2RiXSBSZXdyaXRlIFJFVEhST1dfT05fVEFSR0VUX0NMT1NFX0VSUk9SIGludG8gZnVu Y3Rpb24KClJlY2VudCBjb21taXQgYjI4MjlmY2Y5YjUgKCJbZ2RiXSBGaXggcmV0aHJvdyBl eGNlcHRpb24gc2xpY2luZyBpbgppbnNlcnRfYnBfbG9jYXRpb24iKSBpbnRyb2R1Y2VkIG1h Y3JvIFJFVEhST1dfT05fVEFSR0VUX0NMT1NFX0VSUk9SLgoKSSB3cm90ZSB0aGlzIGFzIGEg bWFjcm8gaW4gb3JkZXIgdG8gaGF2ZSB0aGUgcmV0aHJvd2luZyB0aHJvdyBiZSBwYXJ0IG9m IHRoZQpzYW1lIGZ1bmN0aW9uIGFzIHRoZSBjYXRjaCwgYnV0IGFzIGl0IHR1cm5zIG91dCB0 aGF0IG5vdCBuZWNlc3NhcnkuCgpSZXdyaXRlIGludG8gYSBmdW5jdGlvbi4KClRlc3RlZCBv biB4ODZfNjQtbGludXguCi0tLQogZ2RiL2JyZWFrcG9pbnQuYyB8IDQ1ICsrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI1 IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi9icmVh a3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCmluZGV4IGEwMDFlNzhjZmI0Li4zMDgyNjAz MjM2MCAxMDA2NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysgYi9nZGIvYnJlYWtwb2lu dC5jCkBAIC0yNjQ3LDIzICsyNjQ3LDI4IEBAIGJyZWFrcG9pbnRfa2luZCAoY29uc3Qgc3Ry dWN0IGJwX2xvY2F0aW9uICpibCwgQ09SRV9BRERSICphZGRyKQogICAgIHJldHVybiBnZGJh cmNoX2JyZWFrcG9pbnRfa2luZF9mcm9tX3BjIChibC0+Z2RiYXJjaCwgYWRkcik7CiB9CiAK LSNkZWZpbmUgUkVUSFJPV19PTl9UQVJHRVRfQ0xPU0VfRVJST1IoRSkJCQkJXAotICBkbwkJ CQkJCQkJCVwKLSAgICB7CQkJCQkJCQkJXAotICAgICAgaWYgKChFKS5yZWFzb24gIT0gMCkJ CQkJCQlcCi0JewkJCQkJCQkJXAotCSAgLyogQ2FuJ3Qgc2V0IHRoZSBicmVha3BvaW50LiAg Ki8JCQkJXAotCQkJCQkJCQkJXAotCSAgaWYgKChFKS5lcnJvciA9PSBUQVJHRVRfQ0xPU0Vf RVJST1IpCQkJCVwKLQkgICAgLyogSWYgdGhlIHRhcmdldCBoYXMgY2xvc2VkIHRoZW4gaXQg d2lsbCBoYXZlIGRlbGV0ZWQgYW55CVwKLQkgICAgICAgYnJlYWtwb2ludHMgaW5zZXJ0ZWQg d2l0aGluIHRoZSB0YXJnZXQgaW5mZXJpb3IsIGFzIGEJXAotCSAgICAgICByZXN1bHQgYW55 IGZ1cnRoZXIgYXR0ZW1wdHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUJCVwKLQkgICAgICAgYnJl YWtwb2ludCBvYmplY3RzIGlzIG5vdCBwb3NzaWJsZS4gIEp1c3QgcmV0aHJvdyB0aGUJXAot CSAgICAgICBlcnJvci4gIERvbid0IHVzZSBFIHRvIHJldGhyb3csIHRvIHByZXZlbnQgb2Jq ZWN0CVwKLQkgICAgICAgc2xpY2luZyBvZiB0aGUgZXhjZXB0aW9uLiAgKi8JCQkJXAotCSAg ICB0aHJvdzsJCQkJCQkJXAotCX0JCQkJCQkJCVwKLSAgICB9IHdoaWxlICgwKQorLyogUmV0 aHJvdyB0aGUgY3VycmVudGx5IGhhbmRsZWQgZXhjZXB0aW9uLCBpZiBpdCdzIGEgVEFSR0VU X0NMT1NFX0VSUk9SLgorICAgRSBpcyBlaXRoZXIgdGhlIGN1cnJlbnRseSBoYW5kbGVkIGV4 Y2VwdGlvbiwgb3IgYSBjb3B5LCBvciBhIHNsaWNlZCBjb3B5LAorICAgc28gd2UgY2FuJ3Qg cmV0aHJvdyB0aGF0IG9uZSwgYnV0IHdlIGNhbiB1c2UgaXQgdG8gaW5zcGVjdCB0aGUgcHJv cGVydGllcworICAgb2YgdGhlIGN1cnJlbnRseSBoYW5kbGVkIGV4Y2VwdGlvbi4gICovCisK K3N0YXRpYyB2b2lkCityZXRocm93X29uX3RhcmdldF9jbG9zZV9lcnJvciAoY29uc3QgZ2Ri X2V4Y2VwdGlvbiAmZSkKK3sKKyAgaWYgKGUucmVhc29uID09IDApCisgICAgcmV0dXJuOwor ICAvKiBDYW4ndCBzZXQgdGhlIGJyZWFrcG9pbnQuICAqLworCisgIGlmIChlLmVycm9yICE9 IFRBUkdFVF9DTE9TRV9FUlJPUikKKyAgICByZXR1cm47CisKKyAgLyogSWYgdGhlIHRhcmdl dCBoYXMgY2xvc2VkIHRoZW4gaXQgd2lsbCBoYXZlIGRlbGV0ZWQgYW55IGJyZWFrcG9pbnRz CisgICAgIGluc2VydGVkIHdpdGhpbiB0aGUgdGFyZ2V0IGluZmVyaW9yLCBhcyBhIHJlc3Vs dCBhbnkgZnVydGhlciBhdHRlbXB0cworICAgICB0byBpbnRlcmFjdCB3aXRoIHRoZSBicmVh a3BvaW50IG9iamVjdHMgaXMgbm90IHBvc3NpYmxlLiAgSnVzdCByZXRocm93CisgICAgIHRo ZSBlcnJvci4gIERvbid0IHVzZSBlIHRvIHJldGhyb3csIHRvIHByZXZlbnQgb2JqZWN0IHNs aWNpbmcgb2YgdGhlCisgICAgIGV4Y2VwdGlvbi4gICovCisgIHRocm93OworfQogCiAvKiBJ bnNlcnQgYSBsb3ctbGV2ZWwgImJyZWFrcG9pbnQiIG9mIHNvbWUgdHlwZS4gIEJMIGlzIHRo ZSBicmVha3BvaW50CiAgICBsb2NhdGlvbi4gIEFueSBlcnJvciBtZXNzYWdlcyBhcmUgcHJp bnRlZCB0byBUTVBfRVJST1JfU1RSRUFNOyBhbmQKQEAgLTI3NTIsNyArMjc1Nyw3IEBAIGlu c2VydF9icF9sb2NhdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpibCwKIAkgICAgfQogCSAg Y2F0Y2ggKGdkYl9leGNlcHRpb24gJmUpCiAJICAgIHsKLQkgICAgICBSRVRIUk9XX09OX1RB UkdFVF9DTE9TRV9FUlJPUiAoZSk7CisJICAgICAgcmV0aHJvd19vbl90YXJnZXRfY2xvc2Vf ZXJyb3IgKGUpOwogCSAgICAgIGJwX2V4Y3B0ID0gc3RkOjptb3ZlIChlKTsKIAkgICAgfQog CX0KQEAgLTI3OTIsNyArMjc5Nyw3IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3RydWN0IGJw X2xvY2F0aW9uICpibCwKIAkJICAgIH0KIAkJICBjYXRjaCAoZ2RiX2V4Y2VwdGlvbiAmZSkK IAkJICAgIHsKLQkJICAgICAgUkVUSFJPV19PTl9UQVJHRVRfQ0xPU0VfRVJST1IgKGUpOwor CQkgICAgICByZXRocm93X29uX3RhcmdldF9jbG9zZV9lcnJvciAoZSk7CiAJCSAgICAgIGJw X2V4Y3B0ID0gc3RkOjptb3ZlIChlKTsKIAkJICAgIH0KIApAQCAtMjgxNyw3ICsyODIyLDcg QEAgaW5zZXJ0X2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLAogCQl9CiAJ ICAgICAgY2F0Y2ggKGdkYl9leGNlcHRpb24gJmUpCiAJCXsKLQkJICBSRVRIUk9XX09OX1RB UkdFVF9DTE9TRV9FUlJPUiAoZSk7CisJCSAgcmV0aHJvd19vbl90YXJnZXRfY2xvc2VfZXJy b3IgKGUpOwogCQkgIGJwX2V4Y3B0ID0gc3RkOjptb3ZlIChlKTsKIAkJfQogCSAgICB9Cgpi YXNlLWNvbW1pdDogYzZkMjA0MDFhMjAxNDhiMDMyY2I3ZmI5ZGJhMDc5NDY2YTkzODNjYwot LSAKMi4zNS4zCgo= --------------1hw1gwKKo80gfj2blMM459iW--