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

--- Comment #8 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to igor.v.tsimbalist from comment #7)
> (In reply to H.J. Lu from comment #6)
> > (In reply to igor.v.tsimbalist from comment #4)
> > > Created attachment 43400 [details]
> > > patch
> > 
> > 2 questions:
> > 
> > 1. Should 32-bit multilib target libraries compiled on 64-bit host
> > enable CET?
> > 2. Should 64-bit multilib target libraries compiled with 32-bit compiler
> > enable CET?
> 
> Is there a configuration variable holding an indication of bit-ness for
> which the compilation of a library is done? I see there is some code in
> configure.ac in libgcc evaluating the host_address (32 or 64 bits)
> 
> # Check 32bit or 64bit.  In the case of MIPS, this really determines the
> # word size rather than the address size.
> cat > conftest.c <<EOF
> #if defined(__x86_64__) || (!defined(__i386__) && defined(__LP64__)) \
>     || defined(__mips64)
> host_address=64
> #else
> host_address=32
> #endif
> EOF
> eval `${CC-cc} -E conftest.c | grep host_address=`
> rm -f conftest.c
> 
> If I use the 'host_address' in cet.m4 I got the expected results for libgcc:
> by default 64-bit library is CET enabled, 32-bit library is not.

That would be wrong for x32.  We need to enable CET for x86-64
by default, regardless address size.  To enable CET, we only
need to check if __SSE2__ is defined since all SSE2 processors
support multi-byte NOPs.

Reply via email to