public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* [Newb] Stepping into cc1plus from gcc
@ 2004-03-20  9:06 sashan
  2004-03-20 11:11 ` Phil Edwards
  2004-03-20 11:17 ` [Newb] Stepping into cc1plus from gcc Alexandre Oliva
  0 siblings, 2 replies; 13+ messages in thread
From: sashan @ 2004-03-20  9:06 UTC (permalink / raw)
  To: gcc

Hi

I've been stepping through gcc and I've come the point, in 
libiberty/pex-unix.c where it forks a new process called cc1plus. I'm 
guessing this is the C++ compiler that is being called. Anyway I'd like 
to know how to continue stepping into it.

Thanks

-- 
sashan
http://www.cs.auckland.ac.nz/~sgov008



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-20  9:06 [Newb] Stepping into cc1plus from gcc sashan
@ 2004-03-20 11:11 ` Phil Edwards
  2004-03-23 22:47   ` [Newb] Stepping into gnat Sebastian Pop
  2004-03-20 11:17 ` [Newb] Stepping into cc1plus from gcc Alexandre Oliva
  1 sibling, 1 reply; 13+ messages in thread
From: Phil Edwards @ 2004-03-20 11:11 UTC (permalink / raw)
  To: sashan; +Cc: gcc

On Sat, Mar 20, 2004 at 05:11:45PM +1300, sashan wrote:
> I've been stepping through gcc and I've come the point, in 
> libiberty/pex-unix.c where it forks a new process called cc1plus. I'm 
> guessing this is the C++ compiler that is being called.

Yes.


> Anyway I'd like 
> to know how to continue stepping into it.

You don't.  The way to actually step through the compiler is to run the
driver (gcc, g++, etc) with -v on your testcase.  It will print the full
command line to the compiler, and the arguments passed to it.  Run the
debugger on /that/ executable, not the driver, and use "set args" as usual
to pass the rest of the options.


-- 
Behind everything some further thing is found, forever; thus the tree behind
the bird, stone beneath soil, the sun behind Urth.  Behind our efforts, let
there be found our efforts.
              - Ascian saying, as related by Loyal to the Group of Seventeen

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-20  9:06 [Newb] Stepping into cc1plus from gcc sashan
  2004-03-20 11:11 ` Phil Edwards
@ 2004-03-20 11:17 ` Alexandre Oliva
  2004-03-20 21:06   ` Andreas Schwab
  1 sibling, 1 reply; 13+ messages in thread
From: Alexandre Oliva @ 2004-03-20 11:17 UTC (permalink / raw)
  To: sashan; +Cc: gcc

[-- Attachment #1: Type: text/plain, Size: 439 bytes --]

On Mar 20, 2004, sashan <sashang@ihug.co.nz> wrote:

> I've been stepping through gcc and I've come the point, in
> libiberty/pex-unix.c where it forks a new process called cc1plus. I'm
> guessing this is the C++ compiler that is being called. Anyway I'd
> like to know how to continue stepping into it.

Add the attached scripts to your path and run:

% debugx cc1plus g++ rest of command line

Hmm...  Maybe these should be in contrib?


[-- Attachment #2: debug --]
[-- Type: application/octet-stream, Size: 1815 bytes --]

#! /bin/sh

# Copyright 1999, 2000, 2001  Alexandre Oliva <oliva@lsd.ic.unicamp.br>

# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License.  A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html

if test $# -lt 1; then
    echo usage: env DEBUG="<gdb|emacs>" $0 "<program>" args... >&2
    exit 1
fi
: ${DEBUG=emacs}
prog="$1"; shift 1
gdbinitdir=/tmp/.gdbinit.$$
gdbinit=$gdbinitdir/init
mkdir $gdbinitdir ||
{ echo directory $gdbinitdir already exists >&2; exit 1; }
{
    echo "shell rm -rf /tmp/.gdbinit.$$"
    echo "cd `pwd`"
    arglist=
    for arg in ${1+"$@"}; do
      case $arg in
      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
	arg="\"$arg\""
	;;
      esac
      arglist="$arglist $arg"
    done
    echo "set args $arglist"
} >$gdbinit
case `$DEBUG --version </dev/null 2>/dev/null` in
    "GDB"*|"GNU gdb"*)
	# start command-line gdb within the correct working directory,
	# and set up the specified argument list
	exec $DEBUG -command $gdbinit $prog;;
    "DDD"*)
        # start DDD/gdb within the correct working directory,
	# and set up the specified argument list
	exec $DEBUG --debugger "${GDB-gdb} -command $gdbinit" $prog;;
    "GNU Emacs"*)
	# start gdb within GNU Emacs, move into the current working
	# directory and set up the specified argument list
	exec $DEBUG -eval "(progn (gdb \"${GDB-gdb} $prog\") (gud-call \"source $gdbinit\"))";;
    XEmacs*)
	# start gdb within XEmacs, move into the current working
	# directory and set up the specified argument list
	exec $DEBUG -eval "(progn ${GDB+(setq gdb-command-name \"$GDB\")} (gdb \"$prog\") (gdb-call \"source $gdbinit\"))";;
    *) echo you must set DEBUG to either emacs or gdb >&2;;
