On Tue, Sep 23, 2008 at 12:57 AM, Dave Anderson <anderson@xxxxxxxxxx> 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 > # > Thanks! It is nice to learn something new everyday ;-) J -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility