[v2,5/7] configure: Use -fno-addrsig if possible

Message ID 20230208195226.144143-6-iii@linux.ibm.com
State Committed
Headers
Series Add Memory Sanitizer support |

Commit Message

Ilya Leoshkevich Feb. 8, 2023, 7:52 p.m. UTC
  By default, clang produces .llvm_addrsig sections [1]. The GNU
toolchain does not know how to handle them yet [2], so just ask clang
not to generate them for the time being.

[1] https://llvm.org/docs/Extensions.html#sht-llvm-addrsig-section-address-significance-table
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105625

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
 configure.ac | 8 ++++++++
 1 file changed, 8 insertions(+)
  

Comments

Mark Wielaard Feb. 9, 2023, 1:28 p.m. UTC | #1
Hi Ilya,

On Wed, 2023-02-08 at 20:52 +0100, Ilya Leoshkevich wrote:
> By default, clang produces .llvm_addrsig sections [1]. The GNU
> toolchain does not know how to handle them yet [2], so just ask clang
> not to generate them for the time being.
> 
> [1] https://llvm.org/docs/Extensions.html#sht-llvm-addrsig-section-address-significance-table
> [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105625

That looks like a good generic configure check.
Pushed.

Thanks,

Mark

> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
> ---
>  configure.ac | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/configure.ac b/configure.ac
> index 8fe8baee..7dc9be63 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -588,6 +588,14 @@ CFLAGS="$old_CFLAGS"])
>  AM_CONDITIONAL(HAVE_NO_PACKED_NOT_ALIGNED_WARNING,
>  	       [test "x$ac_cv_no_packed_not_aligned" != "xno"])
>  
> +AC_CACHE_CHECK([whether the compiler accepts -fno-addrsig], ac_cv_fno_addrsig, [dnl
> +old_CFLAGS="$CFLAGS"
> +CFLAGS="$CFLAGS -fno-addrsig -Werror"
> +AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
> +                  ac_cv_fno_addrsig=yes, ac_cv_fno_addrsig=no)
> +CFLAGS="$old_CFLAGS"])
> +AS_IF([test "x$ac_cv_fno_addrsig" = "xyes"], CFLAGS="$CFLAGS -fno-addrsig")
> +
>  saved_LIBS="$LIBS"
>  AC_SEARCH_LIBS([argp_parse], [argp])
>  LIBS="$saved_LIBS"
  

Patch

diff --git a/configure.ac b/configure.ac
index 8fe8baee..7dc9be63 100644
--- a/configure.ac
+++ b/configure.ac
@@ -588,6 +588,14 @@  CFLAGS="$old_CFLAGS"])
 AM_CONDITIONAL(HAVE_NO_PACKED_NOT_ALIGNED_WARNING,
 	       [test "x$ac_cv_no_packed_not_aligned" != "xno"])
 
+AC_CACHE_CHECK([whether the compiler accepts -fno-addrsig], ac_cv_fno_addrsig, [dnl
+old_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fno-addrsig -Werror"
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([])],
+                  ac_cv_fno_addrsig=yes, ac_cv_fno_addrsig=no)
+CFLAGS="$old_CFLAGS"])
+AS_IF([test "x$ac_cv_fno_addrsig" = "xyes"], CFLAGS="$CFLAGS -fno-addrsig")
+
 saved_LIBS="$LIBS"
 AC_SEARCH_LIBS([argp_parse], [argp])
 LIBS="$saved_LIBS"