[PATCH] autostatic.c

Daniel Richard G. oss@teragram.com
Fri Jul 27 20:26:00 GMT 2012


My next patch is an overhaul of autostatic.c that adds support for older 
MSVC versions, fixes the no-init bug in small-static builds, and smooths 
out a number of rough edges.

++ autostatic.c

* Move the #includes up to the top, in case PTW32_STATIC_LIB is defined in
   a header file (and a later patch from me will need a symbol from
   implement.h early on)

* Added a big fat comment documenting the pre/post-main() black magic and
   the anchoring business

* The init/exit routines are supposed to return int, not void, and return
   a value of 0 to indicate "no error" (see the "Addendum: int Instead of
   void" section in the Codeguru article)

* I got rid of the attribute_section() macro (in favor of writing things
   out longhand) because it's not enough to abstract away all the
   differences between the various forms of declarations needed (for
   example, #pragma is needed in some cases, and that can't be stuffed into
   a macro (and __pragma() isn't supported by older MSVC versions))

* The way that MSVC pre/post-main() black magic is done changed in 8.0, so
   the code now implements the "old" and "new" ways. I've tested that this
   works for everything back to MSVC6.

* Added a bit at the end to avoid warnings when PTW32_STATIC_LIB is not
   defined in non-inlined builds

++ implement.h

* This bit sticks a reference to autostatic.obj into every object file, so
   that the linker won't optimize it away (for "small static" builds)


--Daniel


-- 
Daniel Richard G. || danielg@teragram.com || Software Developer
Teragram Linguistic Technologies (a division of SAS)
http://www.teragram.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ptw32-autostatic.patch
Type: text/x-diff
Size: 3795 bytes
Desc: Patch against git master
URL: <http://sourceware.org/pipermail/pthreads-win32/attachments/20120727/9ea9b03a/attachment.bin>


More information about the Pthreads-win32 mailing list