esac
rm -rf /tmp/.gdbinit.$$
exit 1

[-- Attachment #3: debugx --]
[-- Type: application/octet-stream, Size: 903 bytes --]

#! /bin/sh

# Copyright 1999, 2000, 2001  Alexandre Oliva <oliva@lsd.ic.unicamp.br>

# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License.  A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html

tmp=${TMPDIR-/tmp}/.debug$$
mkdir "$tmp" || exit 1
prog=$1; shift
run=$1; shift
fullprog=`$run ${1+"$@"} -print-prog-name="$prog"`
if test ! -x "$fullprog"; then
  echo $0: $run cannot find $prog >&2
  exit 1
fi
cat > "$tmp/$prog" << EOF
#! /bin/sh
rm -rf "$tmp"
case "\$@" in
*[\"]*)
  count=\$#
  for arg
  do
    case \$arg in
    *[\"]*) set x \${1+"\$@"} \`echo "\$arg" | sed 's,\(["]\),\\\\\\\\\\\\1,g'\`; shift;;
    *) set x \${1+"\$@"} "\$arg"; shift;;
    esac
  done
  shift \$count
  ;;
esac
exec debug "$fullprog" \${1+"\$@"}
EOF
chmod +x "$tmp/$prog"
exec $run -B"$tmp/" ${1+"$@"} -B"$tmp/"

