From owner-svn-src-all@FreeBSD.ORG Fri Dec 28 19:02:29 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 06B03BD2; Fri, 28 Dec 2012 19:02:29 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id C515E8FC08; Fri, 28 Dec 2012 19:02:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBSJ2Sjw083395; Fri, 28 Dec 2012 19:02:28 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBSJ2SNS083394; Fri, 28 Dec 2012 19:02:28 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201212281902.qBSJ2SNS083394@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Fri, 28 Dec 2012 19:02:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r244776 - head/contrib/gcc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Dec 2012 19:02:29 -0000 Author: pfg Date: Fri Dec 28 19:02:28 2012 New Revision: 244776 URL: http://svnweb.freebsd.org/changeset/base/244776 Log: gcc: avoid generating negative values to DW_AT_byte_size. There is a bug in gcc (GCC/35998) where dwarf reports sizes of unsigned -1 (0xffffffff). On NetBSD this generated a faulty CTF entry which then caused a segfault in ctfmerge. The issue was worked around in NetBSD's Dtrace but since the issue originated in gcc, it seems reasonable to fix it here. Upstream gcc has been slow to react to this issue and the author that submitted the patch is not interested in licensing the change to us, so I did an independent workaround for the issue. MFC after: 1 week Modified: head/contrib/gcc/dwarf2out.c Modified: head/contrib/gcc/dwarf2out.c ============================================================================== --- head/contrib/gcc/dwarf2out.c Fri Dec 28 18:59:10 2012 (r244775) +++ head/contrib/gcc/dwarf2out.c Fri Dec 28 19:02:28 2012 (r244776) @@ -10812,9 +10812,9 @@ add_byte_size_attribute (dw_die_ref die, /* Note that `size' might be -1 when we get to this point. If it is, that indicates that the byte size of the entity in question is variable. We - have no good way of expressing this fact in Dwarf at the present time, - so just let the -1 pass on through. */ - add_AT_unsigned (die, DW_AT_byte_size, size); + have no good way of expressing this fact in Dwarf at the present time. + GCC/35998: Avoid passing negative sizes to Dtrace and gdb. */ + add_AT_unsigned (die, DW_AT_byte_size, (size > 0 ? size : 0)); } /* For a FIELD_DECL node which represents a bit-field, output an attribute