]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Check for COFF type directive, and use in assembly RPOLOGUE.
authorNiels Möller <nisse@lysator.liu.se>
Sat, 31 May 2014 11:47:55 +0000 (13:47 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Sat, 31 May 2014 11:47:55 +0000 (13:47 +0200)
Fixes problem with windows dll linking.

ChangeLog
asm.m4
config.m4.in
configure.ac

index a084e866f1c0837a746a1662902d996ff87cb159..6ee1bb0aa943444f9e83fee64d6d2bb414b3250f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2014-05-31  Niels Möller  <nisse@lysator.liu.se>
 
+       * configure.ac: Check for COFF type directives.
+       (ASM_COFF_STYLE): New substituted variable.
+       * config.m4.in: Set COFF_STYLE from configure.
+       * asm.m4 (PROLOGUE): Use COFF type directive, if enabled by
+       configure. Fixes problem with windows dll linking.
+
        * asm.m4: Deleted unused offsets for struct aes_ctx.
 
 2014-05-28  Niels Möller  <nisse@lysator.liu.se>
diff --git a/asm.m4 b/asm.m4
index 97cb6a0e5a8c8dc0181aacb10572e336bd7ee35f..d59191e14119d5fae2e838fbbb7a2f50add265e8 100644 (file)
--- a/asm.m4
+++ b/asm.m4
@@ -19,6 +19,13 @@ define(<PROLOGUE>,
 <.globl C_NAME($1)
 .type C_NAME($1),TYPE_FUNCTION
 C_NAME($1):>,
+COFF_STYLE, <yes>,
+<.globl C_NAME($1)
+.def C_NAME($1)
+.scl 2
+.type 32
+.endef
+C_NAME($1):>,
 <.globl C_NAME($1)
 C_NAME($1):>)>)
 
index bcfb95e540692f8f0e795c40d249309db646ac0c..3f7700bbed1d26f287743dd819c6475c25f2f8c1 100644 (file)
@@ -1,6 +1,7 @@
 define(<srcdir>, <<@srcdir@>>)dnl
 define(<C_NAME>, <@ASM_SYMBOL_PREFIX@><$1>)dnl
 define(<ELF_STYLE>, <@ASM_ELF_STYLE@>)dnl
+define(<COFF_STYLE>, <@ASM_COFF_STYLE@>)dnl
 define(<TYPE_FUNCTION>, <@ASM_TYPE_FUNCTION@>)dnl
 define(<TYPE_PROGBITS>, <@ASM_TYPE_PROGBITS@>)dnl
 define(<ALIGN_LOG>, <@ASM_ALIGN_LOG@>)dnl
index 34d339ab37a0f184963388bb4b46f657afc7c2e3..31b2839dd1abd4b93270017a9055252e8d217014 100644 (file)
@@ -487,6 +487,7 @@ AC_SUBST([CCPIC_MAYBE])
 
 ASM_SYMBOL_PREFIX=''
 ASM_ELF_STYLE='no'
+ASM_COFF_STYLE='no'
 # GNU as default is to use @
 ASM_TYPE_FUNCTION='@function'
 ASM_TYPE_PROGBITS='@progbits'
@@ -554,6 +555,23 @@ foo:
     fi
   fi
 
+  AC_CACHE_CHECK([for COFF-style .type directive],
+    [nettle_cv_asm_coff_type],
+      [GMP_TRY_ASSEMBLE([
+.text
+.globl _foo
+.def _foo
+.scl 2
+.type 32
+.endef
+_foo:
+],
+        [nettle_cv_asm_coff_type=yes],
+        [nettle_cv_asm_coff_type=no])])
+  if test "x$nettle_cv_asm_coff_type" = "xyes" ; then
+    ASM_COFF_STYLE=yes
+  fi
+
   AC_CACHE_CHECK([if we should use a .note.GNU-stack section],
   nettle_cv_asm_gnu_stack,
   [ # Default
@@ -589,6 +607,7 @@ fi
 
 AC_SUBST(ASM_SYMBOL_PREFIX)
 AC_SUBST(ASM_ELF_STYLE)
+AC_SUBST(ASM_COFF_STYLE)
 AC_SUBST(ASM_TYPE_FUNCTION)
 AC_SUBST(ASM_TYPE_PROGBITS)
 AC_SUBST(ASM_MARK_NOEXEC_STACK)