SV: [GD-General] multiply defined functions in libs
Brought to you by:
vexxed72
From: Stefan B. <Ste...@di...> - 2004-06-09 09:36:13
|
Well, on unix-y linkers, the linker picks the first object module it = finds a symbol in so the order in which you specify your libraries on = the linker command line determines which one will be used. =20 The only really safe way to be really really sure that only your = memory allocators get linked in is to remove all memory allocation = functions from libc though, since there are several "secret" allocation = functions that might get called from within other libc code (malloc_r = etc). Personally I found the GNU LD wrapping options (I think it's = '--wrap-xxxxx') very useful for stuff like memory tracking. =20 As for a general solution which fits all toolsets and platforms, I = don't believe one exists since it's so dependent on the linker/runtime = model. =20 /Stefan ________________________________ Fr=E5n: gam...@li... genom Brett = Bibby Skickat: on 2004-06-09 05:58 Till: Gam...@li... =C4mne: [GD-General] multiply defined functions in libs I have no idea where to ask this quesiton, so I guess general might be = okay. Recently I have switched our memory management to Doug Lea's malloc and = so far so good. The biggest problem is that I'm trying to drop in and = replace the normal ansi calls. This generally works although with different = side effects on different platforms. For example, CodeWarrior's linker emits = a warning that multiple "malloc" symbols are defined on Win32, but = correctly chooses to use mine anyway if I set the link order correctly, and emits = no warnings at all on PS2 and GCN and seems to use mine silently (although = the original malloc is listed in the linker map, just unused!). On MSVC it = is an error and won't build the Win32 version. Since we have 18 target = builds across mutliple platforms this is messy. I can't remove the offending libraries without also removing a bunch of needed functions as they are built into a single library. Is there any sort of pragma or some other way to make sure that all references to memory management functions only see my definition? It = seems that many people must have done this before.... If not, the only way I see to fix this properly is to build custom = release and debug libs from each platform's source and exclude the functions I = want to remove <shudder>. Brett ------------------------------------------------------- This SF.Net email is sponsored by: GNOME Foundation Hackers Unite! GUADEC: The world's #1 Open Source Desktop Event. GNOME Users and Developers European Conference, 28-30th June in Norway http://2004/guadec.org _______________________________________________ Gamedevlists-general mailing list Gam...@li... https://lists.sourceforge.net/lists/listinfo/gamedevlists-general Archives: http://sourceforge.net/mailarchive/forum.php?forum_id=3D557 |