diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2019-04-15 19:46:53 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2019-04-16 23:03:36 +0300 |
commit | d11ae95d05dc39ec6b825d1109afadd964589880 (patch) | |
tree | 6a36256a9a816cd8e49fb6be5fcb4a9b6f9d007d /configure.ac | |
parent | 0903b215ef5a18332b740a24e6e2bfbed9e1d97b (diff) | |
download | libgcrypt-d11ae95d05dc39ec6b825d1109afadd964589880.tar.gz |
Add CFI unwind assembly directives for AMD64 assembly
* configure.ac (gcry_cv_gcc_asm_cfi_directives): New.
* cipher/asm-common-amd64.h (ADD_RIP, CFI_STARTPROC, CFI_ENDPROC)
(CFI_REMEMBER_STATE, CFI_RESTORE_STATE, CFI_ADJUST_CFA_OFFSET)
(CFI_REL_OFFSET, CFI_DEF_CFA_REGISTER, CFI_REGISTER, CFI_RESTORE)
(CFI_PUSH, CFI_POP, CFI_POP_TMP_REG, CFI_LEAVE, DW_REGNO)
(DW_SLEB128_7BIT, DW_SLEB128_28BIT, CFI_CFA_ON_STACK)
(CFI_REG_ON_STACK): New.
(ENTER_SYSV_FUNCPARAMS_0_4, EXIT_SYSV_FUNC): Add CFI directives.
* cipher/arcfour-amd64.S: Add CFI directives.
* cipher/blake2b-amd64-avx2.S: Add CFI directives.
* cipher/blake2s-amd64-avx.S: Add CFI directives.
* cipher/blowfish-amd64.S: Add CFI directives.
* cipher/camellia-aesni-avx-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/camellia-aesni-avx2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/cast5-amd64.S: Add CFI directives.
* cipher/chacha20-amd64-avx2.S: Add CFI directives.
* cipher/chacha20-amd64-ssse3.S: Add CFI directives.
* cipher/des-amd64.S: Add CFI directives.
* cipher/rijndael-amd64.S: Add CFI directives.
* cipher/rijndael-ssse3-amd64-asm.S: Add CFI directives.
* cipher/salsa20-amd64.S: Add CFI directives; Use 'asm-common-amd64.h'.
* cipher/serpent-avx2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/serpent-sse2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha1-avx-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha1-avx-bmi2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha1-avx2-bmi2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha1-ssse3-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha256-avx-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha256-avx2-bmi2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha256-ssse3-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha512-avx-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha512-avx2-bmi2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/sha512-ssse3-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/twofish-amd64.S: Add CFI directives.
* cipher/twofish-avx2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* cipher/whirlpool-sse2-amd64.S: Add CFI directives; Use
'asm-common-amd64.h'.
* mpi/amd64/func_abi.h: Include 'config.h'.
(CFI_STARTPROC, CFI_ENDPROC, CFI_ADJUST_CFA_OFFSET, CFI_REL_OFFSET)
(CFI_RESTORE, CFI_PUSH, CFI_POP): New.
(FUNC_ENTRY, FUNC_EXIT): Add CFI directives.
--
This commit adds CFI directives that add DWARF unwinding information for
debugger to backtrace when executing code from AMD64 assembly files.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index b54b212b..1aafc320 100644 --- a/configure.ac +++ b/configure.ac @@ -1170,6 +1170,34 @@ if test "$gcry_cv_gcc_aarch64_platform_as_ok" = "yes" ; then [Defined if underlying assembler is compatible with ARMv8/Aarch64 assembly implementations]) fi +# +# Check whether GCC assembler supports for CFI directives. +# +AC_CACHE_CHECK([whether GCC assembler supports for CFI directives], + [gcry_cv_gcc_asm_cfi_directives], + [gcry_cv_gcc_asm_cfi_directives=no + AC_LINK_IFELSE([AC_LANG_PROGRAM( + [[__asm__( + ".text\n\t" + "ac_test:\n\t" + ".cfi_startproc\n\t" + ".cfi_remember_state\n\t" + ".cfi_adjust_cfa_offset 8\n\t" + ".cfi_rel_offset 0, 8\n\t" + ".cfi_def_cfa_register 1\n\t" + ".cfi_register 2, 3\n\t" + ".cfi_restore 2\n\t" + ".cfi_escape 0x0f, 0x02, 0x11, 0x00\n\t" + ".cfi_restore_state\n\t" + ".long 0\n\t" + ".cfi_endproc\n\t" + );]])], + [gcry_cv_gcc_asm_cfi_directives=yes])]) +if test "$gcry_cv_gcc_asm_cfi_directives" = "yes" ; then + AC_DEFINE(HAVE_GCC_ASM_CFI_DIRECTIVES,1, + [Defined if underlying assembler supports for CFI directives]) +fi + # # Check whether underscores in symbols are required. This needs to be @@ -1617,7 +1645,6 @@ if test "$gcry_cv_gcc_platform_as_ok_for_intel_syntax" = "yes" ; then [Defined if underlying assembler is compatible with Intel syntax assembly implementations]) fi - # # Check whether compiler is configured for ARMv6 or newer architecture # |