This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: RFC: Extending --with-advance-toolchain to aarch64
- From: Tulio Magno Quites Machado Filho <tuliom at linux dot ibm dot com>
- To: Steve Ellcey <sellcey at marvell dot com>, "gcc\@gcc.gnu.org" <gcc at gcc dot gnu dot org>
- Cc:
- Date: Thu, 10 Oct 2019 15:38:23 -0300
- Subject: Re: RFC: Extending --with-advance-toolchain to aarch64
- References: <dd6757ea29019f93720d348db7b810ea3e8cbe07.camel@marvell.com>
Steve Ellcey <sellcey@marvell.com> writes:
> I have a question about building a toolchain that uses (at run time) a
> dynamic linker and system libraries and headers that are in a non-standard
> place.
>
> I just noticed the IBM --with-advance-toolchain option and I would
> like to replicate it for aarch64.
>
> Let me first describe what I do now:
>
> configure/build BINUTILS with --prefix=${X} --with-sysroot=${X}
> configure/build an initial GCC (all-gcc all-target-libgcc) with
> --prefix=${X} --with-sysroot=${X}
> configure/build GLIBC, using that GCC, with --prefix=/usr,
> followed by install with DESTDIR=${X}
Can you use --prefix=${X}?
> configure/build final GCC with --prefix=${X} --with-sysroot=${X}
>
> This all works, but if I want my executables to find the shared libraries and
> dynamic linker from ${X} when they are running, I need to compile things with:
>
> -Wl,--rpath=${X}/lib64 -Wl,--dynamic-linker=${X}/lib/ld-linux-aarch64.so.1
If you set glibc's --prefix to ${X}, I don't think you need to set --rpath too.
I have plans to work on a patch for the Advance Toolchain in order to avoid
this.
> I would like these used by default so I took some ideas from
> --with-advance-toolchain and used that to automatically add these options
> to LINK_SPEC (see attached patch). I can compile and link a program with
> this setup, but when I run the program I get:
>
> % ./x
> Inconsistency detected by ld.so: get-dynamic-info.h: 147: elf_get_dynamic_info:
> Assertion `info[DT_RPATH] == NULL' failed!
Florian already explained why glibc has this test.
But the Advance Toolchain carries the following patch:
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=9ca2648e2aa7094e022d5150281b2575f866259f
--
Tulio Magno