From 1851417eb69ca20c87167301aa20bf828fbdd316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Sat, 31 May 2014 13:47:55 +0200 Subject: [PATCH] Check for COFF type directive, and use in assembly RPOLOGUE. Fixes problem with windows dll linking. --- ChangeLog | 6 ++++++ asm.m4 | 7 +++++++ config.m4.in | 1 + configure.ac | 19 +++++++++++++++++++ 4 files changed, 33 insertions(+) diff --git a/ChangeLog b/ChangeLog index a084e866..6ee1bb0a 100644 --- 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 97cb6a0e..d59191e1 100644 --- 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):>)>) diff --git a/config.m4.in b/config.m4.in index bcfb95e5..3f7700bb 100644 --- a/config.m4.in +++ b/config.m4.in @@ -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 diff --git a/configure.ac b/configure.ac index 34d339ab..31b2839d 100644 --- a/configure.ac +++ b/configure.ac @@ -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) -- GitLab