From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id C7D823858C56 for ; Tue, 25 Oct 2022 07:08:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C7D823858C56 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-out1.suse.de (Postfix) with ESMTPS id F191A22002; Tue, 25 Oct 2022 07:08:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1666681731; 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=X9TaSdDFIuyUERJjK1/NND5AZ3EYuRUYxk5y9SWNnQc=; b=U0bDdk1UCT8g1kytRVFnFXMVv0bS7K3b4oj1QNktAZ9NC+H/UU2CDZsOBDDtbOKdXd41hp 3GL0jIXZjlBRYOqwmgaGc+plUDZEp3xTJtnTvMUJj8dZ5yykA6McjYwuuIvIPBWfPFtIdt dl9B3xDnCejZr7pD6AZhNI0ReVu5Rps= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1666681731; 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=X9TaSdDFIuyUERJjK1/NND5AZ3EYuRUYxk5y9SWNnQc=; b=AQKyEib0yrpdzXDJxnrKdwHWa7JjnfL/2jwg4WP9F1Wd/IjX04QzaRNcQ1A+wUwe0pPx/Y SBuvqyNe16aaaLDw== 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 C71E6134CA; Tue, 25 Oct 2022 07:08:51 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id Qd1GL4OLV2OkdAAAMHmgww (envelope-from ); Tue, 25 Oct 2022 07:08:51 +0000 Content-Type: multipart/mixed; boundary="------------dB88ioOoiXptclYq5zlUKKQd" Message-ID: Date: Tue, 25 Oct 2022 09:08:51 +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: Simon Marchi , 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> From: Tom de Vries In-Reply-To: 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. --------------dB88ioOoiXptclYq5zlUKKQd Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 10/24/22 18:48, Simon Marchi wrote: > On 10/24/22 12:43, Tom de Vries via Gdb-patches 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? > > Maybe by passing the exception object as a parameter and using: > > https://en.cppreference.com/w/cpp/error/rethrow_exception > > ? Thanks for pointing out this possibility, I've tried this out, as attached. I like the fact that we no longer throw something implicitly defined by a catch outside the function, which looks a bit awkward to me. But sofar, I didn't manage to understand from reading the specifications of std::current_exception and std::rethrow_exception whether there will be copying of the exception or not, and AFAICT only the throw without expression guarantees to reuse the existing exception object, so I'm going with that instead (which I'll post in reply to Pedro). Thanks, - Tom --------------dB88ioOoiXptclYq5zlUKKQd 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 RnJvbSA0OGFlNjAyYzM4YzhiODc5YmFhNzZhNzM3ODE3NmJjOWI4MGY4NjYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IFR1ZSwgMjUgT2N0IDIwMjIgMDg6MTc6NDYgKzAyMDAKU3ViamVjdDogW1BBVENI XSBbZ2RiXSBSZXdyaXRlIFJFVEhST1dfT05fVEFSR0VUX0NMT1NFX0VSUk9SIGludG8gZnVu Y3Rpb24KClJlY2VudCBjb21taXQgYjI4MjlmY2Y5YjUgKCJbZ2RiXSBGaXggcmV0aHJvdyBl eGNlcHRpb24gc2xpY2luZyBpbgppbnNlcnRfYnBfbG9jYXRpb24iKSBpbnRyb2R1Y2VkIG1h Y3JvIFJFVEhST1dfT05fVEFSR0VUX0NMT1NFX0VSUk9SLgoKSSB3cm90ZSB0aGlzIGFzIGEg bWFjcm8gaW4gb3JkZXIgdG8gaGF2ZSB0aGUgcmV0aHJvd2luZyB0aHJvdyBiZSBwYXJ0IG9m IHRoZQpzYW1lIGZ1bmN0aW9uIGFzIHRoZSBjYXRjaCwgYnV0IGFzIGl0IHR1cm5zIG91dCB0 aGF0J3Mgbm90IG5lY2Vzc2FyeS4KClJld3JpdGUgaW50byBhIGZ1bmN0aW9uLgoKUmVidWls ZCBvbiB4ODZfNjQtbGludXggYW5kIHRlc3RlZCBnZGIuc2VydmVyL3NlcnZlci1raWxsLmV4 cCwgd2hpY2gKdHJpZ2dlcnMgdGhlIHJldGhyb3cuCi0tLQogZ2RiL2JyZWFrcG9pbnQuYyB8 IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCmluZGV4IGEwMDFl NzhjZmI0Li5jYTA1NWFhNTM5OCAxMDA2NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysg Yi9nZGIvYnJlYWtwb2ludC5jCkBAIC0yNjQ3LDIzICsyNjQ3LDI4IEBAIGJyZWFrcG9pbnRf a2luZCAoY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCwgQ09SRV9BRERSICphZGRyKQog ICAgIHJldHVybiBnZGJhcmNoX2JyZWFrcG9pbnRfa2luZF9mcm9tX3BjIChibC0+Z2RiYXJj aCwgYWRkcik7CiB9CiAKLSNkZWZpbmUgUkVUSFJPV19PTl9UQVJHRVRfQ0xPU0VfRVJST1Io RSkJCQkJXAotICBkbwkJCQkJCQkJCVwKLSAgICB7CQkJCQkJCQkJXAotICAgICAgaWYgKChF KS5yZWFzb24gIT0gMCkJCQkJCQlcCi0JewkJCQkJCQkJXAotCSAgLyogQ2FuJ3Qgc2V0IHRo ZSBicmVha3BvaW50LiAgKi8JCQkJXAotCQkJCQkJCQkJXAotCSAgaWYgKChFKS5lcnJvciA9 PSBUQVJHRVRfQ0xPU0VfRVJST1IpCQkJCVwKLQkgICAgLyogSWYgdGhlIHRhcmdldCBoYXMg Y2xvc2VkIHRoZW4gaXQgd2lsbCBoYXZlIGRlbGV0ZWQgYW55CVwKLQkgICAgICAgYnJlYWtw b2ludHMgaW5zZXJ0ZWQgd2l0aGluIHRoZSB0YXJnZXQgaW5mZXJpb3IsIGFzIGEJXAotCSAg ICAgICByZXN1bHQgYW55IGZ1cnRoZXIgYXR0ZW1wdHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUJ CVwKLQkgICAgICAgYnJlYWtwb2ludCBvYmplY3RzIGlzIG5vdCBwb3NzaWJsZS4gIEp1c3Qg cmV0aHJvdyB0aGUJXAotCSAgICAgICBlcnJvci4gIERvbid0IHVzZSBFIHRvIHJldGhyb3cs IHRvIHByZXZlbnQgb2JqZWN0CVwKLQkgICAgICAgc2xpY2luZyBvZiB0aGUgZXhjZXB0aW9u LiAgKi8JCQkJXAotCSAgICB0aHJvdzsJCQkJCQkJXAotCX0JCQkJCQkJCVwKLSAgICB9IHdo aWxlICgwKQorLyogUmV0aHJvdyB0aGUgY3VycmVudGx5IGhhbmRsZWQgZXhjZXB0aW9uLCBp ZiBpdCdzIGEgVEFSR0VUX0NMT1NFX0VSUk9SLgorICAgRSBpcyBlaXRoZXIgdGhlIGN1cnJl bnRseSBoYW5kbGVkIGV4Y2VwdGlvbiwgb3IgYSBjb3B5LCBvciBhIHNsaWNlZCBjb3B5LAor ICAgc28gd2UgY2FuJ3QgcmV0aHJvdyB0aGF0IG9uZSwgYnV0IHdlIGNhbiB1c2UgaXQgdG8g aW5zcGVjdCB0aGUgcHJvcGVydGllcworICAgb2YgdGhlIGN1cnJlbnRseSBoYW5kbGVkIGV4 Y2VwdGlvbi4gIEluc3RlYWQsIHJldGhyb3cgRVBUUi4gICovCisKK3N0YXRpYyB2b2lkCity ZXRocm93X29uX3RhcmdldF9jbG9zZV9lcnJvciAoY29uc3QgZ2RiX2V4Y2VwdGlvbiAmZSwg c3RkOjpleGNlcHRpb25fcHRyIGVwdHIpCit7CisgIGlmIChlLnJlYXNvbiA9PSAwKQorICAg IHJldHVybjsKKyAgLyogQ2FuJ3Qgc2V0IHRoZSBicmVha3BvaW50LiAgKi8KKworICBpZiAo ZS5lcnJvciAhPSBUQVJHRVRfQ0xPU0VfRVJST1IpCisgICAgcmV0dXJuOworCisgIC8qIElm IHRoZSB0YXJnZXQgaGFzIGNsb3NlZCB0aGVuIGl0IHdpbGwgaGF2ZSBkZWxldGVkIGFueSBi cmVha3BvaW50cworICAgICBpbnNlcnRlZCB3aXRoaW4gdGhlIHRhcmdldCBpbmZlcmlvciwg YXMgYSByZXN1bHQgYW55IGZ1cnRoZXIgYXR0ZW1wdHMKKyAgICAgdG8gaW50ZXJhY3Qgd2l0 aCB0aGUgYnJlYWtwb2ludCBvYmplY3RzIGlzIG5vdCBwb3NzaWJsZS4gIEp1c3QgcmV0aHJv dworICAgICB0aGUgZXJyb3IuICBEb24ndCB1c2UgZSB0byByZXRocm93LCB0byBwcmV2ZW50 IG9iamVjdCBzbGljaW5nIG9mIHRoZQorICAgICBleGNlcHRpb24uICAqLworICBzdGQ6OnJl dGhyb3dfZXhjZXB0aW9uIChlcHRyKTsKK30KIAogLyogSW5zZXJ0IGEgbG93LWxldmVsICJi cmVha3BvaW50IiBvZiBzb21lIHR5cGUuICBCTCBpcyB0aGUgYnJlYWtwb2ludAogICAgbG9j YXRpb24uICBBbnkgZXJyb3IgbWVzc2FnZXMgYXJlIHByaW50ZWQgdG8gVE1QX0VSUk9SX1NU UkVBTTsgYW5kCkBAIC0yNzUyLDcgKzI3NTcsNyBAQCBpbnNlcnRfYnBfbG9jYXRpb24gKHN0 cnVjdCBicF9sb2NhdGlvbiAqYmwsCiAJICAgIH0KIAkgIGNhdGNoIChnZGJfZXhjZXB0aW9u ICZlKQogCSAgICB7Ci0JICAgICAgUkVUSFJPV19PTl9UQVJHRVRfQ0xPU0VfRVJST1IgKGUp OworCSAgICAgIHJldGhyb3dfb25fdGFyZ2V0X2Nsb3NlX2Vycm9yIChlLCBzdGQ6OmN1cnJl bnRfZXhjZXB0aW9uKCkpOwogCSAgICAgIGJwX2V4Y3B0ID0gc3RkOjptb3ZlIChlKTsKIAkg ICAgfQogCX0KQEAgLTI3OTIsNyArMjc5Nyw3IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3Ry dWN0IGJwX2xvY2F0aW9uICpibCwKIAkJICAgIH0KIAkJICBjYXRjaCAoZ2RiX2V4Y2VwdGlv biAmZSkKIAkJICAgIHsKLQkJICAgICAgUkVUSFJPV19PTl9UQVJHRVRfQ0xPU0VfRVJST1Ig KGUpOworCQkgICAgICByZXRocm93X29uX3RhcmdldF9jbG9zZV9lcnJvciAoZSwgc3RkOjpj dXJyZW50X2V4Y2VwdGlvbigpKTsKIAkJICAgICAgYnBfZXhjcHQgPSBzdGQ6Om1vdmUgKGUp OwogCQkgICAgfQogCkBAIC0yODE3LDcgKzI4MjIsNyBAQCBpbnNlcnRfYnBfbG9jYXRpb24g KHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsCiAJCX0KIAkgICAgICBjYXRjaCAoZ2RiX2V4Y2Vw dGlvbiAmZSkKIAkJewotCQkgIFJFVEhST1dfT05fVEFSR0VUX0NMT1NFX0VSUk9SIChlKTsK KwkJICByZXRocm93X29uX3RhcmdldF9jbG9zZV9lcnJvciAoZSwgc3RkOjpjdXJyZW50X2V4 Y2VwdGlvbigpKTsKIAkJICBicF9leGNwdCA9IHN0ZDo6bW92ZSAoZSk7CiAJCX0KIAkgICAg fQoKYmFzZS1jb21taXQ6IGM2ZDIwNDAxYTIwMTQ4YjAzMmNiN2ZiOWRiYTA3OTQ2NmE5Mzgz Y2MKLS0gCjIuMzUuMwoK --------------dB88ioOoiXptclYq5zlUKKQd--