From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 110105 invoked by alias); 4 Sep 2018 15:13:33 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 110095 invoked by uid 89); 4 Sep 2018 15:13:33 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-oi0-f67.google.com Received: from mail-oi0-f67.google.com (HELO mail-oi0-f67.google.com) (209.85.218.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 04 Sep 2018 15:13:31 +0000 Received: by mail-oi0-f67.google.com with SMTP id k12-v6so7359051oiw.8 for ; Tue, 04 Sep 2018 08:13:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=u9RH7nGdXuZjfzdWruhB6XO8ndCrF44hiHeBN9amTo0=; b=PB0GztA4d/slne9wlEmyUe0CkerwEOV1JRLh+Gub5vxeXyQsbpmB9PUliIeCk3kYG1 6SmQ1TZrslBb5lSALBKxvV5MJBk3Oo5m1noFVfOO/X/gmV1SpLQ5ESXVPQGv9X3kc23W 17Xq1TTqISdKu6sf7ChPfjHbg827/VsHUgclwawVdI7fk3/z97ui/2RctRGbs77uaD0Y MkrAL5uhXpqDLRUvWAX5wmSsdHwLiS2O/9VH/nZdu7Z7bWafKgywa8MfPNJ+UXOJjeuG OHQ9INk1E0Rwqotx/0w7wS+CdRoz1JVwx0a1loEi2RFGgfDk2yMAv4BVMoGepqc2FARf 8XBA== MIME-Version: 1.0 Received: by 2002:a4a:8ad1:0:0:0:0:0 with HTTP; Tue, 4 Sep 2018 08:13:28 -0700 (PDT) From: "H.J. Lu" Date: Tue, 04 Sep 2018 15:13:00 -0000 Message-ID: Subject: [PATCH] DWARF: Allow hard frame pointer even if frame pointer isn't used To: Michael Matz Cc: Segher Boessenkool , Jason Merrill , GCC Patches , Cary Coutant Content-Type: multipart/mixed; boundary="000000000000acc3f605750d1911" X-IsSubscribed: yes X-SW-Source: 2018-09/txt/msg00202.txt.bz2 --000000000000acc3f605750d1911 Content-Type: text/plain; charset="UTF-8" Content-length: 2743 On Mon, Sep 3, 2018 at 10:01 AM, H.J. Lu wrote: > On Mon, Sep 3, 2018 at 9:44 AM, Michael Matz wrote: >> Hi, >> >> On Mon, 3 Sep 2018, H.J. Lu wrote: >> >>> > So, what's the testcase testing then? Before the patch it doesn't ICE, >>> > after the patch it doesn't ICE. What should I look out for so I can see >>> > that what the testcase is producing without the patch is wrong? >>> >>> Before the patch, debug info is wrong since it uses hard frame pointer >>> which isn't set up for the function. You can do "readelf -w" on .o file to >>> verify the debug info. >> >> Yeah, that's what I thought as well, but it's correct: >> >> % ./gcc/cc1plus -quiet -O2 -g -fno-omit-frame-pointer -fvar-tracking x.cc >> % gcc -c x.s >> % readelf -wfi x.o >> ... >> <1><8a>: Abbrev Number: 9 (DW_TAG_subprogram) >> <8b> DW_AT_specification: <0x3a> >> <8f> DW_AT_decl_line : 6 >> <90> DW_AT_decl_column : 5 >> <91> DW_AT_object_pointer: <0xa7> >> <95> DW_AT_low_pc : 0x0 >> <9d> DW_AT_high_pc : 0x3 >> DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa) >> DW_AT_GNU_all_call_sites: 1 >> ... >> <2>: Abbrev Number: 11 (DW_TAG_formal_parameter) >> DW_AT_name : d >> <101> DW_AT_decl_file : 1 >> <102> DW_AT_decl_line : 6 >> <103> DW_AT_decl_column : 63 >> <104> DW_AT_type : <0x78> >> <108> DW_AT_location : 2 byte block: 91 8 (DW_OP_fbreg: 8) >> ... >> DW_CFA_def_cfa: r7 (rsp) ofs 8 >> DW_CFA_offset: r16 (rip) at cfa-8 >> DW_CFA_nop >> DW_CFA_nop >> ... >> >> So, argument 'd' is supposed to be at DW_AT_frame_base + 8, which is >> %rsp+8+8, aka %rsp+16, which is correct given that it's the eigth argument >> (including the implicit this parameter). > > Can we use DW_AT_frame_base when the frame pointer isn't available? > If yes, > > gcc_assert ((SUPPORTS_STACK_ALIGNMENT > && (elim == hard_frame_pointer_rtx > || elim == stack_pointer_rtx)) > || elim == (frame_pointer_needed > ? hard_frame_pointer_rtx > : stack_pointer_rtx)); > > should be changed to > > gcc_assert (elim == hard_frame_pointer_rtx > || elim == stack_pointer_rtx); > > This will also fix: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86593 > Since hard frame pointer is encoded with DW_OP_fbreg which uses the DW_AT_frame_base attribute, not hard frame pointer directly, we should allow hard frame pointer when generating DWARF info even if frame pointer isn't used. OK for trunk? -- H.J. --000000000000acc3f605750d1911 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-DWARF-Allow-hard-frame-pointer-even-if-frame-pointer.patch" Content-Disposition: attachment; filename="0001-DWARF-Allow-hard-frame-pointer-even-if-frame-pointer.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jlnupmq60 Content-length: 5246 RnJvbSA2YzE2MTA1ZTg4YzI2MzViZDU4ZmM5MDRlN2QyODkwMWE3ZjE5OGY1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBTZXAgMjAxOCAwODow MTozMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIERXQVJGOiBBbGxvdyBoYXJk IGZyYW1lIHBvaW50ZXIgZXZlbiBpZiBmcmFtZSBwb2ludGVyIGlzbid0CiB1 c2VkCgpyMjUxMDI4Cgpjb21taXQgY2Q1NTdmZjYzZjM4OGFkMjdjMzc2ZDBh MjI1ZTc0ZDM1OTRhNmY5ZApBdXRob3I6IGhqbCA8aGpsQDEzOGJjNzVkLTBk MDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KRGF0ZTogICBUaHUgQXVnIDEw IDE1OjI5OjA1IDIwMTcgKzAwMDAKCiAgICBpMzg2OiBEb24ndCB1c2UgZnJh bWUgcG9pbnRlciB3aXRob3V0IHN0YWNrIGFjY2VzcwoKICAgIFdoZW4gdGhl cmUgaXMgbm8gc3RhY2sgYWNjZXNzLCB0aGVyZSBpcyBubyBuZWVkIHRvIHVz ZSBmcmFtZSBwb2ludGVyCiAgICBldmVuIGlmIC1mbm8tb21pdC1mcmFtZS1w b2ludGVyIGlzIHVzZWQgYW5kIGNhbGxlcidzIGZyYW1lIHBvaW50ZXIgaXMK ICAgIHVuY2hhbmdlZC4KCmZyYW1lIHBvaW50ZXIgbWF5IG5vdCBiZSBhdmFp bGFibGUgZXZlbiBpZiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBpcwp1c2Vk LiAgV2hlbiB0aGlzIGhhcHBlbmVkLCBhcmcgcG9pbnRlciBtYXkgYmUgZWxp bWluYXRlZCBieSBoYXJkIGZyYW1lCnBvaW50ZXIuICBTaW5jZSBoYXJkIGZy YW1lIHBvaW50ZXIgaXMgZW5jb2RlZCB3aXRoIERXX09QX2ZicmVnIHdoaWNo CnVzZXMgdGhlIERXX0FUX2ZyYW1lX2Jhc2UgYXR0cmlidXRlLCBub3QgaGFy ZCBmcmFtZSBwb2ludGVyIGRpcmVjdGx5LAp3ZSBzaG91bGQgYWxsb3cgaGFy ZCBmcmFtZSBwb2ludGVyIHdoZW4gZ2VuZXJhdGluZyBEV0FSRiBpbmZvIGV2 ZW4gaWYKZnJhbWUgcG9pbnRlciBpc24ndCB1c2VkLgoKZ2NjLwoKCVBSIGRl YnVnLzg2NTkzCgkqIGR3YXJmMm91dC5jIChiYXNlZF9sb2NfZGVzY3IpOiBB bGxvdyBoYXJkIGZyYW1lIHBvaW50ZXIgZXZlbgoJaWYgZnJhbWUgcG9pbnRl ciBpc24ndCB1c2VkLgoJKGNvbXB1dGVfZnJhbWVfcG9pbnRlcl90b19mYl9k aXNwbGFjZW1lbnQpOiBMaWtld2lzZS4KCmdjYy90ZXN0c3VpdGUvCgoJUFIg ZGVidWcvODY1OTMKCSogZysrLmRnL3ByODY1OTMuQzogTmV3IHRlc3QuCi0t LQogZ2NjL2R3YXJmMm91dC5jICAgICAgICAgICAgICAgIHwgMjUgKysrKysr KysrKysrLS0tLS0tLS0tLS0tLQogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI4 NjU5My5DIHwgMTEgKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjMg aW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI4NjU5My5DCgpkaWZmIC0t Z2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCmluZGV4 IDc3MzE3ZWQyNTc1Li40MGNmZGY1NjMzNyAxMDA2NDQKLS0tIGEvZ2NjL2R3 YXJmMm91dC5jCisrKyBiL2djYy9kd2FyZjJvdXQuYwpAQCAtMTQzMjUsMTMg KzE0MzI1LDEzIEBAIGJhc2VkX2xvY19kZXNjciAocnR4IHJlZywgcG9seV9p bnQ2NCBvZmZzZXQsCiAKICAgICAgIGlmIChlbGltICE9IHJlZykKIAl7CisJ ICAvKiBBbGxvdyBoYXJkIGZyYW1lIHBvaW50ZXIgaGVyZSBldmVuIGlmIGZy YW1lIHBvaW50ZXIKKwkgICAgaXNuJ3QgdXNlZCBzaW5jZSBoYXJkIGZyYW1l IHBvaW50ZXIgaXMgZW5jb2RlZCB3aXRoCisJICAgIERXX09QX2ZicmVnIHdo aWNoIHVzZXMgdGhlIERXX0FUX2ZyYW1lX2Jhc2UgYXR0cmlidXRlLAorCSAg ICBub3QgaGFyZCBmcmFtZSBwb2ludGVyIGRpcmVjdGx5LiAgKi8KIAkgIGVs aW0gPSBzdHJpcF9vZmZzZXRfYW5kX2FkZCAoZWxpbSwgJm9mZnNldCk7Ci0J ICBnY2NfYXNzZXJ0ICgoU1VQUE9SVFNfU1RBQ0tfQUxJR05NRU5UCi0JCSAg ICAgICAmJiAoZWxpbSA9PSBoYXJkX2ZyYW1lX3BvaW50ZXJfcnR4Ci0JCQkg ICB8fCBlbGltID09IHN0YWNrX3BvaW50ZXJfcnR4KSkKLQkgICAgICAgICAg ICAgIHx8IGVsaW0gPT0gKGZyYW1lX3BvaW50ZXJfbmVlZGVkCi0JCQkJICA/ IGhhcmRfZnJhbWVfcG9pbnRlcl9ydHgKLQkJCQkgIDogc3RhY2tfcG9pbnRl cl9ydHgpKTsKKwkgIGdjY19hc3NlcnQgKGVsaW0gPT0gaGFyZF9mcmFtZV9w b2ludGVyX3J0eAorCQkgICAgICB8fCBlbGltID09IHN0YWNrX3BvaW50ZXJf cnR4KTsKIAogCSAgLyogSWYgZHJhcCByZWdpc3RlciBpcyB1c2VkIHRvIGFs aWduIHN0YWNrLCB1c2UgZnJhbWUKIAkgICAgIHBvaW50ZXIgKyBvZmZzZXQg dG8gYWNjZXNzIHN0YWNrIHZhcmlhYmxlcy4gIElmIHN0YWNrCkBAIC0yMDUx MiwxNCArMjA1MTIsMTMgQEAgY29tcHV0ZV9mcmFtZV9wb2ludGVyX3RvX2Zi X2Rpc3BsYWNlbWVudCAocG9seV9pbnQ2NCBvZmZzZXQpCiAgICAgIGluIHdo aWNoIHRvIGVsaW1pbmF0ZS4gIFRoaXMgaXMgYmVjYXVzZSBpdCdzIHN0YWNr IHBvaW50ZXIgaXNuJ3QgCiAgICAgIGRpcmVjdGx5IGFjY2Vzc2libGUgYXMg YSByZWdpc3RlciB3aXRoaW4gdGhlIElTQS4gIFRvIHdvcmsgYXJvdW5kCiAg ICAgIHRoaXMsIGFzc3VtZSB0aGF0IHdoaWxlIHdlIGNhbm5vdCBwcm92aWRl IGEgcHJvcGVyIHZhbHVlIGZvcgotICAgICBmcmFtZV9wb2ludGVyX2ZiX29m ZnNldCwgd2Ugd29uJ3QgbmVlZCBvbmUgZWl0aGVyLiAgKi8KKyAgICAgZnJh bWVfcG9pbnRlcl9mYl9vZmZzZXQsIHdlIHdvbid0IG5lZWQgb25lIGVpdGhl ci4gIFdlIGNhbiB1c2UKKyAgICAgaGFyZCBmcmFtZSBwb2ludGVyIGluIGRl YnVnIGluZm8gZXZlbiBpZiBmcmFtZSBwb2ludGVyIGlzbid0IHVzZWQKKyAg ICAgc2luY2UgaGFyZCBmcmFtZSBwb2ludGVyIGluIGRlYnVnIGluZm8gaXMg ZW5jb2RlZCB3aXRoIERXX09QX2ZicmVnCisgICAgIHdoaWNoIHVzZXMgdGhl IERXX0FUX2ZyYW1lX2Jhc2UgYXR0cmlidXRlLCBub3QgaGFyZCBmcmFtZSBw b2ludGVyCisgICAgIGRpcmVjdGx5LiAgKi8KICAgZnJhbWVfcG9pbnRlcl9m Yl9vZmZzZXRfdmFsaWQKLSAgICA9ICgoU1VQUE9SVFNfU1RBQ0tfQUxJR05N RU5UCi0JJiYgKGVsaW0gPT0gaGFyZF9mcmFtZV9wb2ludGVyX3J0eAotCSAg ICB8fCBlbGltID09IHN0YWNrX3BvaW50ZXJfcnR4KSkKLSAgICAgICB8fCBl bGltID09IChmcmFtZV9wb2ludGVyX25lZWRlZAotCQkgICA/IGhhcmRfZnJh bWVfcG9pbnRlcl9ydHgKLQkJICAgOiBzdGFja19wb2ludGVyX3J0eCkpOwor ICAgID0gKGVsaW0gPT0gaGFyZF9mcmFtZV9wb2ludGVyX3J0eCB8fCBlbGlt ID09IHN0YWNrX3BvaW50ZXJfcnR4KTsKIH0KIAogLyogR2VuZXJhdGUgYSBE V19BVF9uYW1lIGF0dHJpYnV0ZSBnaXZlbiBzb21lIHN0cmluZyB2YWx1ZSB0 byBiZSBpbmNsdWRlZCBhcwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvcHI4NjU5My5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI4NjU5 My5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m ZWVkOGMzNzQzZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL3ByODY1OTMuQwpAQCAtMCwwICsxLDExIEBACisvLyB7IGRnLW9w dGlvbnMgIi1PIC1nIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIiB9CisKK3N0 cnVjdCBGb28KK3sKKyAgaW50IGJhcihpbnQgYSwgaW50IGIsIGludCBjLCBp bnQgaTEsIGludCBpMiwgaW50IGkzLCBpbnQgZCk7Cit9OworCitpbnQgRm9v OjpiYXIoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGkxLCBpbnQgaTIsIGlu dCBpMywgaW50IGQpCit7CisgIHJldHVybiAwOworfQotLSAKMi4xNy4xCgo= --000000000000acc3f605750d1911--