On 11/10/22 19:53, Marek Polacek via Gcc-patches wrote:
This is a rebased version of the patch I posted in February:
<https://gcc.gnu.org/pipermail/gcc-patches/2022-February/590201.html>.

Fortunately it is much simpler than the patch implementing --enable-host-pie.
I've converted the install.texi part into configuration.rst, otherwise
there are no changes to the original version.

With --enable-host-bind-now --enable-host-pie:
$ readelf -Wd ./gcc/cc1 ./gcc/cc1plus | grep FLAGS
  0x000000000000001e (FLAGS)              BIND_NOW
  0x000000006ffffffb (FLAGS_1)            Flags: NOW PIE
  0x000000000000001e (FLAGS)              BIND_NOW
  0x000000006ffffffb (FLAGS_1)            Flags: NOW PIE

Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?

-- >8 --

As promised in the --enable-host-pie patch, this patch adds another
configure option, --enable-host-bind-now, which adds -z now when linking
the compiler executables in order to extend hardening.  BIND_NOW with RELRO
allows the GOT to be marked RO; this prevents GOT modification attacks.

This option does not affect linking of target libraries; you can use
LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now to enable RELRO/BIND_NOW.

c++tools/ChangeLog:

        * configure.ac (--enable-host-bind-now): New check.
        * configure: Regenerate.

gcc/ChangeLog:

        * configure.ac (--enable-host-bind-now): New check.  Add
        -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
        * configure: Regenerate.
        * doc/install/configuration.rst: Document --enable-host-bind-now.

lto-plugin/ChangeLog:

        * configure.ac (--enable-host-bind-now): New check.  Link with
        -z,now.
        * configure: Regenerate.
---

OK.  Glad to see this finally get to resolution.  While I'm largely in agreement with Jakub that PIE doesn't provide a major security benefit for the compiler, it seems better to not have the compiler be special WRT security options.


Jeff

Reply via email to