[-- Attachment #4: Type: text/plain, Size: 188 bytes --]


-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-20 11:17 ` [Newb] Stepping into cc1plus from gcc Alexandre Oliva
@ 2004-03-20 21:06   ` Andreas Schwab
  2004-03-21 18:15     ` Alexandre Oliva
  0 siblings, 1 reply; 13+ messages in thread
From: Andreas Schwab @ 2004-03-20 21:06 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: sashan, gcc

Alexandre Oliva <aoliva@redhat.com> writes:

> On Mar 20, 2004, sashan <sashang@ihug.co.nz> wrote:
>
>> I've been stepping through gcc and I've come the point, in
>> libiberty/pex-unix.c where it forks a new process called cc1plus. I'm
>> guessing this is the C++ compiler that is being called. Anyway I'd
>> like to know how to continue stepping into it.
>
> Add the attached scripts to your path and run:
>
> % debugx cc1plus g++ rest of command line

Try "gdb --args cc1plus ...".

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-20 21:06   ` Andreas Schwab
@ 2004-03-21 18:15     ` Alexandre Oliva
  2004-03-21 19:21       ` Andreas Schwab
  0 siblings, 1 reply; 13+ messages in thread
From: Alexandre Oliva @ 2004-03-21 18:15 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: sashan, gcc

On Mar 20, 2004, Andreas Schwab <schwab@suse.de> wrote:

> Alexandre Oliva <aoliva@redhat.com> writes:
>> On Mar 20, 2004, sashan <sashang@ihug.co.nz> wrote:
>> 
>>> I've been stepping through gcc and I've come the point, in
>>> libiberty/pex-unix.c where it forks a new process called cc1plus. I'm
>>> guessing this is the C++ compiler that is being called. Anyway I'd
>>> like to know how to continue stepping into it.
>> 
>> Add the attached scripts to your path and run:
>> 
>> % debugx cc1plus g++ rest of command line

> Try "gdb --args cc1plus ...".

But then you have to know the command line passed to cc1plus.  And
what if gdb doesn't support --args, or if you want to use emacs and it
doesn't support gdb --args?

-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-21 18:15     ` Alexandre Oliva
@ 2004-03-21 19:21       ` Andreas Schwab
  2004-03-22  7:43         ` Alexandre Oliva
  0 siblings, 1 reply; 13+ messages in thread
From: Andreas Schwab @ 2004-03-21 19:21 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: sashan, gcc

Alexandre Oliva <aoliva@redhat.com> writes:

> On Mar 20, 2004, Andreas Schwab <schwab@suse.de> wrote:
>
>> Alexandre Oliva <aoliva@redhat.com> writes:
>>> On Mar 20, 2004, sashan <sashang@ihug.co.nz> wrote:
>>> 
>>>> I've been stepping through gcc and I've come the point, in
>>>> libiberty/pex-unix.c where it forks a new process called cc1plus. I'm
>>>> guessing this is the C++ compiler that is being called. Anyway I'd
>>>> like to know how to continue stepping into it.
>>> 
>>> Add the attached scripts to your path and run:
>>> 
>>> % debugx cc1plus g++ rest of command line
>
>> Try "gdb --args cc1plus ...".
>
> But then you have to know the command line passed to cc1plus.  And
> what if gdb doesn't support --args, or if you want to use emacs and it
> doesn't support gdb --args?

You don't want to use such an old gdb anyway.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-21 19:21       ` Andreas Schwab
@ 2004-03-22  7:43         ` Alexandre Oliva
  2004-03-22 13:57           ` llewelly
  0 siblings, 1 reply; 13+ messages in thread
From: Alexandre Oliva @ 2004-03-22  7:43 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: sashan, gcc

On Mar 21, 2004, Andreas Schwab <schwab@suse.de> wrote:

> Alexandre Oliva <aoliva@redhat.com> writes:

>> But then you have to know the command line passed to cc1plus.  And
>> what if gdb doesn't support --args, or if you want to use emacs and it
>> doesn't support gdb --args?

> You don't want to use such an old gdb anyway.

But I do want to use gdb within emacs

-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-22  7:43         ` Alexandre Oliva
@ 2004-03-22 13:57           ` llewelly
  2004-03-23 11:29             ` Alexandre Oliva
  0 siblings, 1 reply; 13+ messages in thread
From: llewelly @ 2004-03-22 13:57 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: Andreas Schwab, sashan, gcc

Alexandre Oliva <aoliva@redhat.com> writes:

> On Mar 21, 2004, Andreas Schwab <schwab@suse.de> wrote:
> 
> > Alexandre Oliva <aoliva@redhat.com> writes:
> 
> >> But then you have to know the command line passed to cc1plus.  And
> >> what if gdb doesn't support --args, or if you want to use emacs and it
> >> doesn't support gdb --args?
> 
> > You don't want to use such an old gdb anyway.
> 
> But I do want to use gdb within emacs

ok. I have to ask. In emacs I type 'M-x gdb', and it responds:
    'Run gdb (like this): gdb ' and I add
    '--args /usr/local/gcc-3.3.3/lib/gcc-lib/i386-unknown-freebsd5.2/3.3.3/cc1plus ... '
    and it works happily. I am using emacs 21.2.1 and gdb 5.2.1 . 

Does this not work for you? 
    

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-22 13:57           ` llewelly
@ 2004-03-23 11:29             ` Alexandre Oliva
  2004-03-23 12:27               ` Tom Tromey
  2004-03-23 12:52               ` sashan
  0 siblings, 2 replies; 13+ messages in thread
From: Alexandre Oliva @ 2004-03-23 11:29 UTC (permalink / raw)
  To: llewelly; +Cc: Andreas Schwab, sashan, gcc

On Mar 22, 2004, llewelly@xmission.com wrote:

> Alexandre Oliva <aoliva@redhat.com> writes:
>> On Mar 21, 2004, Andreas Schwab <schwab@suse.de> wrote:
>> 
>> > Alexandre Oliva <aoliva@redhat.com> writes:
>> 
>> >> But then you have to know the command line passed to cc1plus.  And
>> >> what if gdb doesn't support --args, or if you want to use emacs and it
>> >> doesn't support gdb --args?
>> 
>> > You don't want to use such an old gdb anyway.
>> 
>> But I do want to use gdb within emacs

> ok. I have to ask. In emacs I type 'M-x gdb', and it responds:
>     'Run gdb (like this): gdb ' and I add
>     '--args /usr/local/gcc-3.3.3/lib/gcc-lib/i386-unknown-freebsd5.2/3.3.3/cc1plus ... '
>     and it works happily. I am using emacs 21.2.1 and gdb 5.2.1 . 

> Does this not work for you? 
    
If you know the arguments to pass to cc1plus, yes, it does.

The point of debugx is to be able to run a `gcc -c -flags ...' and get
a debugger attached to cc1 or cc1plus, with the right command line.

-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-23 11:29             ` Alexandre Oliva
@ 2004-03-23 12:27               ` Tom Tromey
  2004-03-23 12:52               ` sashan
  1 sibling, 0 replies; 13+ messages in thread
From: Tom Tromey @ 2004-03-23 12:27 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: Andreas Schwab, sashan, gcc

>>>>> "Alexandre" == Alexandre Oliva <aoliva@redhat.com> writes:

Alexandre> If you know the arguments to pass to cc1plus, yes, it does.

Alexandre> The point of debugx is to be able to run a `gcc -c -flags
Alexandre> ...' and get a debugger attached to cc1 or cc1plus, with
Alexandre> the right command line.

Cute.  I've long meant to add an option to gcc like "--debug jc1" that
would cause it to launch the appropriate sub-process with "gdb
--args".  Still haven't gotten around to it... but maybe there's no
need with your programs around.

Tom

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into cc1plus from gcc
  2004-03-23 11:29             ` Alexandre Oliva
  2004-03-23 12:27               ` Tom Tromey
@ 2004-03-23 12:52               ` sashan
  1 sibling, 0 replies; 13+ messages in thread
From: sashan @ 2004-03-23 12:52 UTC (permalink / raw)
  To: gcc


>    
>If you know the arguments to pass to cc1plus, yes, it does.
>
>The point of debugx is to be able to run a `gcc -c -flags ...' and get
>a debugger attached to cc1 or cc1plus, with the right command line.
>
>  
>
I've found the scripts useful. Thanks  

-- 
sashan
http://www.cs.auckland.ac.nz/~sgov008/





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into gnat
  2004-03-20 11:11 ` Phil Edwards
@ 2004-03-23 22:47   ` Sebastian Pop
  2004-03-24  3:32     ` Laurent GUERBY
  0 siblings, 1 reply; 13+ messages in thread
From: Sebastian Pop @ 2004-03-23 22:47 UTC (permalink / raw)
  To: Phil Edwards; +Cc: gcc

just curious, what's the debugging procedure for the Ada compiler?

Is this already documented somewhere?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Newb] Stepping into gnat
  2004-03-23 22:47   ` [Newb] Stepping into gnat Sebastian Pop
@ 2004-03-24  3:32     ` Laurent GUERBY
  0 siblings, 0 replies; 13+ messages in thread
From: Laurent GUERBY @ 2004-03-24  3:32 UTC (permalink / raw)
  To: Sebastian Pop; +Cc: Phil Edwards, gcc

On Tue, 2004-03-23 at 21:20, Sebastian Pop wrote:
> just curious, what's the debugging procedure for the Ada compiler?
> 
> Is this already documented somewhere?

gcc/ada/treepr.ads contain Ada tree dump routines useful from gdb.

Laurent


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2004-03-23 20:50 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-03-20  9:06 [Newb] Stepping into cc1plus from gcc sashan
2004-03-20 11:11 ` Phil Edwards
2004-03-23 22:47   ` [Newb] Stepping into gnat Sebastian Pop
2004-03-24  3:32     ` Laurent GUERBY
2004-03-20 11:17 ` [Newb] Stepping into cc1plus from gcc Alexandre Oliva
2004-03-20 21:06   ` Andreas Schwab
2004-03-21 18:15     ` Alexandre Oliva
2004-03-21 19:21       ` Andreas Schwab
2004-03-22  7:43         ` Alexandre Oliva
2004-03-22 13:57           ` llewelly
2004-03-23 11:29             ` Alexandre Oliva
2004-03-23 12:27               ` Tom Tromey
2004-03-23 12:52               ` sashan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).