public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Christophe Lyon <christophe.lyon@linaro.org>
To: Rich Felker <dalias@libc.org>
Cc: Szabolcs Nagy <Szabolcs.Nagy@arm.com>,
	Christophe Lyon <christophe.lyon@st.com>,
		"gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>,
	nd <nd@arm.com>
Subject: Re: [ARM/FDPIC v5 03/21] [ARM] FDPIC: Force FDPIC related options unless -mno-fdpic is provided
Date: Wed, 15 May 2019 15:12:00 -0000	[thread overview]
Message-ID: <CAKdteOa+PCQAFjk+DjQAJqaQO0ajSUkgfGcXrmyLQM0SXhy-zw@mail.gmail.com> (raw)
In-Reply-To: <20190515143653.GT23599@brightrain.aerifal.cx>

On Wed, 15 May 2019 at 16:37, Rich Felker <dalias@libc.org> wrote:
>
> On Wed, May 15, 2019 at 01:55:30PM +0000, Szabolcs Nagy wrote:
> > On 15/05/2019 13:39, Christophe Lyon wrote:
> > > In FDPIC mode, we set -fPIE unless the user provides -fno-PIE, -fpie,
> > > -fPIC or -fpic: indeed FDPIC code is PIC, but we want to generate code
> > > for executables rather than shared libraries by default.
> > >
> > > We also make sure to use the --fdpic assembler option, and select the
> > > appropriate linker emulation.
> > >
> > > At link time, we also default to -pie, unless we are generating a
> > > shared library or a relocatable file (-r). Note that even for static
> > > link, we must specify the dynamic linker because the executable still
> > > has to relocate itself at startup.
> > >
> > > We also force 'now' binding since lazy binding is not supported.
> > >
> > > We should also apply the same behavior for -Wl,-Ur as for -r, but I
> > > couldn't find how to describe that in the specs fragment.
> > ...
> > > +/* Unless we generate a shared library or a relocatable object, we
> > > +   force -pie.  */
> > > +/* Even with -static, we have to define the dynamic-linker, as we
> > > +   have some relocations to resolve at load time.  */
> > > +#undef  SUBTARGET_EXTRA_LINK_SPEC
> > > +#define SUBTARGET_EXTRA_LINK_SPEC                      \
> > > +  "%{!mno-fdpic: -m " TARGET_FDPIC_LINKER_EMULATION            \
> > > +   "%{!shared:%{!r: -pie}}                             \
> > > +    %{static:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" \
> > > +  "%{mno-fdpic: -m " TARGET_LINKER_EMULATION "}"       \
> > > +  "%{!r:%{!mno-fdpic: -z now}}"
> >
> > i think -dynamic-linker can be avoided for -static using
> > -static-pie linking with rcrt0.o
>
> Yes, -dynamic-linker should never be used with -static.

So, do you mean dropping completely the line:
+    %{static:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" \
and thus make -static unsupported, forcing users to use -static-pie instead?

> > but more importantly: does the abi spec require the sysv dynamic
> > linker name? that sounds suboptimal (in principle the same os
>
> ABI specs typically do this and we just ignore it. BFD contains
> default dynamic linker strings for all sorts of ABIs, and they're all
> wrong -- things like /lib/ld64.so.1, etc. I don't think it's worth
> bothering with fighting the desire of folks writing ABI specs to do
> this again and again. GCC overrides them all with the actually-correct
> values when !static.
>
> > can support both normal elf and fdpic elf so you can test/use
> > an fdpic toolchain on a system with mmu, but this requires
> > different dynamic linker name ..otherwise one has to run
> > executables in a chroot or separate mount namespace to change
> > the dynamic linker)
>
> Indeed, it's a bad idea to make them clash.
>

Not sure to understand your point: indeed FDPIC binaries work
on a system with mmu, provided you have the right dynamic
linker in the right place, as well as the needed runtime libs (libc, etc....)

Do you want me to change anything here?

> > > +
> > > +#undef     STARTFILE_SPEC
> > > +#define STARTFILE_SPEC "%{!mno-fdpic:%{!shared:crtreloc.o%s}} " \
> > > +  LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC)
> > > diff --git a/libsanitizer/configure.tgt b/libsanitizer/configure.tgt
> > > index b241ddb..c38b3f4 100644
> > > --- a/libsanitizer/configure.tgt
> > > +++ b/libsanitizer/configure.tgt
> > > @@ -45,6 +45,9 @@ case "${target}" in
> > >     ;;
> > >    sparc*-*-solaris2.11*)
> > >     ;;
> > > +  arm*-*-uclinuxfdpiceabi)
> > > +   UNSUPPORTED=1
> > > +   ;;
> >
> > musl libc has fdpic support on sh (e.g. with sh2eb-linux-muslfdpic
> > target and --enable-fdpic), it can probably support fdpic on arm
> > too with minimal changes, i assume the target name for that would
> > be arm-linux-muslfdpiceabi.
>
> I plan to add ARM FDPIC support as soon as there is (1) published ABI
> for relocation types, entry point contract, etc., and (2) there's

