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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.