* k5-platform.h (MAKE_INIT_FUNCTION, CALL_INIT_FUNCTION, INITIALIZER_RAN): Use
authorKen Raeburn <raeburn@mit.edu>
Fri, 18 Jun 2004 23:43:47 +0000 (23:43 +0000)
committerKen Raeburn <raeburn@mit.edu>
Fri, 18 Jun 2004 23:43:47 +0000 (23:43 +0000)
the linker-driven version for Windows.  The auxinit function definition needs
an argument list.
(MAKE_FINI_FUNCTION): Likewise.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16488 dc483132-0cff-0310-8789-dd5450dbe970

src/include/ChangeLog
src/include/k5-platform.h

index 403392748b984ac6f1e4c0e3ace02abdec78e219..4bb1de8e613bcc2901d37771ecfa44d9d7209a34 100644 (file)
@@ -1,5 +1,10 @@
 2004-06-18  Ken Raeburn  <raeburn@mit.edu>
 
+       * k5-platform.h (MAKE_INIT_FUNCTION, CALL_INIT_FUNCTION,
+       INITIALIZER_RAN): Use the linker-driven version for Windows.  The
+       auxinit function definition needs an argument list.
+       (MAKE_FINI_FUNCTION): Likewise.
+
        * win-mac.h (HAVE_STRERROR, SYS_ERRLIST_DECLARED): Define.
 
 2004-06-16  Ken Raeburn  <raeburn@mit.edu>
index 04cc276a159b30b383b0e07a49ecc5f480f07add..7343e5c538b2e20e30f8215d65133b333f0a4c35 100644 (file)
@@ -240,15 +240,16 @@ typedef struct { int error; unsigned char did_run; } k5_init_t;
         : (abort(),0))
 # define INITIALIZER_RAN(NAME) (JOIN2(NAME,__ran).did_run == 3 && JOIN2(NAME, __ran).error == 0)
 
-#elif defined(USE_LINKER_INIT_OPTION)
+#elif defined(USE_LINKER_INIT_OPTION) || defined(_WIN32)
 
-/* Run initializer at load time, via linker magic.  */
+/* Run initializer at load time, via linker magic, or in the
+   case of WIN32, win_glue.c hard-coded knowledge.  */
 typedef struct { int error; unsigned char did_run; } k5_init_t;
 # define MAKE_INIT_FUNCTION(NAME)              \
        static k5_init_t JOIN2(NAME, __ran)     \
                = { 0, 2 };                     \
        static int NAME(void);                  \
-       void JOIN2(NAME, __auxinit)             \
+       void JOIN2(NAME, __auxinit)()           \
        {                                       \
            JOIN2(NAME, __ran).error = NAME();  \
            JOIN2(NAME, __ran).did_run = 3;     \
@@ -273,7 +274,7 @@ typedef struct { int error; unsigned char did_run; } k5_init_t;
 
 
 
-#ifdef USE_LINKER_FINI_OPTION
+#if defined(USE_LINKER_FINI_OPTION) || defined(_WIN32)
 /* If we're told the linker option will be used, it doesn't really
    matter what compiler we're using.  Do it the same way
    regardless.  */
@@ -281,7 +282,7 @@ typedef struct { int error; unsigned char did_run; } k5_init_t;
 # define MAKE_FINI_FUNCTION(NAME)      \
        void NAME(void)
 
-#elif defined(__GNUC__) && !defined(_WIN32) && defined(DESTRUCTOR_ATTR_WORKS)
+#elif defined(__GNUC__) && defined(DESTRUCTOR_ATTR_WORKS)
 /* If we're using gcc, if the C++ support works, the compiler should
    build executables and shared libraries that support the use of
    static constructors and destructors.  The C compiler supports a