On Nov 9, 2010, at 3:47 AM, Michel Fortin wrote: > Le 2010-11-09 à 3:33, Jacob Carlborg a écrit : > >> See my replay to Michel Fortin. >> >> Just out of curiosity why does DMD use this approach with begin, content, >> end to determine a section on Mac OS X? Looking at the source code for >> object_.d in Tango for LDC, the same implementation is used for all Posix >> systems and that is the same approach which is used in druntime for Linux, >> Solaris and FreeBSD. > > I believed the reason was that Walter could not find at the time a way to get > the size of a section, so he developed this little hack. > > Now, that's surprising because if you look at rt/memory_osx.c in druntime > you'll find it does exactly that: it calls getsectbynamefromheader to get a > section's address and size to add ranges to the GC, and > _dyld_register_func_for_add_image/_dyld_register_func_for_remove_image to > register callbacks for when an image is loaded/unloaded. That file's authors > are Walter Bright and Sean Kelly. I don't see a reason the same technique > can't be used to handle modules infos, tls, and the like.
It certainly could. The current approach is used mostly because it works everywhere, weird OSX linker behavior notwithstanding. > Looking at druntime makes me wonder why the initialization code is scattered > everywhere... surely it'd be easier to figure out these kinds of problems if > initialization was all happening in one place. Better dynamic library support will probably mean integrating these two bits of code somehow. _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
