Linking with nonstandard malloc
Patrick Horgan
phorgan1@yahoo.com
Wed Jan 5 07:25:00 GMT 2011
On 01/04/2011 03:38 PM, Amittai Aviram wrote:
> All of you are right on all counts. I was doing something too stupid to post here, fixed it, and now get the test message as desired. BTW, yes, I know that glibc's malloc is Doug Lea's malloc, but now I can further doctor my copy of Doug Lea's malloc to do special things.
>
> Point of information: malloc and the other routines (or rather dlmalloc, etc.) are thus defined both in my local source file (malloc.c) and in the glibc.a or glibc.so object code. How does the linker know to use my local malloc definitions instead of the ones in glibc--since I otherwise have to use glibc functions and am #including stdlib.h? Thanks!
>
> Thanks to everybody!
>
>
> Amittai Aviram
> PhD Student in Computer Science
> Yale University
> 646 483 2639
> amittai.aviram@yale.edu
> http://www.amittai.com
>
> On Jan 4, 2011, at 5:58 PM, Ian Lance Taylor wrote:
>
>> Amittai Aviram<amittai.aviram@yale.edu> writes:
>>
>>> Suppose I want to use my own malloc.c and malloc.h for malloc and
>>> related functions (based on Doug Lea's code), but use the standard C
>>> library (glibc) for all other C library functions. Is there a way
>>> that I can tell the gcc linker to use my malloc code but glibc for
>>> everything else? Thanks!
It's the order that they're seen by the linker. Once the symbols are
resolved they aren't looked for anymore, so your malloc.o would resolve
malloc() and when glibc is looked at later, the linker would never look
for malloc in there since it's already resolved.
Patrick
>> It should just work. If it doesn't, you're going to have to explain
>> more clearly precisely what you are doing and precisely what is going
>> wrong.
>>
>> That said, note that glibc already uses Doug Lea's malloc.
>>
>> Ian
>
More information about the Gcc-help
mailing list