Hi Ian,
thank you very much your help. I redesigned __cyg_profile_enter and
__cyg_profile_exit functions and I stay in the right memory interval.
Furthermore I'm using now main_constructor and main_destructor instead
of start_test and end_test. The settings of make also seem good, it
creates the output of instrumentation that way what I expected. But the
compilation failed after a point because it couldn't understand e.g.
size_t in filenames.h and a lot of similar errors in files what I
haven't touched. I thought, since I add file IO operations to the main.c
or linking the instrument file to the project, I distracted somehow the
dependency. At this point I tried to compile the gcc --disable-bootstrap
but then the instrumentation flag hadn't any results. What is the
problem now? :S
thanks,
Reni
On 06/05/2012 09:38 PM, Ian Lance Taylor wrote:
Renata Hodovan<hodovan@xxxxxxxxxxxxxxx> writes:
I have to instrument gcc for some purposes. The goal is to be able to
track what GCC functions are called during a particularly
compile. Unfortunately I'm not really familiar with the architecture
of GCC so I need a little help. I tried the following steps:
1) Hacking gcc/Makefile.in and adding "-finstrument-functions" flag to
T_CFLAGS.
2) I have an already implemented and tested version of __start_test__
and __end_test__ functions. They are called from gcc/main.c, before
and after toplev_main() call. The containing file is linked to gcc
(the object is added to OBJS-common and the dependency is defined
later in gcc/Makefile.in)
3) Downloading prerequisites with contrib/download_prerequisites.
4) Executing the configuration from a clean build directory (on the
same level with the source dir): ./../gcc-4.6.2/configure
--prefix="/opt/gcc-4.6.2/" --enable-languages="c,c++"
5) Starting the build with "make all"
This way I ran out of memory, although I had 28G.
You should not have run out of memory at this step, not with 28G.
Adding -finstrument-functions should not have significantly changed the
memory usage of the build.
But I suppose you could have run out of memory if your
__cyg_profile_func_enter function uses a lot of memory. If that is the
problem, then that is what you will have to fix.
Next I tried to remove the T_CFLAGS settings from the Makefile and
gave -finstrument-functions to the make command:
make CFLAGS+="-finstrument-functions" all
This won't build the compiler itself with -finstrument-functions. For
that you need to use
make BOOT_CFLAGS="-g -O2 -finstrument-functions"
Ian