Test if we need to put the .type directive inside a .def directive.

diff --git a/include/acconfig.h b/include/acconfig.h
index fef7b43..2bf4f64 100644
--- a/include/acconfig.h
+++ b/include/acconfig.h
@@ -3,6 +3,9 @@
  * defined in the 'configure' script.
  */
 
+/* Define if .type asm directive must be inside a .def directive */
+#undef NEED_TYPE_IN_DEF
+
 /* Define if symbols declared in assembly code need an underscore prefix */
 #undef NEED_UNDERSCORE_PREFIX
 
diff --git a/include/config.h.in b/include/config.h.in
index 2a5ac4a..2dedec4 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -47,6 +47,9 @@
 /* Define if lex declares yytext as a char * by default, not a char[].  */
 #undef YYTEXT_POINTER
 
+/* Define if .type asm directive must be inside a .def directive */
+#undef NEED_TYPE_IN_DEF
+
 /* Define if symbols declared in assembly code need an underscore prefix */
 #undef NEED_UNDERSCORE_PREFIX
 
diff --git a/include/winnt.h b/include/winnt.h
index 05433b0..ece5eed 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -721,11 +721,17 @@
 # define __ASM_NAME(name) name
 #endif
 
+#ifdef NEED_TYPE_IN_DEF
+# define __ASM_TYPE(name) ".def " __ASM_NAME(#name) "; .scl 2; .type 32; .endef\n"
+#else
+# define __ASM_TYPE(name) ".type " __ASM_NAME(#name) ",@function\n"
+#endif
+
 #ifdef __GNUC__
 # define __ASM_GLOBAL_FUNC(name,code) \
       __asm__( ".align 4\n\t" \
                ".globl " __ASM_NAME(#name) "\n\t" \
-               ".type " __ASM_NAME(#name) ",@function\n" \
+               __ASM_TYPE(name) \
                __ASM_NAME(#name) ":\n\t" \
                code );
 #else  /* __GNUC__ */
@@ -733,7 +739,7 @@
       void __asm_dummy_##name(void) { \
           asm( ".align 4\n\t" \
                ".globl " __ASM_NAME(#name) "\n\t" \
-               ".type " __ASM_NAME(#name) ",@function\n" \
+               __ASM_TYPE(name) \
                __ASM_NAME(#name) ":\n\t" \
                code ); \
       }