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 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility