[Crash-utility] target compilation?

Dave Anderson anderson at redhat.com
Mon Sep 22 15:57:22 UTC 2008


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













More information about the Crash-utility mailing list