https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125205

Rainer Orth <ro at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ro at gcc dot gnu.org

--- Comment #1 from Rainer Orth <ro at gcc dot gnu.org> ---
*Please* Cc me in PRs you file for Solaris issues.

(In reply to H.J. Lu from comment #0)

> Since ix86_stack_protect_fail returns default_external_stack_protect_fail for
> 64-bit and default_hidden_stack_protect_fail for 32-bit which references
> __stack_chk_fail_local.  But __stack_chk_fail_local isn't provided on
> Solaris.

It is present all right:

for x in .libs/*.{a,so}; do echo $x; readelf -sW $x|grep
__stack_chk_fail_local; done
.libs/libssp_nonshared.a
    10: 00000000    28 FUNC    GLOBAL HIDDEN     2 __stack_chk_fail_local
.libs/libssp.a
    29: 00000130    11 FUNC    GLOBAL HIDDEN     1 __stack_chk_fail_local
.libs/libssp.so
    48: 00001660    28 FUNC    LOCAL  HIDDEN    17 __stack_chk_fail_local

The only difference to Linux is that it's local/hidden in libssp.so since
it's not exported in ssp.map.

On Linux/x86, it's provided by libc.so.6 instead:

readelf -sW /lib32/libc.so.6|grep __stack_chk
   562: 00135410    25 FUNC    GLOBAL DEFAULT   14 __stack_chk_fail@@GLIBC_2.4

Seems like a bug in the map file to me.

Reply via email to