From patchwork Fri Oct 21 20:38:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 685268 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3t0yFQ4yPdz9svs for ; Sat, 22 Oct 2016 07:38:50 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=i2FoeSxM; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:references:date:in-reply-to:message-id :mime-version:content-type; q=dns; s=default; b=MVebS6JHIXV0zVe7 NNos544tV+8sVfQzOw2cN/tULm/spwMZBTeTQwJ/2tnmGLHKuFVx55xGlZ/AzDI+ DAY1o11wPj6u7SsFd5oOdElPrB7rISPawNsm87TVnHeF+n1zdyO8bm+wcIyMhzXC cvogsm/Xrvk8PCuATBtNGvpQ1Ns= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:references:date:in-reply-to:message-id :mime-version:content-type; s=default; bh=kv4oiGZdHcWuuH48pJny5z MQCO8=; b=i2FoeSxMz9CI9Iq5yFOHRcAyWd3n1M3F5XXYgyNceVHCq6aiKr2NnU GZ5eDcndmmVNiR9HE8xmlI113prHuSKFAqznNtaOUurk+/yTK7nYZbO949b7ZSAO qVa3waZh/uqRp+QRd/jkEtHoOhzlTJJINPpVhNU1iS4zzBLKKLgoo= Received: (qmail 103391 invoked by alias); 21 Oct 2016 20:38:42 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 103381 invoked by uid 89); 21 Oct 2016 20:38:40 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:3362, safest, H*RU:cmgw2, H*r:cmgw2 X-HELO: gproxy9-pub.mail.unifiedlayer.com Received: from gproxy9-pub.mail.unifiedlayer.com (HELO gproxy9-pub.mail.unifiedlayer.com) (69.89.20.122) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with SMTP; Fri, 21 Oct 2016 20:38:30 +0000 Received: (qmail 19469 invoked by uid 0); 21 Oct 2016 20:38:21 -0000 Received: from unknown (HELO cmgw2) (10.0.90.83) by gproxy9.mail.unifiedlayer.com with SMTP; 21 Oct 2016 20:38:21 -0000 Received: from box522.bluehost.com ([74.220.219.122]) by cmgw2 with id yLeC1t00M2f2jeq01LeFG1; Fri, 21 Oct 2016 14:38:19 -0600 X-Authority-Analysis: v=2.1 cv=PIacp5aC c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=L9H7d07YOLsA:10 a=9cW_t1CCXrUA:10 a=s5jvgZ67dGcA:10 a=CH0kA5CcgfcA:10 a=20KFwNOVAAAA:8 a=zstS-IiYAAAA:8 a=2p9CjdHerLABK0r5_2kA:9 a=FPQcEfYY9E33kP4a:21 a=Zvbw-PGihyKYFpA7:21 a=e_O65bzb51kRm2y5VmPK:22 a=4G6NA9xxw8l3yy4pmD5M:22 Received: from 174-16-143-211.hlrn.qwest.net ([174.16.143.211]:37076 helo=pokyo) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.86_1) (envelope-from ) id 1bxgZx-0001JT-IB; Fri, 21 Oct 2016 14:38:13 -0600 From: Tom Tromey To: Jakub Jelinek Cc: Tom Tromey , gcc-patches@gcc.gnu.org Subject: Re: [PATCH] PR debug/77315 - use DW_OP_form_tls_address References: <1477070253-20635-1-git-send-email-tom@tromey.com> <20161021172617.GP7282@tucnak.redhat.com> Date: Fri, 21 Oct 2016 14:38:11 -0600 In-Reply-To: <20161021172617.GP7282@tucnak.redhat.com> (Jakub Jelinek's message of "Fri, 21 Oct 2016 19:26:17 +0200") Message-ID: <87oa2dxwss.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) MIME-Version: 1.0 X-BWhitelist: no X-Exim-ID: 1bxgZx-0001JT-IB X-Source-Sender: 174-16-143-211.hlrn.qwest.net (pokyo) [174.16.143.211]:37076 X-Source-Auth: tom+tromey.com X-Email-Count: 3 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== >>>>> "Jakub" == Jakub Jelinek writes: Jakub> Also, as this effectively requires the latest unreleased GDB under the Jakub> default options for something that has been working previously, I wonder Jakub> if it e.g. for some time shouldn't be guarded with dwarf_version >= 5 Here's what that looks like. Tom commit 7865ede46e519fa6bc3d6367f943a40179b4d380 Author: Tom Tromey Date: Thu Oct 20 17:03:35 2016 -0600 PR debug/77315 - use DW_OP_form_tls_address This patch changes gcc to emit DW_OP_form_tls_address rather than DW_OP_GNU_push_tls_address. This is PR debug/77315. DW_OP_form_tls_address was added in DWARF 3. However, this patch checks for DWARF version 5 or above to decide which opcode to emit, because gdb did not implement the DWARF 3 opcode until recently -- not until after 7.12. This approach seems safest because DWARF 5 is also going to require other gdb changes. Built and regtested on x86-64 Fedora 24. 2016-10-21 Tom Tromey PR debug/77315: * dwarf2out.c (mem_loc_descriptor): Use DW_OP_form_tls_address. (resolve_args_picking_1): Move DW_OP_form_tls_address case next to DW_OP_GNU_push_tls_address case. (loc_list_from_tree_1): Use DW_OP_form_tls_address. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6102719..481a2a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2016-10-21 Tom Tromey + + PR debug/77315: + * dwarf2out.c (mem_loc_descriptor): Use DW_OP_form_tls_address. + (resolve_args_picking_1): Move DW_OP_form_tls_address case next to + DW_OP_GNU_push_tls_address case. + (loc_list_from_tree_1): Use DW_OP_form_tls_address. + 2016-10-21 Jakub Jelinek * config/i386/adxintrin.h (_subborrow_u32, _addcarry_u32, diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 4683e1c..73b0ea0 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -13619,7 +13619,12 @@ mem_loc_descriptor (rtx rtl, machine_mode mode, temp = new_addr_loc_descr (rtl, dtprel_true); - mem_loc_result = new_loc_descr (DW_OP_GNU_push_tls_address, 0, 0); + /* We check for DWARF 5 here because gdb did not implement + DW_OP_form_tls_address until after 7.12. */ + mem_loc_result = new_loc_descr ((dwarf_version >= 5 + ? DW_OP_form_tls_address + : DW_OP_GNU_push_tls_address), + 0, 0); add_loc_descr (&mem_loc_result, temp); break; @@ -15467,7 +15472,6 @@ resolve_args_picking_1 (dw_loc_descr_ref loc, unsigned initial_frame_offset, case DW_OP_piece: case DW_OP_deref_size: case DW_OP_nop: - case DW_OP_form_tls_address: case DW_OP_bit_piece: case DW_OP_implicit_value: case DW_OP_stack_value: @@ -15595,6 +15599,7 @@ resolve_args_picking_1 (dw_loc_descr_ref loc, unsigned initial_frame_offset, break; } + case DW_OP_form_tls_address: case DW_OP_GNU_push_tls_address: case DW_OP_GNU_uninit: case DW_OP_GNU_encoded_addr: @@ -15924,8 +15929,11 @@ loc_list_from_tree_1 (tree loc, int want_address, operand shouldn't be. */ if (DECL_EXTERNAL (loc) && !targetm.binds_local_p (loc)) return 0; - dtprel = dtprel_true; - tls_op = DW_OP_GNU_push_tls_address; + dtprel = dtprel_true; + /* We check for DWARF 5 here because gdb did not implement + DW_OP_form_tls_address until after 7.12. */ + tls_op = (dwarf_version >= 5 ? DW_OP_form_tls_address + : DW_OP_GNU_push_tls_address); } else {