Bug #73062 [Ver->Fbk]: Test for -fvisibility=hidden support fails with certain $CC

From: Date: Tue, 05 Oct 2021 14:25:08 +0000
Subject: Bug #73062 [Ver->Fbk]: Test for -fvisibility=hidden support fails with certain $CC
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-237045@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73062&edit=1

 ID:                 73062
 Updated by:         cmb@php.net
 Reported by:        michael at orlitzky dot com
 Summary:            Test for -fvisibility=hidden support fails with
                     certain $CC
-Status:             Verified
+Status:             Feedback
 Type:               Bug
 Package:            *Compile Issues
 PHP Version:        7.1Git-2016-09-10 (Git)
-Assigned To:        
+Assigned To:        cmb
 Block user comment: N
 Private report:     N

 New Comment:

Michael's PR had been merged, so I think this issue is resolved.
Or are there still issues with any of the actively supported PHP
versions[1]?

[1] <https://www.php.net/supported-versions.php>


Previous Comments:
------------------------------------------------------------------------
[2018-02-14 14:03:24] michael at orlitzky dot com

> The current test in php-7.2.2 gives a false pass (aka yes) when the compile is done with -c.
> Without -c the flag fails.

Is that causing a problem building PHP? I'm not familiar with xlc, but Google tells me that
"-c" means "don't link," so the build should fail anyway with
"-c" in your CFLAGS.

In any case, the macro is only supposed to check whether or not "-fvisibility=hidden"
works with your current CC/CFLAGS. If you have CFLAGS="-c" and if the test (incorrectly)
passes, that should still be ok since everything will be compiled with "-c
-fvisibility=hidden". Unless it isn't; like I said I don't know anything about xlc =)

------------------------------------------------------------------------
[2018-02-13 20:37:54] aixtools at felt dot demon dot nl

FYI.

The current test in php-7.2.2 gives a false pass (aka yes) when the compile is done with -c. Without
-c the flag fails.

System AIX, complier xlc

root@x065:[/data/prj/php/php-7.2.2]xlc_r -c -I/opt/include -I/opt/include/mysql -qmaxmem=-1
-qarch=pwr5  -fvisibility=hidden -I/opt/include x.c
root@x065:[/data/prj/php/php-7.2.2]xlc_r -I/opt/include -I/opt/include/mysql -qmaxmem=-1 -qarch=pwr5
 -fvisibility=hidden -I/opt/include x.c
ld: 0706-005 Cannot find or open file: visibility=hidden
        ld:fopen(): A file or directory in the path name does not exist.

------------------------------------------------------------------------
[2016-09-10 22:58:01] michael at orlitzky dot com

Good idea =)

https://github.com/php/php-src/pull/2124

------------------------------------------------------------------------
[2016-09-10 22:47:56] cmb@php.net

Um, wouldn't it be better to check for -fvisibility=hidden
support instead of the GCC version, anyway?

------------------------------------------------------------------------
[2016-09-10 14:57:38] michael at orlitzky dot com

Description:
------------
There is a check in configure.in that looks for -fvisibility=hidden support when the user is
building with GCC:

  dnl activate some gcc specific optimizations for gcc >= 4
  if test "$GCC" = "yes"; then
    case $host_alias in
    *darwin*)
      GCC_MAJOR_VERSION=`$CC -dumpversion | /usr/bin/sed -nE '1s/([[0-9]]+)\.[[0-$
      ;;
    *)
      GCC_MAJOR_VERSION=$CC --version | $SED -n '1s/[[^0-9]]*//;1s/\..*//;1p'
      ;;
    esac
    if test $GCC_MAJOR_VERSION -ge 4; then
      CFLAGS="$CFLAGS -fvisibility=hidden"
    fi
  fi

The idea is to parse off the major version number from the end of the "gcc --version"
output, and see if it's 4 or more. However, the regular expression in question doesn't
work when $CC is a little weird. This is the expected result, with a vanilla GCC:

  $CC --version | sed -n '1s/[[^0-9]]*//;1s/\..*//;1p'
  4

But this is what happens when my CC is set:

  CC=x86_64-pc-linux-gnu-gcc
  $ $CC --version | sed -n '1s/[[^0-9]]*//;1s/\..*//;1p'
  x6_64-pc-linux-gnu-gcc (Gentoo Hardened 4




------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=73062&edit=1


Thread (8 messages)

« previous php.bugs (#237045) next »