[Crash-utility] target compilation?
Guy Streeter
streeter at redhat.com
Mon Sep 22 16:23:58 UTC 2008
Dave Anderson wrote:
> Jun Koi wrote:
>> Hi,
>>
>> I looked at configure.c, and find some code like this:
>>
>> void
>> get_current_configuration(void)
>> {
>> FILE *fp;
>> static char buf[512];
>> char *p;
>>
>> #ifdef __alpha__
>> target_data.target = ALPHA;
>> #endif
>> #ifdef __i386__
>> target_data.target = X86;
>> #endif
>> #ifdef __powerpc__
>> target_data.target = PPC;
>> #endif
>> #ifdef __ia64__
>> target_data.target = IA64;
>> #endif
>> ...
>> }
>>
>> I have few questions:
>> - Is it correct that the above code want to find out the architecture
>> (means target here) we are compiling our code on?
>
> Exactly.
>
>>
>> - Who defined those architectures in the above code, like "__i386__"
>> (in the check "#ifdef __i386__")? I guessed that the architecture is
>> defined in a particular prototype file in /usr/include, but cannot
>> find anything there. So I think that those macros are defined by
>> compilation process of crash, but again I dont see anywhere in the
>> source doing that.
>
> I forget where they are defined, but they're available to any compiled
> object without any explicit #include's, like this example on my x86_64
> machine:
>
> # cat tmp.c
> main()
> {
> #ifdef __x86_64__
> printf("hello world\n");
> #endif
> }
> # make tmp
> cc tmp.c -o tmp
> # ./tmp
> hello world
> #
>
> Dave
>
They are defined by the gcc preprocessor. To see what they look like on
your system, try:
gcc -E -dM - </dev/null
--Guy
More information about the Crash-utility
mailing list