From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32317 invoked by alias); 2 Apr 2012 13:22:19 -0000 Received: (qmail 32308 invoked by uid 22791); 2 Apr 2012 13:22:18 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED X-Spam-Check-By: sourceware.org Received: from mel.act-europe.fr (HELO mel.act-europe.fr) (194.98.77.210) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 02 Apr 2012 13:22:05 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id 057A129006B; Mon, 2 Apr 2012 15:22:09 +0200 (CEST) Received: from mel.act-europe.fr ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XcBPvGFpFGxl; Mon, 2 Apr 2012 15:22:08 +0200 (CEST) Received: from ulanbator.act-europe.fr (ulanbator.act-europe.fr [10.10.1.67]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mel.act-europe.fr (Postfix) with ESMTP id E59F129004F; Mon, 2 Apr 2012 15:22:08 +0200 (CEST) Subject: Re: PR13901 Mime-Version: 1.0 (Apple Message framework v1257) Content-Type: text/plain; charset=us-ascii From: Tristan Gingold In-Reply-To: <20120402131715.GA30548@bromo.med.uc.edu> Date: Mon, 02 Apr 2012 13:22:00 -0000 Cc: gdb@sourceware.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <20120330134210.GA7869@bromo.med.uc.edu> <14D51CD4-4990-4B11-952C-64EB8F791306@adacore.com> <20120402131715.GA30548@bromo.med.uc.edu> To: Jack Howarth X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2012-04/txt/msg00005.txt.bz2 On Apr 2, 2012, at 3:17 PM, Jack Howarth wrote: > On Mon, Apr 02, 2012 at 01:57:31PM +0200, Tristan Gingold wrote: >>=20 >> On Apr 2, 2012, at 12:44 PM, Tristan Gingold wrote: >>=20 >>>=20 >>> On Mar 30, 2012, at 3:42 PM, Jack Howarth wrote: >>>=20 >>>> Tristan, >>>> Have you noticed that recent FSF gdb releases including 7.4 have been >>>> non-functional when built targeting i386-apple-darwin? The run-time fa= ilures >>>> have changed between 7.2 and 7.4. Currently the failure is exhibited as >>>> errors of the form... >>>>=20 >>>> (gdb) break main >>>> Breakpoint 1 at 0xd80: file himenoBMTxpa.c, line 71. >>>> (gdb) r >>>> Starting program: /Users/howarth/a.out=20 >>>> darwin_set_sstep: unknown flavour: 4 >>>> Error calling thread_get_state for GP registers for thread 0x8451lxwar= ning: >>>> Mach error at "i386-darwin-nat.c:118" in function >>>> "i386_darwin_fetch_inferior_registers": (os/kern) invalid argument (0x= 4) >>>>=20 >>>> http://sourceware.org/bugzilla/show_bug.cgi?id=3D13901 >>>>=20 >>>> Is this something that is trivial to fix? It would be nice if both Mac= Ports >>>> and fink could have a functional i386 build of FSF gdb. In fink, we cu= rrently >>>> have gdb restricted to x86_64 fink (although the x86_64-apple-darwin b= uild >>>> can debug i386 binaries fine). MacPorts has left their gdb pacakge at = 7.1 >>>> (which I guess is that last version that worked for both i386-apple-da= rwin >>>> and x86_64-apple-darwin. Thanks in advance for any clarifications. >>>=20 >>> I now understand the issue: >>>=20 >>> gdb spawns bash to run the program, but the bash spawned is 64 bits, wh= ich is not understood by gdb... >>=20 >> Fixed by this patch (committed on trunk): >>=20 >> 2012-04-02 Tristan Gingold >>=20 >> PR gdb/13901 >> * darwin-nat.c (darwin_execvp): Sey binary preference. >>=20 >> Index: darwin-nat.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> RCS file: /cvs/src/src/gdb/darwin-nat.c,v >> retrieving revision 1.31 >> diff -c -r1.31 darwin-nat.c >> *** darwin-nat.c 14 Mar 2012 01:46:59 -0000 1.31 >> --- darwin-nat.c 2 Apr 2012 11:55:36 -0000 >> *************** >> *** 39,44 **** >> --- 39,45 ---- >> #include "value.h" >> #include "arch-utils.h" >> #include "bfd.h" >> + #include "bfd/mach-o.h" >>=20 >> #include >> #include >> *************** >> *** 1538,1543 **** >> --- 1539,1560 ---- >> return; >> } >>=20 >> + /* Specify the same binary preference to spawn the shell as the >> + exec binary. This avoids spawning a 64bit shell while debugging >> + a 32bit program, which may confuse gdb. >> + Also, this slightly breaks internal layers as we suppose the bina= ry >> + is Mach-O. Doesn't harm in practice. */ >> + if (exec_bfd !=3D NULL) >> + { >> + cpu_type_t pref; >> + size_t ocount; >> +=20 >> + pref =3D bfd_mach_o_get_data (exec_bfd)->header.cputype; >> + res =3D posix_spawnattr_setbinpref_np (&attr, 1, &pref, &ocount); >> + if (res !=3D 0 || ocount !=3D 1) >> + fprintf_unfiltered (gdb_stderr, "Cannot set posix_spawn binpref\n"); >> + } >> +=20 >> posix_spawnp (NULL, argv[0], NULL, &attr, argv, env); >> } >>=20 >=20 > Tristan, > This almost fixes the bug for the i386-apple-darwin10 build. However, w= hile this > eliminates the failures when debugging i386 executables in the i386 darwi= n build of gdb 7.4, > it still results in the following failure when debugging x86_64 executabl= es in the > same i386 darwin build of gdb... I replied in bugzilla. You simply need to configure with --enable-64-bit-b= fd to enable the support of 64 bit executables. Tristan. >=20 > % clang -arch x86_64 -g himenoBMTxpa.c > % file ./a.out > ./a.out: Mach-O 64-bit executable x86_64 > % fsf-gdb ./a.out > GNU gdb (GDB) 7.4 > Copyright (C) 2012 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "i386-apple-darwin10.8.0". > For bug reporting instructions, please see: > ... >=20 > warning: A handler for the OS ABI "Darwin" is not built into this configu= ration > of GDB. Attempting to continue with the default i386:x86-64 settings. >=20 > Reading symbols from /Users/howarth/a.out...Reading symbols from > /Users/howarth/a.out.dSYM/Contents/Resources/DWARF/a.out...done. > done. > (gdb) break main > Breakpoint 1 at 0xd80: file himenoBMTxpa.c, line 71. > (gdb) r > Starting program: /Users/howarth/a.out=20 > darwin_set_sstep: unknown flavour: 4 > Error calling thread_get_state for GP registers for thread 0x5379lxwarnin= g: > Mach error at "i386-darwin-nat.c:118" in function > "i386_darwin_fetch_inferior_registers": (os/kern) invalid argument (0x4) > (gdb) >=20 > Thanks for your efforts in fixing this. > Jack