From 0351a629e71de127cbfd1b142e9eaa6069deabf5 Mon Sep 17 00:00:00 2001 From: Tomasz Konojacki Date: Sat, 18 Jun 2022 07:26:58 +0200 Subject: hide private functions with __attribute__((visibility("hidden"))) This allows us to enforce API boundaries and potentially enables compiler optimisations. We've been always hiding non-public symbols on Windows. This commit brings that to the other platforms. --- Configure | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'Configure') diff --git a/Configure b/Configure index ee63ae6047..723ed94676 100755 --- a/Configure +++ b/Configure @@ -391,6 +391,7 @@ d_attribute_nonnull='' d_attribute_noreturn='' d_attribute_pure='' d_attribute_unused='' +d_attribute_visibility='' d_attribute_warn_unused_result='' d_printf_format_null='' d_backtrace='' @@ -11337,6 +11338,34 @@ set d_attribute_always_inline eval $setvar $rm -f attrib* +: Look for GCC-style attribute visibility +case "$d_attribute_visibility" in +'') +echo " " +echo "Checking whether your compiler can handle __attribute__((visibility)) ..." >&4 +$cat >attrib.c <<'EOCP' +#include +__attribute__((visibility("hidden"))) int I_will_be_hidden(void); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $compiler_warning attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't support __attribute__((visibility))." + val="$undef" + else + echo "Your C compiler supports __attribute__((visibility))." + val="$define" + fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" +fi +;; +*) val="$d_attribute_visibility" ;; +esac +set d_attribute_visibility +eval $setvar +$rm -f attrib* + : see if getpgrp exists set getpgrp d_getpgrp eval $inlibc @@ -24598,6 +24627,7 @@ d_attribute_nonnull='$d_attribute_nonnull' d_attribute_noreturn='$d_attribute_noreturn' d_attribute_pure='$d_attribute_pure' d_attribute_unused='$d_attribute_unused' +d_attribute_visibility='$d_attribute_visibility' d_attribute_warn_unused_result='$d_attribute_warn_unused_result' d_backtrace='$d_backtrace' d_bsd='$d_bsd' -- cgit v1.2.1