How to check if a macro exists in an object file in C?
For example, I define a macro:
#ifdef VERSION //.... do something #endif
How can I check if VERSION exist in my object file or not? I tried to disassemble it with objdump, but found no actual value of my macro VERSION. VERSION is defined in Makefile.
Try compiling with -g3 option in gcc. It stores macro information too in the generated ELF file.
After this, if you've defined a macro MACRO_NAME just grep for it in the output executable or your object file. For example,
$ grep MACRO_NAME a.out # any object file will do instead of a.out Binary file a.out matches
Or you can even try,
$ strings -a -n 1 a.out | grep MACRO_NAME -a Do not scan only the initialized and loaded sections of object files; scan the whole files. -n min-len Print sequences of characters that are at least min-len characters long, instead of the default 4.