SV: multiply defined functions in libs
"Stefan Boberg" <[email protected]>
| Newsgroups | gmane.games.devel.general |
|---|---|
| Message-ID | <[email protected]> |
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. 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. 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. /Stefan ________________________________ Från: [email protected] genom Brett Bibby Skickat: on 2004-06-09 05:58 Till: [email protected] Ämne: [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 [email protected] https://lists.sourceforge.net/lists/listinfo/gamedevlists-general Archives: http://sourceforge.net/mailarchive/forum.php?forum_id=557
winmail.dat
(application/ms-tnef, 5.9 KB) - not displayed