From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15560 invoked by alias); 10 Feb 2012 18:27:51 -0000 Received: (qmail 15548 invoked by uid 22791); 10 Feb 2012 18:27:50 -0000 X-SWARE-Spam-Status: No, hits=-6.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 10 Feb 2012 18:27:32 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q1AIRJwW009224 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 10 Feb 2012 13:27:19 -0500 Received: from host2.jankratochvil.net (ovpn-116-26.ams2.redhat.com [10.36.116.26]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q1AIR7oA006656 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Fri, 10 Feb 2012 13:27:14 -0500 Date: Fri, 10 Feb 2012 18:27:00 -0000 From: Jan Kratochvil To: Tristan Gingold Cc: "gdb-patches@sourceware.org ml" Subject: Re: RFA: Try to include libunwind-ia64.h in libunwind-frame.h Message-ID: <20120210182705.GA32459@host2.jankratochvil.net> References: <5D1CD28F-F628-475C-B6D8-5FCBF5290C63@adacore.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5D1CD28F-F628-475C-B6D8-5FCBF5290C63@adacore.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-02/txt/msg00210.txt.bz2 On Thu, 02 Feb 2012 17:32:39 +0100, Tristan Gingold wrote: > Part of the issue is libunwind.h, which is not well designed for cross operation: + > Note that gdb doesn't define UNW_REMOTE_ONLY. So clearly in my case a wrong header will be used. [ BTW could you wrap mails to 78-80 chars per line? ] > I propose to fix this issue with the following patch: It still did not build for me as it expects libunwind.h installed which cross-build of libunwind does not install. OK this patch instead? For the test with libunwind HEAD I had to patch .so.7 -> .so.8 in GDB, posted to http://lists.nongnu.org/archive/html/libunwind-devel as [Libunwind-devel] .so version bump .7 -> .8 [Re: libunwind 1.0.1] and for cross-built libunwind I had to fix and post [Libunwind-devel] [patch] Fix undefined symbol: _Uelf64_valid_object Tested only the cross-build + successful dlopen, not with real ia64 target, though. Thanks, Jan 2012-02-10 Jan Kratochvil Tristan Gingold * configure.ac (--with-libunwind=auto): Set enable_libunwind for either of libunwind.h or libunwind-ia64.h (if ia64* is the target). * configure: Regenerate. * libunwind-frame.h: Conditionalize the file for HAVE_LIBUNWIND and not HAVE_LIBUNWIND_H. Include libunwind-ia64.h instead of libunwind.h if possible. --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -349,8 +349,14 @@ AS_HELP_STRING([--with-libunwind], [use libunwind frame unwinding support]), *) AC_MSG_ERROR(bad value ${withval} for GDB with-libunwind option) ;; esac],[ AC_CHECK_HEADERS(libunwind.h libunwind-ia64.h) - if test x"$ac_cv_header_libunwind_h" = xyes -a x"$ac_cv_header_libunwind_ia64_h" = xyes; then + if test x"$ac_cv_header_libunwind_h" = xyes; then enable_libunwind=yes; + elif test x"$ac_cv_header_libunwind_ia64_h" = xyes; then + case "$target" in + ia64*) + enable_libunwind=yes; + ;; + esac fi ]) --- a/gdb/libunwind-frame.h +++ b/gdb/libunwind-frame.h @@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifdef HAVE_LIBUNWIND_H +#ifdef HAVE_LIBUNWIND struct frame_info; struct frame_id; @@ -29,7 +29,13 @@ struct gdbarch; #ifndef LIBUNWIND_FRAME_H #define LIBUNWIND_FRAME_H 1 -#include "libunwind.h" +#if defined HAVE_LIBUNWIND_IA64_H +# include "libunwind-ia64.h" +#elif defined HAVE_LIBUNWIND_H +# include "libunwind.h" +#else +# error "HAVE_LIBUNWIND && !HAVE_LIBUNWIND_IA64_H && !HAVE_LIBUNWIND_H" +#endif struct libunwind_descr { @@ -73,4 +79,4 @@ int libunwind_get_reg_special (struct gdbarch *gdbarch, #endif /* libunwind-frame.h */ -#endif /* HAVE_LIBUNWIND_H */ +#endif /* HAVE_LIBUNWIND */