GCC world tour
Andi Hellmund
mail@andihellmund.com
Sat Apr 30 10:28:00 GMT 2011
Hey Kevin,
> Hi,
>
> Could anyone suggest some good tourist stops in GCC (i.e. good
> functions to set breakpoints at while "debugging" a simple compile to
> learn the inner workings of the beast)? If I wanted to visit the C
> parser, what is that called?
That's really hard to answer. As you said, GCC is a beast with a _lot_
of different components. I used to start with just "main" and start
working through the very high-level components like option parsing,
front-end interaction, middle-end.
Some interesting functions could be: gimplify_function_tree (GENERIC to
GIMPLE), cgraph_optimize (that's where the optimization passes of the
middle-end start). If you are further more interested in the various
(optimization) passes of GCC, I would possibly search the source code
for "struct *opt_pass" (e.g. struct simple_ipa_opt_pass) which contains
the descriptions for the (optimization) passes, including the functions
getting executed.
> I was playing with the -### option. There is a wiki debugging entry
> that describes running cc1 using the driver:
>
> gdb --args `gcc/xgcc -### -Bgcc -O2 -march=pentium3
> -fomit-frame-pointer -S -fverbose-asm -dA -Q -fmem-report
> ../../gcctest1.i 2>&1|grep cc1|tr -d '"'`
>
> I had to add the "tr -d '"' (a ' " ') or it would not work? Says it
> can't find "gcc/cc1". Am I doing something wrong? Or is this a
> "feature" of Debians gdb?
I think that you are doing something wrong. This command worked for me
perfectly. Does the file gcc/cc1 exist? If yes, I would possibly start
to just run the command in ``, check the result, execute this command in
the shell and finally feed this command into gdb --args. Maybe there's
somewhere a simple typo ...
Best regards,
Andi
More information about the Gcc-help
mailing list