The ABI is here:
https://github.com/mickael-guene/fdpic_doc/blob/master/abi.txt

> tooling to support it that's either upstream or can be applied as
> clean patches to recent gcc (as opposed to some fork of gcc4 or
> whatever it was this got started as). I think those conditions are
> mostly met now.
This patch series applies on gcc trunk as of ~2 weeks ago

> > so i think it is better to check arm*-*fdpiceabi where the libc
> > does not matter (so we dont have to patch the same files when
> > *-muslfdpiceabi support is added).
>
Looks sane.

> Yes, that would be appreciated. Maybe we could get musl ldso names
> added at the same time, too? I think they should just be the same as
> the existing musl ldso names but with "-fdpic" appended before
> ".so.1".
Do you mean updating config/arm/linux-eabi.h and adding -fdpic to the
4 musl dynamic linker names?

> Rich

  reply	other threads:[~2019-05-15 15:12 UTC|newest]

Thread overview: 109+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-15 12:40 [ARM/FDPIC v5 00/21] FDPIC ABI for ARM Christophe Lyon
2019-05-15 12:40 ` [ARM/FDPIC v5 01/21] [ARM] FDPIC: Add -mfdpic option support Christophe Lyon
2019-07-16 10:18   ` Richard Sandiford
2019-08-29 15:08     ` Christophe Lyon
2019-08-30 10:06       ` Richard Sandiford
2019-05-15 12:41 ` [ARM/FDPIC v5 02/21] [ARM] FDPIC: Handle arm*-*-uclinuxfdpiceabi in configure scripts Christophe Lyon
2019-07-12  7:44   ` Richard Sandiford
2019-07-12 13:25     ` Christophe Lyon
2019-07-12 13:28       ` Richard Sandiford
2019-08-29 15:14     ` Christophe Lyon
2019-08-30  9:30       ` Richard Sandiford
2019-08-30 14:48         ` Christophe Lyon
2019-08-30 15:15           ` Richard Sandiford
2019-09-02  7:51             ` Christophe Lyon
2019-09-02  8:31               ` Richard Sandiford
2019-08-30 14:40       ` Jonathan Wakely
2019-05-15 12:41 ` [ARM/FDPIC v5 05/21] [ARM] FDPIC: Fix __do_global_dtors_aux and frame_dummy generation Christophe Lyon
2019-07-12  6:49   ` Richard Sandiford
2019-07-12 14:25     ` Christophe Lyon
2019-08-29 15:39     ` Christophe Lyon
2019-08-30  8:41       ` Richard Sandiford
2019-05-15 12:41 ` [ARM/FDPIC v5 04/21] [ARM] FDPIC: Add support for FDPIC for arm architecture Christophe Lyon
2019-07-16 12:33   ` Richard Sandiford
2019-08-20 17:13     ` Christophe Lyon
2019-08-29 15:39     ` Christophe Lyon
2019-09-02 16:12       ` Richard Sandiford
2019-09-02 20:04         ` Christophe Lyon
2019-09-03  8:40           ` Richard Sandiford
2019-09-04 19:59             ` Christophe Lyon
2019-09-05  8:03               ` Richard Sandiford
2019-05-15 12:41 ` [ARM/FDPIC v5 03/21] [ARM] FDPIC: Force FDPIC related options unless -mno-fdpic is provided Christophe Lyon
2019-05-15 13:55   ` Szabolcs Nagy
2019-05-15 14:37     ` Rich Felker
2019-05-15 15:12       ` Christophe Lyon [this message]
2019-05-15 15:37         ` Rich Felker
2019-05-15 15:59           ` Szabolcs Nagy
2019-05-15 16:07             ` Rich Felker
2019-05-21 15:29               ` Christophe Lyon
2019-05-21 15:48                 ` Rich Felker
2019-05-22  8:39                 ` Szabolcs Nagy
2019-05-22  8:45                   ` Christophe Lyon
2019-05-23 12:45                     ` Christophe Lyon
2019-07-16 10:38                       ` Richard Sandiford
2019-07-16 20:00                         ` Rich Felker
2019-08-01 10:13                         ` Christophe Lyon
2019-08-06 14:28                           ` Richard Sandiford
2019-08-29 15:14                         ` Christophe Lyon
2019-08-30  9:40                           ` Richard Sandiford
2019-05-15 12:42 ` [ARM/FDPIC v5 07/21] [ARM] FDPIC: Avoid saving/restoring r9 on stack since it is read-only Christophe Lyon
2019-07-16 10:42   ` Kyrill Tkachov
2019-05-15 12:42 ` [ARM/FDPIC v5 06/21] [ARM] FDPIC: Add support for c++ exceptions Christophe Lyon
2019-08-30  9:31   ` Kyrill Tkachov
2019-08-30 14:44     ` Jonathan Wakely
2019-05-15 12:43 ` [ARM/FDPIC v5 10/21] [ARM] FDPIC: Implement TLS support Christophe Lyon
2019-09-04 14:16   ` Kyrill Tkachov
2019-09-04 20:03     ` Christophe Lyon
2019-09-09  8:54       ` Christophe Lyon
2019-05-15 12:43 ` [ARM/FDPIC v5 09/21] [ARM] FDPIC: Add support for taking address of nested function Christophe Lyon
2019-07-16 11:53   ` Kyrill Tkachov
2019-07-16 13:31     ` Kyrill Tkachov
2019-07-31 14:48       ` Christophe Lyon
2019-08-29 15:40         ` Christophe Lyon
2019-08-30  8:54           ` Kyrill Tkachov
2019-05-15 12:43 ` [ARM/FDPIC v5 08/21] [ARM] FDPIC: Enforce local/global binding for function descriptors Christophe Lyon
2019-07-16 10:51   ` Kyrill Tkachov
2019-05-15 12:44 ` [ARM/FDPIC v5 11/21] [ARM] FDPIC: Add support to unwind FDPIC signal frame Christophe Lyon
2019-09-04 14:19   ` Kyrill Tkachov
2019-05-15 12:44 ` [ARM/FDPIC v5 12/21] [ARM] FDPIC: Restore r9 after we call __aeabi_read_tp Christophe Lyon
2019-08-29 15:40   ` Christophe Lyon
2019-08-29 15:44   ` Kyrill Tkachov
2019-05-15 12:44 ` [ARM/FDPIC v5 13/21] [ARM] FDPIC: Force LSB bit for PC in Cortex-M architecture Christophe Lyon
2019-08-29 15:37   ` Kyrill Tkachov
2019-09-05  8:30     ` Christophe Lyon
2019-09-05  8:32       ` Christophe Lyon
2019-09-05 20:56         ` Ian Lance Taylor
2019-09-05  9:03       ` Kyrill Tkachov
2019-09-09  8:58         ` Christophe Lyon
2019-05-15 12:45 ` [ARM/FDPIC v5 15/21] [ARM][testsuite] FDPIC: Adjust scan-assembler patterns Christophe Lyon
2019-07-19  8:54   ` Kyrill Tkachov
2019-05-15 12:45 ` [ARM/FDPIC v5 16/21] [ARM][testsuite] FDPIC: Skip tests that don't work in PIC mode Christophe Lyon
2019-07-19  8:56   ` Kyrill Tkachov
2019-05-15 12:45 ` [ARM/FDPIC v5 14/21] [ARM][testsuite] FDPIC: Skip unsupported tests Christophe Lyon
2019-07-19  8:52   ` Kyrill Tkachov
2019-05-15 12:46 ` [ARM/FDPIC v5 19/21] [ARM][testsuite] FDPIC: Adjust pr43698.c to avoid clash with uclibc Christophe Lyon
2019-07-19  9:00   ` Kyrill Tkachov
2019-05-15 12:46 ` [ARM/FDPIC v5 17/21] [ARM][testsuite] FDPIC: Handle *-*-uclinux* Christophe Lyon
2019-07-19  8:57   ` Kyrill Tkachov
2019-07-22 19:37     ` Mike Stump
2019-05-15 12:46 ` [ARM/FDPIC v5 18/21] [ARM][testsuite] FDPIC: Enable tests on pie_enabled targets Christophe Lyon
2019-07-19  8:59   ` Kyrill Tkachov
2019-07-22 19:50     ` Mike Stump
2019-05-15 12:47 ` [ARM/FDPIC v5 21/21] [ARM] FDPIC: Handle stack-protector combined patterns Christophe Lyon
2019-07-19  9:40   ` Kyrill Tkachov
2019-05-15 12:47 ` [ARM/FDPIC v5 20/21] [ARM][testsuite] FDPIC: Skip tests using architectures unsupported by FDPIC Christophe Lyon
2019-07-19  9:03   ` Kyrill Tkachov
2019-09-06  8:01     ` Christophe Lyon
2019-09-06  8:28       ` Kyrill Tkachov
2019-09-06  9:10         ` Christophe Lyon
2019-09-06 17:44           ` Christophe Lyon
2019-09-09  8:38             ` Christophe Lyon
2019-05-23 12:46 ` [ARM/FDPIC v5 00/21] FDPIC ABI for ARM Christophe Lyon
2019-06-04 12:57   ` Christophe Lyon
2019-06-06 12:36     ` Christophe Lyon
2019-06-17 11:42       ` Christophe Lyon
2019-07-01 12:16         ` Christophe Lyon
2019-07-08 14:28           ` Christophe Lyon
2019-07-16  9:13             ` Christophe Lyon
2019-08-29 14:54 ` Christophe Lyon
2019-08-29 16:29   ` Christophe Lyon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAKdteOa+PCQAFjk+DjQAJqaQO0ajSUkgfGcXrmyLQM0SXhy-zw@mail.gmail.com \
    --to=christophe.lyon@linaro.org \
    --cc=Szabolcs.Nagy@arm.com \
    --cc=christophe.lyon@st.com \
    --cc=dalias@libc.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=nd@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).