* How to configure gdb to support '--arch=i386' on Mac OS X
@ 2009-10-07 18:09 n179911
2009-10-07 18:32 ` Joel Brobecker
` (2 more replies)
0 siblings, 3 replies; 18+ messages in thread
From: n179911 @ 2009-10-07 18:09 UTC (permalink / raw)
To: gdb
Hi,
I have compiled gdb 7.0 on Mac OS X. And I have configured XCode to
use this new version of gdb 7.0.
But when I start debug my XCode project it said gdb can't recognize
the option '--arch=i386'. Here is the log of my error:
[Session started at 2009-10-07 11:00:43 -0700.]
/Users/n179911/bin/gdb/bin/gdb: unrecognized option `--arch=i386'
Use `/Users/n179911/bin/gdb/bin/gdb --help' for a complete list of options.
The Debugger has exited with status 1.The Debugger has exited with status
Can you please tell me how to build gdb to support '--arch-i386' option?
Thank you.
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 18:09 How to configure gdb to support '--arch=i386' on Mac OS X n179911 @ 2009-10-07 18:32 ` Joel Brobecker 2009-10-07 18:35 ` Michael Snyder 2009-10-07 20:45 ` Jack Howarth 2 siblings, 0 replies; 18+ messages in thread From: Joel Brobecker @ 2009-10-07 18:32 UTC (permalink / raw) To: n179911; +Cc: gdb > I have compiled gdb 7.0 on Mac OS X. And I have configured XCode to > use this new version of gdb 7.0. > > But when I start debug my XCode project it said gdb can't recognize > the option '--arch=i386'. Here is the log of my error: I suspect your Xcode is thinking it is running Apple's version of GDB, and is trying to tell GDB which arch to select when your binary is bi-arch. If you want to use the FSF GDB, you might have some luck adding that command line switch and ignoring it. See gdb/main.c. -- Joel ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 18:09 How to configure gdb to support '--arch=i386' on Mac OS X n179911 2009-10-07 18:32 ` Joel Brobecker @ 2009-10-07 18:35 ` Michael Snyder 2009-10-07 20:10 ` n179911 2009-10-07 20:45 ` Jack Howarth 2 siblings, 1 reply; 18+ messages in thread From: Michael Snyder @ 2009-10-07 18:35 UTC (permalink / raw) To: n179911; +Cc: gdb n179911 wrote: > Hi, > > I have compiled gdb 7.0 on Mac OS X. And I have configured XCode to > use this new version of gdb 7.0. > > But when I start debug my XCode project it said gdb can't recognize > the option '--arch=i386'. Here is the log of my error: > > [Session started at 2009-10-07 11:00:43 -0700.] > /Users/n179911/bin/gdb/bin/gdb: unrecognized option `--arch=i386' > Use `/Users/n179911/bin/gdb/bin/gdb --help' for a complete list of options. > > The Debugger has exited with status 1.The Debugger has exited with status > > Can you please tell me how to build gdb to support '--arch-i386' option? I don't think this has ever been a command line option in fsf gdb. Maybe it is one that was added to Apple's version of gdb. Try running `/Users/n179911/bin/gdb/bin/gdb --help', and then run the same command using your installed gdb that came with Mac OS. My guess is that the Mac version will list "--arch" among the command line options, but the fsf version will not (mine doesn't). ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 18:35 ` Michael Snyder @ 2009-10-07 20:10 ` n179911 2009-10-07 20:20 ` Daniel Jacobowitz ` (2 more replies) 0 siblings, 3 replies; 18+ messages in thread From: n179911 @ 2009-10-07 20:10 UTC (permalink / raw) To: Michael Snyder; +Cc: gdb Thank you. You are right. The gdb comes with apple has '-arch' option, but gdb 7.0 does not. $ /usr/bin/gdb --help --translate Debug applications running under translation. -arch i386|armv6|x86_64|ppc Specify a gdb targetting a specific architecture So should I do what Joel Brobecker suggested in adding that option in gdb/main.c? Thank you. On Wed, Oct 7, 2009 at 11:31 AM, Michael Snyder <msnyder@vmware.com> wrote: > n179911 wrote: >> >> Hi, >> >> I have compiled gdb 7.0 on Mac OS X. And I have configured XCode to >> use this new version of gdb 7.0. >> >> But when I start debug my XCode project it said gdb can't recognize >> the option '--arch=i386'. Here is the log of my error: >> >> [Session started at 2009-10-07 11:00:43 -0700.] >> /Users/n179911/bin/gdb/bin/gdb: unrecognized option `--arch=i386' >> Use `/Users/n179911/bin/gdb/bin/gdb --help' for a complete list of >> options. >> >> The Debugger has exited with status 1.The Debugger has exited with status >> >> Can you please tell me how to build gdb to support '--arch-i386' option? > > I don't think this has ever been a command line option in fsf gdb. > Maybe it is one that was added to Apple's version of gdb. > > Try running `/Users/n179911/bin/gdb/bin/gdb --help', and > then run the same command using your installed gdb that came > with Mac OS. My guess is that the Mac version will list > "--arch" among the command line options, but the fsf version > will not (mine doesn't). > > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 20:10 ` n179911 @ 2009-10-07 20:20 ` Daniel Jacobowitz 2009-10-07 20:21 ` n179911 2009-10-07 20:26 ` n179911 2009-10-07 21:04 ` Michael Snyder 2 siblings, 1 reply; 18+ messages in thread From: Daniel Jacobowitz @ 2009-10-07 20:20 UTC (permalink / raw) To: n179911; +Cc: Michael Snyder, gdb On Wed, Oct 07, 2009 at 01:10:00PM -0700, n179911 wrote: > Thank you. You are right. > > The gdb comes with apple has '-arch' option, but gdb 7.0 does not. > > $ /usr/bin/gdb --help > --translate Debug applications running under translation. > -arch i386|armv6|x86_64|ppc Specify a gdb targetting a specific > architecture > > So should I do what Joel Brobecker suggested in adding that option in > gdb/main.c? That is very unlikely to help. Last I looked, you can't use the FSF GDB with Xcode; Apple has made too many changes to their version. -- Daniel Jacobowitz CodeSourcery ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 20:20 ` Daniel Jacobowitz @ 2009-10-07 20:21 ` n179911 2009-10-07 21:16 ` Stan Shebs 0 siblings, 1 reply; 18+ messages in thread From: n179911 @ 2009-10-07 20:21 UTC (permalink / raw) To: n179911, Michael Snyder, gdb From http://developer.apple.com/mac/library/documentation/DeveloperTools/Reference/XcodeUserDefaultRef/100-Xcode_User_Defaults/UserDefaultRef.html#//apple%5Fref/doc/uid/TP40005535-CH3-SW54 it mentions I can switch a different GDB in xcode. On Wed, Oct 7, 2009 at 1:19 PM, Daniel Jacobowitz <drow@false.org> wrote: > On Wed, Oct 07, 2009 at 01:10:00PM -0700, n179911 wrote: >> Thank you. You are right. >> >> The gdb comes with apple has '-arch' option, but gdb 7.0 does not. >> >> $ /usr/bin/gdb --help >> --translate Debug applications running under translation. >> -arch i386|armv6|x86_64|ppc Specify a gdb targetting a specific >> architecture >> >> So should I do what Joel Brobecker suggested in adding that option in >> gdb/main.c? > > That is very unlikely to help. Last I looked, you can't use the FSF > GDB with Xcode; Apple has made too many changes to their version. > > > -- > Daniel Jacobowitz > CodeSourcery > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 20:21 ` n179911 @ 2009-10-07 21:16 ` Stan Shebs 0 siblings, 0 replies; 18+ messages in thread From: Stan Shebs @ 2009-10-07 21:16 UTC (permalink / raw) To: n179911; +Cc: gdb n179911 wrote: > From > > http://developer.apple.com/mac/library/documentation/DeveloperTools/Reference/XcodeUserDefaultRef/100-Xcode_User_Defaults/UserDefaultRef.html#//apple%5Fref/doc/uid/TP40005535-CH3-SW54 > > it mentions I can switch a different GDB in xcode. > In practice, that is mostly useful for using different versions/releases of Apple's GDB, or for cross development. The --arch issue is just the tip of the iceberg of problems you are likely to experience with trying to use FSF GDB. The command set is different, output from commands is different, and Xcode has lots of assumptions about what the debugger can do, especially for the native case. Stan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 20:10 ` n179911 2009-10-07 20:20 ` Daniel Jacobowitz @ 2009-10-07 20:26 ` n179911 2009-10-07 20:38 ` Matt Rice 2009-10-07 21:07 ` Michael Snyder 2009-10-07 21:04 ` Michael Snyder 2 siblings, 2 replies; 18+ messages in thread From: n179911 @ 2009-10-07 20:26 UTC (permalink / raw) To: Michael Snyder; +Cc: gdb I tried Joel Brobecker suggested in adding that option in gdb/main.c. But my program still won't come up in my debugger. [Session started at 2009-10-07 13:27:16 -0700.] GNU gdb (GDB) 7.0 Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 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-darwin9.7.0". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Loading program into debugger… No symbol table is loaded. Use the "file" command. No symbol table is loaded. Use the "file" command. No symbol table is loaded. Use the "file" command. No symbol table is loaded. Use the "file" command. Program loaded. tty /dev/ttys008 (gdb) run =thread-group-created,id="81191" =thread-created,id="1",group-id="81191" On Wed, Oct 7, 2009 at 1:10 PM, n179911 <n179911@gmail.com> wrote: > Thank you. You are right. > > The gdb comes with apple has '-arch' option, but gdb 7.0 does not. > > $ /usr/bin/gdb --help > --translate Debug applications running under translation. > -arch i386|armv6|x86_64|ppc Specify a gdb targetting a specific > architecture > > So should I do what Joel Brobecker suggested in adding that option in > gdb/main.c? > > Thank you. > > > On Wed, Oct 7, 2009 at 11:31 AM, Michael Snyder <msnyder@vmware.com> wrote: >> n179911 wrote: >>> >>> Hi, >>> >>> I have compiled gdb 7.0 on Mac OS X. And I have configured XCode to >>> use this new version of gdb 7.0. >>> >>> But when I start debug my XCode project it said gdb can't recognize >>> the option '--arch=i386'. Here is the log of my error: >>> >>> [Session started at 2009-10-07 11:00:43 -0700.] >>> /Users/n179911/bin/gdb/bin/gdb: unrecognized option `--arch=i386' >>> Use `/Users/n179911/bin/gdb/bin/gdb --help' for a complete list of >>> options. >>> >>> The Debugger has exited with status 1.The Debugger has exited with status >>> >>> Can you please tell me how to build gdb to support '--arch-i386' option? >> >> I don't think this has ever been a command line option in fsf gdb. >> Maybe it is one that was added to Apple's version of gdb. >> >> Try running `/Users/n179911/bin/gdb/bin/gdb --help', and >> then run the same command using your installed gdb that came >> with Mac OS. My guess is that the Mac version will list >> "--arch" among the command line options, but the fsf version >> will not (mine doesn't). >> >> > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 20:26 ` n179911 @ 2009-10-07 20:38 ` Matt Rice 2009-10-07 21:07 ` Michael Snyder 1 sibling, 0 replies; 18+ messages in thread From: Matt Rice @ 2009-10-07 20:38 UTC (permalink / raw) To: n179911; +Cc: Michael Snyder, gdb On Wed, Oct 7, 2009 at 1:26 PM, n179911 <n179911@gmail.com> wrote: > I tried Joel Brobecker suggested in adding that option in gdb/main.c. > > But my program still won't come up in my debugger. > > [Session started at 2009-10-07 13:27:16 -0700.] > GNU gdb (GDB) 7.0 > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > 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-darwin9.7.0". > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Loading program into debugger… > No symbol table is loaded. Use the "file" command. > No symbol table is loaded. Use the "file" command. > No symbol table is loaded. Use the "file" command. > No symbol table is loaded. Use the "file" command. > Program loaded. > tty /dev/ttys008 > (gdb) run > =thread-group-created,id="81191" > =thread-created,id="1",group-id="81191" > I'm guessing that a stub implementation of -arch may not be enough, you may end up needing to backport the actual arch implementation, you may also try stripping the unneeded architectures from the binary you're trying to debug with the lipo command... (though I'm not sure if that would actually work...) ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 20:26 ` n179911 2009-10-07 20:38 ` Matt Rice @ 2009-10-07 21:07 ` Michael Snyder 2009-10-07 21:22 ` Stan Shebs 1 sibling, 1 reply; 18+ messages in thread From: Michael Snyder @ 2009-10-07 21:07 UTC (permalink / raw) To: n179911; +Cc: gdb Yeahhhh, this isn't going to work. Your binary is in... I forget what it's called -- oh, "mach-o" format. Our (fsf) gdb does not know how to read that file format. And it would be a huge job to port over the changes in apple gdb that tell it how to read mach-o files (besides the fact that they are "fat" files, or at least potentially might be). Sorry, I think you're out of luck. n179911 wrote: > I tried Joel Brobecker suggested in adding that option in gdb/main.c. > > But my program still won't come up in my debugger. > > [Session started at 2009-10-07 13:27:16 -0700.] > GNU gdb (GDB) 7.0 > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > 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-darwin9.7.0". > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Loading program into debuggerÂ… > No symbol table is loaded. Use the "file" command. > No symbol table is loaded. Use the "file" command. > No symbol table is loaded. Use the "file" command. > No symbol table is loaded. Use the "file" command. > Program loaded. > tty /dev/ttys008 > (gdb) run > =thread-group-created,id="81191" > =thread-created,id="1",group-id="81191" > > > > On Wed, Oct 7, 2009 at 1:10 PM, n179911 <n179911@gmail.com> wrote: >> Thank you. You are right. >> >> The gdb comes with apple has '-arch' option, but gdb 7.0 does not. >> >> $ /usr/bin/gdb --help >> --translate Debug applications running under translation. >> -arch i386|armv6|x86_64|ppc Specify a gdb targetting a specific >> architecture >> >> So should I do what Joel Brobecker suggested in adding that option in >> gdb/main.c? >> >> Thank you. >> >> >> On Wed, Oct 7, 2009 at 11:31 AM, Michael Snyder <msnyder@vmware.com> wrote: >>> n179911 wrote: >>>> Hi, >>>> >>>> I have compiled gdb 7.0 on Mac OS X. And I have configured XCode to >>>> use this new version of gdb 7.0. >>>> >>>> But when I start debug my XCode project it said gdb can't recognize >>>> the option '--arch=i386'. Here is the log of my error: >>>> >>>> [Session started at 2009-10-07 11:00:43 -0700.] >>>> /Users/n179911/bin/gdb/bin/gdb: unrecognized option `--arch=i386' >>>> Use `/Users/n179911/bin/gdb/bin/gdb --help' for a complete list of >>>> options. >>>> >>>> The Debugger has exited with status 1.The Debugger has exited with status >>>> >>>> Can you please tell me how to build gdb to support '--arch-i386' option? >>> I don't think this has ever been a command line option in fsf gdb. >>> Maybe it is one that was added to Apple's version of gdb. >>> >>> Try running `/Users/n179911/bin/gdb/bin/gdb --help', and >>> then run the same command using your installed gdb that came >>> with Mac OS. My guess is that the Mac version will list >>> "--arch" among the command line options, but the fsf version >>> will not (mine doesn't). >>> >>> ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 21:07 ` Michael Snyder @ 2009-10-07 21:22 ` Stan Shebs 2009-10-07 23:18 ` Jack Howarth 2009-10-08 7:54 ` Tristan Gingold 0 siblings, 2 replies; 18+ messages in thread From: Stan Shebs @ 2009-10-07 21:22 UTC (permalink / raw) To: Michael Snyder; +Cc: n179911, gdb Michael Snyder wrote: > Yeahhhh, this isn't going to work. > > Your binary is in... I forget what it's called -- oh, "mach-o" format. > Our (fsf) gdb does not know how to read that file format. And it > would be a huge job to port over the changes in apple gdb that tell > it how to read mach-o files (besides the fact that they are "fat" > files, or at least potentially might be). m The Mach-O part does work in 7.0, thanks to Tristan and AdaCore (check out gdb/machoread.c). I don't think fatness-handling is there, although at the Xcode level one has to specifically ask for fat builds anyway, so one could avoid that particular obstacle and thus be well-positioned to smack one's face into the next wall. :-) Stan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 21:22 ` Stan Shebs @ 2009-10-07 23:18 ` Jack Howarth 2009-10-08 7:53 ` Tristan Gingold 2009-10-08 12:48 ` Tristan Gingold 2009-10-08 7:54 ` Tristan Gingold 1 sibling, 2 replies; 18+ messages in thread From: Jack Howarth @ 2009-10-07 23:18 UTC (permalink / raw) To: Stan Shebs; +Cc: Michael Snyder, n179911, gdb On Wed, Oct 07, 2009 at 02:22:20PM -0700, Stan Shebs wrote: > Michael Snyder wrote: >> Yeahhhh, this isn't going to work. >> >> Your binary is in... I forget what it's called -- oh, "mach-o" format. >> Our (fsf) gdb does not know how to read that file format. And it >> would be a huge job to port over the changes in apple gdb that tell >> it how to read mach-o files (besides the fact that they are "fat" >> files, or at least potentially might be). m > The Mach-O part does work in 7.0, thanks to Tristan and AdaCore (check > out gdb/machoread.c). I don't think fatness-handling is there, although > at the Xcode level one has to specifically ask for fat builds anyway, so > one could avoid that particular obstacle and thus be well-positioned to > smack one's face into the next wall. :-) > > Stan > Stan, I am puzzled about the fact that the current x86_64-apple-darwin10 build of FSF gdb 7.0 is unable to load i386 binaries like x86_64 gdb can under linux. Do you think this should be possible without resorting to fat-binaries for darwin? Jack ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 23:18 ` Jack Howarth @ 2009-10-08 7:53 ` Tristan Gingold 2009-10-08 12:48 ` Tristan Gingold 1 sibling, 0 replies; 18+ messages in thread From: Tristan Gingold @ 2009-10-08 7:53 UTC (permalink / raw) To: Jack Howarth; +Cc: Stan Shebs, Michael Snyder, n179911, gdb On Oct 8, 2009, at 1:18 AM, Jack Howarth wrote: > On Wed, Oct 07, 2009 at 02:22:20PM -0700, Stan Shebs wrote: >> Michael Snyder wrote: >>> Yeahhhh, this isn't going to work. >>> >>> Your binary is in... I forget what it's called -- oh, "mach-o" >>> format. >>> Our (fsf) gdb does not know how to read that file format. And it >>> would be a huge job to port over the changes in apple gdb that tell >>> it how to read mach-o files (besides the fact that they are "fat" >>> files, or at least potentially might be). m >> The Mach-O part does work in 7.0, thanks to Tristan and AdaCore >> (check >> out gdb/machoread.c). I don't think fatness-handling is there, >> although >> at the Xcode level one has to specifically ask for fat builds >> anyway, so >> one could avoid that particular obstacle and thus be well- >> positioned to >> smack one's face into the next wall. :-) >> >> Stan >> > > Stan, > I am puzzled about the fact that the current x86_64-apple-darwin10 > build of FSF gdb 7.0 is unable to load i386 binaries like x86_64 gdb > can under linux. Do you think this should be possible without > resorting > to fat-binaries for darwin? That's unexpected. It least it worked in the past. Will try to fix that. Tristan. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 23:18 ` Jack Howarth 2009-10-08 7:53 ` Tristan Gingold @ 2009-10-08 12:48 ` Tristan Gingold 1 sibling, 0 replies; 18+ messages in thread From: Tristan Gingold @ 2009-10-08 12:48 UTC (permalink / raw) To: Jack Howarth; +Cc: Stan Shebs, Michael Snyder, n179911, gdb On Oct 8, 2009, at 1:18 AM, Jack Howarth wrote: > > Stan, > I am puzzled about the fact that the current x86_64-apple-darwin10 > build of FSF gdb 7.0 is unable to load i386 binaries like x86_64 gdb > can under linux. Do you think this should be possible without > resorting > to fat-binaries for darwin? Should now be fixed in trunk. Thanks! Tristan. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 21:22 ` Stan Shebs 2009-10-07 23:18 ` Jack Howarth @ 2009-10-08 7:54 ` Tristan Gingold 1 sibling, 0 replies; 18+ messages in thread From: Tristan Gingold @ 2009-10-08 7:54 UTC (permalink / raw) To: n179911; +Cc: Michael Snyder, gdb, Stan Shebs On Oct 7, 2009, at 11:22 PM, Stan Shebs wrote: > Michael Snyder wrote: >> Yeahhhh, this isn't going to work. >> >> Your binary is in... I forget what it's called -- oh, "mach-o" >> format. >> Our (fsf) gdb does not know how to read that file format. And it >> would be a huge job to port over the changes in apple gdb that tell >> it how to read mach-o files (besides the fact that they are "fat" >> files, or at least potentially might be). m > The Mach-O part does work in 7.0, thanks to Tristan and AdaCore > (check out gdb/machoread.c). I don't think fatness-handling is > there, although at the Xcode level one has to specifically ask for > fat builds anyway, so one could avoid that particular obstacle and > thus be well-positioned to smack one's face into the next wall. :-) Right. The work-around is not to build fat binaries. Current FSF gdb can't handle fat executable. I am not sure that we want to implement this, but feel free to ask. However gdb handles fat objects such as dylibs. Tristan. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 20:10 ` n179911 2009-10-07 20:20 ` Daniel Jacobowitz 2009-10-07 20:26 ` n179911 @ 2009-10-07 21:04 ` Michael Snyder 2009-10-07 21:15 ` Jack Howarth 2 siblings, 1 reply; 18+ messages in thread From: Michael Snyder @ 2009-10-07 21:04 UTC (permalink / raw) To: n179911; +Cc: gdb n179911 wrote: > Thank you. You are right. > > The gdb comes with apple has '-arch' option, but gdb 7.0 does not. > > $ /usr/bin/gdb --help > --translate Debug applications running under translation. > -arch i386|armv6|x86_64|ppc Specify a gdb targetting a specific > architecture > > So should I do what Joel Brobecker suggested in adding that option in > gdb/main.c? Or you could try to make XCode refrain from sending it. Entirely up to you. I don't think we are looking to add that to the mainstream gdb. > On Wed, Oct 7, 2009 at 11:31 AM, Michael Snyder <msnyder@vmware.com> wrote: >> n179911 wrote: >>> Hi, >>> >>> I have compiled gdb 7.0 on Mac OS X. And I have configured XCode to >>> use this new version of gdb 7.0. >>> >>> But when I start debug my XCode project it said gdb can't recognize >>> the option '--arch=i386'. Here is the log of my error: >>> >>> [Session started at 2009-10-07 11:00:43 -0700.] >>> /Users/n179911/bin/gdb/bin/gdb: unrecognized option `--arch=i386' >>> Use `/Users/n179911/bin/gdb/bin/gdb --help' for a complete list of >>> options. >>> >>> The Debugger has exited with status 1.The Debugger has exited with status >>> >>> Can you please tell me how to build gdb to support '--arch-i386' option? >> I don't think this has ever been a command line option in fsf gdb. >> Maybe it is one that was added to Apple's version of gdb. >> >> Try running `/Users/n179911/bin/gdb/bin/gdb --help', and >> then run the same command using your installed gdb that came >> with Mac OS. My guess is that the Mac version will list >> "--arch" among the command line options, but the fsf version >> will not (mine doesn't). >> >> ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 21:04 ` Michael Snyder @ 2009-10-07 21:15 ` Jack Howarth 0 siblings, 0 replies; 18+ messages in thread From: Jack Howarth @ 2009-10-07 21:15 UTC (permalink / raw) To: Michael Snyder; +Cc: n179911, gdb On Wed, Oct 07, 2009 at 02:00:38PM -0700, Michael Snyder wrote: > n179911 wrote: >> Thank you. You are right. >> >> The gdb comes with apple has '-arch' option, but gdb 7.0 does not. >> Actually if you look at what Apple does, the gdb in /usr/bin (for Leopard anyway) is just an executable shell script... #! /bin/sh host_architecture="" requested_architecture="UNSET" architecture_to_use="" # classic-inferior-support translate_mode=0 translate_binary="" PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin # gdb is setgid procmod and dyld will truncate any DYLD_FRAMEWORK_PATH etc # settings on exec. The user is really trying to set these things # in their process, not gdb. So we smuggle it over the setgid border in # GDB_DYLD_* where it'll be laundered inside gdb before invoking the inferior. unset GDB_DYLD_FRAMEWORK_PATH unset GDB_DYLD_FALLBACK_FRAMEWORK_PATH unset GDB_DYLD_LIBRARY_PATH unset GDB_DYLD_FALLBACK_LIBRARY_PATH unset GDB_DYLD_ROOT_PATH unset GDB_DYLD_PATHS_ROOT unset GDB_DYLD_IMAGE_SUFFIX unset GDB_DYLD_INSERT_LIBRARIES [ -n "$DYLD_FRAMEWORK_PATH" ] && GDB_DYLD_FRAMEWORK_PATH="$DYLD_FRAMEWORK_PATH" [ -n "$DYLD_FALLBACK_FRAMEWORK_PATH" ] && GDB_DYLD_FALLBACK_FRAMEWORK_PATH="$DYLD_FALLBACK_FRAMEWORK_PATH" [ -n "$DYLD_LIBRARY_PATH" ] && GDB_DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH" [ -n "$DYLD_FALLBACK_LIBRARY_PATH" ] && GDB_DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH" [ -n "$DYLD_ROOT_PATH" ] && GDB_DYLD_ROOT_PATH="$DYLD_ROOT_PATH" [ -n "$DYLD_PATHS_ROOT" ] && GDB_DYLD_PATHS_ROOT="$DYLD_PATHS_ROOT" [ -n "$DYLD_IMAGE_SUFFIX" ] && GDB_DYLD_IMAGE_SUFFIX="$DYLD_IMAGE_SUFFIX" [ -n "$DYLD_INSERT_LIBRARIES" ] && GDB_DYLD_INSERT_LIBRARIES="$DYLD_INSERT_LIBRARIES" export GDB_DYLD_FRAMEWORK_PATH export GDB_DYLD_FALLBACK_FRAMEWORK_PATH export GDB_DYLD_LIBRARY_PATH export GDB_DYLD_FALLBACK_LIBRARY_PATH export GDB_DYLD_ROOT_PATH export GDB_DYLD_PATHS_ROOT export GDB_DYLD_IMAGE_SUFFIX export GDB_DYLD_INSERT_LIBRARIES # dyld will warn if any of these are set and the user invokes a setgid program # like gdb. unset DYLD_FRAMEWORK_PATH unset DYLD_FALLBACK_FRAMEWORK_PATH unset DYLD_LIBRARY_PATH unset DYLD_FALLBACK_LIBRARY_PATH unset DYLD_ROOT_PATH unset DYLD_PATHS_ROOT unset DYLD_IMAGE_SUFFIX unset DYLD_INSERT_LIBRARIES host_architecture=`/usr/bin/arch 2>/dev/null` || host_architecture="" if [ -z "$host_architecture" ]; then echo "There was an error executing 'arch(1)'; assuming 'i386'."; host_architecture="i386"; fi case "$1" in --help) echo " --translate Debug applications running under translation." >&2 echo " -arch i386|armv6|x86_64|ppc Specify a gdb targetting a specific architecture" >&2 ;; -arch=* | -a=* | --arch=*) requested_architecture=`echo "$1" | sed 's,^[^=]*=,,'` shift;; -arch | -a | --arch) shift requested_architecture="$1" shift;; -translate | --translate | -oah* | --oah*) translate_mode=1 shift;; esac if [ -z "$requested_architecture" ] then echo ERROR: No architecture specified with -arch argument. >&2 exit 1 fi [ "$requested_architecture" = "UNSET" ] && requested_architecture="" if [ $translate_mode -eq 1 ] then if [ "$host_architecture" = i386 -a -x /usr/libexec/oah/translate ] then requested_architecture="ppc" translate_binary="/usr/libexec/oah/translate -execOAH" else echo ERROR: translate not available. Running in normal debugger mode. >&2 fi fi if [ -n "$requested_architecture" ] then case $requested_architecture in ppc* | i386 | x86_64 | arm*) ;; *) echo Unrecognized architecture \'$requested_architecture\', using host arch. >&2 requested_architecture="" ;; esac fi if [ -n "$requested_architecture" ] then architecture_to_use="$requested_architecture" else # No architecture was specified. We will try to find the executable # or a core file in the list of arguments, and launch the correct # gdb for the job. If there are multiple architectures in the executable, # we will search for the architecture that matches the host architecture. # If all this searching doesn't produce a match, we will use a gdb that # matches the host architecture by default. best_arch= exec_file= core_file= for arg in "$@" do case "$arg" in -*) # Skip all option arguments ;; *) # Call file to determine the file type of the argument file_result=`file "$arg"`; case "$file_result" in *Mach-O*core*) core_file=$arg ;; *Mach-O*) exec_file=$arg ;; *) if [ -x "$arg" ]; then exec_file="$arg" fi ;; esac ;; esac done # Get a list of possible architectures in FILE_ARCHS. # If we have a core file, we must use it to determine the architecture, # else we use the architectures in the executable file. file_archs= if [ -n "$core_file" ]; then file_archs=`file "$core_file" | awk '{ print $NF }'` else if [ -n "$exec_file" ]; then file_archs=`file "$exec_file" | grep -v universal | awk '{ print $NF }'` fi fi # Iterate through the architectures and try and find the best match. for file_arch in $file_archs do # If we don't have any best architecture set yet, use this in case # none of them match the host architecture. if [ -z "$best_arch" ]; then best_arch="$file_arch" fi # See if the file architecture matches the host, and if so set the # best architecture to that. if [ "$file_arch" = "$host_architecture" ]; then best_arch="$file_arch" fi done case "$best_arch" in ppc* | i386 | x86_64 | arm*) # We found a plausible architecture and we will use it architecture_to_use="$best_arch" ;; *) # We did not find a plausible architecture, use the host architecture architecture_to_use="$host_architecture" ;; esac fi # If GDB_ROOT is not set, then figure it out # from $0. We need this for gdb's that are # not installed in /usr/bin. GDB_ROOT_SET=${GDB_ROOT:+set} if [ "$GDB_ROOT_SET" != "set" ] then gdb_bin="$0" if [ -L "$gdb_bin" ] then gdb_bin=`readlink "$gdb_bin"` fi gdb_bin_dirname=`dirname "$gdb_bin"` GDB_ROOT=`cd "$gdb_bin_dirname"/../.. ; pwd` if [ "$GDB_ROOT" = "/" ] then GDB_ROOT= fi fi case "$architecture_to_use" in ppc*) # Make sure we specify the architecture to gdb when launching if the # gdb can handle both 32 and 64 bit variants. if [ -z "$requested_architecture" ]; then requested_architecture=$architecture_to_use; fi gdb="${GDB_ROOT}/usr/libexec/gdb/gdb-powerpc-apple-darwin" ;; i386 | x86_64) # Make sure we specify the architecture to gdb when launching if the # gdb can handle both 32 and 64 bit variants. if [ -z "$requested_architecture" ]; then requested_architecture=$architecture_to_use; fi gdb="${GDB_ROOT}/usr/libexec/gdb/gdb-i386-apple-darwin" ;; arm*) gdb="${GDB_ROOT}/usr/libexec/gdb/gdb-arm-apple-darwin" case "$architecture_to_use" in armv6) osabiopts="--osabi DarwinV6" ;; *) # Make the REQUESTED_ARCHITECTURE the empty string so # we can let gdb auto-detect the cpu type and subtype requested_architecture="" ;; esac ;; *) echo "Unknown architecture '$architecture_to_use'; using 'ppc' instead."; gdb="${GDB_ROOT}/usr/libexec/gdb/gdb-powerpc-apple-darwin" ;; esac if [ ! -x "$gdb" ]; then echo "Unable to start GDB: cannot find binary in '$gdb'" exit 1 fi if [ -n "$requested_architecture" -a $translate_mode -eq 0 ] then exec $translate_binary "$gdb" --arch "$requested_architecture" "$@" else exec $translate_binary "$gdb" $osabiopts "$@" fi So he could simply make a copy of that for /usr/local/bin and adjust it to run the FSF gdb. Actually it might not be a bad idea since one could script calling the gdb binary with sudo (as 10.5.8 or later requires gdb to be run as root for now). Jack ps I wonder if there are any clues in this script that might help us run FSF gdb as non-root? ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: How to configure gdb to support '--arch=i386' on Mac OS X 2009-10-07 18:09 How to configure gdb to support '--arch=i386' on Mac OS X n179911 2009-10-07 18:32 ` Joel Brobecker 2009-10-07 18:35 ` Michael Snyder @ 2009-10-07 20:45 ` Jack Howarth 2 siblings, 0 replies; 18+ messages in thread From: Jack Howarth @ 2009-10-07 20:45 UTC (permalink / raw) To: n179911, y; +Cc: gdb On Wed, Oct 07, 2009 at 11:09:39AM -0700, n179911 wrote: > Hi, > > I have compiled gdb 7.0 on Mac OS X. And I have configured XCode to > use this new version of gdb 7.0. > > But when I start debug my XCode project it said gdb can't recognize > the option '--arch=i386'. Here is the log of my error: > > [Session started at 2009-10-07 11:00:43 -0700.] > /Users/n179911/bin/gdb/bin/gdb: unrecognized option `--arch=i386' > Use `/Users/n179911/bin/gdb/bin/gdb --help' for a complete list of options. > > The Debugger has exited with status 1.The Debugger has exited with status > > Can you please tell me how to build gdb to support '--arch-i386' option? > > Thank you. You don't indicate if you are running Snow Leopard are not. The gdb 7.0 release uses the latest config.guess which detects the architecture as that of the default code generation for the system compiler (which is x86_64 on EMT64 capable hardware). If you want to build the 32-bit gdb under those conditions, you should explicitly pass the triplet i386-apple-darwin10 or i686-apple-darwin10 to configure for --host/--build/--target. I would note that currently for the x86_64-apple-darwin10 build, the resulting gdb doesn't load i386 binaires (unlike the situation under Linux). I haven't tested the i686-apple-darwin9 build to see if it can load x86_64 binaries yet. Jack ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2009-10-08 12:48 UTC | newest] Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-10-07 18:09 How to configure gdb to support '--arch=i386' on Mac OS X n179911 2009-10-07 18:32 ` Joel Brobecker 2009-10-07 18:35 ` Michael Snyder 2009-10-07 20:10 ` n179911 2009-10-07 20:20 ` Daniel Jacobowitz 2009-10-07 20:21 ` n179911 2009-10-07 21:16 ` Stan Shebs 2009-10-07 20:26 ` n179911 2009-10-07 20:38 ` Matt Rice 2009-10-07 21:07 ` Michael Snyder 2009-10-07 21:22 ` Stan Shebs 2009-10-07 23:18 ` Jack Howarth 2009-10-08 7:53 ` Tristan Gingold 2009-10-08 12:48 ` Tristan Gingold 2009-10-08 7:54 ` Tristan Gingold 2009-10-07 21:04 ` Michael Snyder 2009-10-07 21:15 ` Jack Howarth 2009-10-07 20:45 ` Jack Howarth
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox