12

I need to include a #define at the top of around 300 .c files. I would prefer not to change the code as it is open source code but if I have to I will just write a script to modify all the files. Is there a way using gcc to add a #define or header file include to the top of every source file during compilation? The #define is this:

#define malloc MYmalloc 
1
  • I suppose most of these .c files directly or indirectly #include <stdlib.h>. Hmmm... Commented Oct 29, 2012 at 18:55

3 Answers 3

28

You can pass -Dmalloc=MYmalloc to the gcc options.

For more information about the -D option:

http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html

Note that if you want to modify the behavior of malloc function for debugging purposes, you may also be interested in glibc malloc hooks:

http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks ouah, I'll try this out and I think it will solve my problems. I know about the malloc hooks and LD_PRELOAD solutions but they aren't suitable to my situation. Either way its good to mention it for other viewers.
Useful answer. Just an update about glibc malloc hooks: developers.redhat.com/articles/2021/08/25/…
8

gcc option -D:

-D name Predefine name as a macro, with definition 1. -D name=definition .... 

so, in your case, gcc ... -Dmalloc=MYmalloc

Comments

1

If you strive for redirecting malloc() calls to a custom function I would rather recommend to provide your custom code via pre-loading of your implementation at runtime. See this question for details.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.