This is the mail archive of the
mailing list for the binutils project.
Re: elf64lppc: ld script template
- From: Alan Modra <amodra at gmail dot com>
- To: Peter Bergner <bergner at vnet dot ibm dot com>
- Cc: Breno Leitao <brenohl at br dot ibm dot com>, binutils at sourceware dot org
- Date: Mon, 18 May 2015 00:42:49 +0930
- Subject: Re: elf64lppc: ld script template
- Authentication-results: sourceware.org; auth=none
- References: <555503A0 dot 2090500 at br dot ibm dot com> <1431637504 dot 5355 dot 49 dot camel at otta>
On Thu, May 14, 2015 at 04:05:04PM -0500, Peter Bergner wrote:
> On Thu, 2015-05-14 at 17:20 -0300, Breno Leitao wrote:
> > Hi there,
> > I am working to try to enable Erlang HIPE for ppc64le ABI, and they use a specific
> > loader script file during the build, as:
> > # ld -m elf64ppc -T hipe/elf64ppc.x ....
> > The elf64ppc.x file could be found at , and I willing to create a elf64lppc.x
> > file to specific the new ABi.
Unfortunately the git repository history doesn't go back far enough to
see why elf64ppc.x was added, but whatever the problem was, this
wasn't the correct solution.
> > That said, I am wondering if there is a template I can look at, or some file to
> > guide me on creating this new file.
> That looks like a hacked (or just old?) default linker script. If you
> want a base to start with, grab the default linker script used on a LE
> system. You can get that via:
> linux$ ld --verbose > elf64lppc.x
Copying a default linker script and adding it to some package means
you have a package that is almost guaranteed not to build, or to fail
at runtime when using some future toolchain. So don't do that.
This elf64ppc.x script looks to be a standard script from 2.15, with
the executable base address changed from 0x10000000 to 0x01800000.
Except they got that wrong, with the value assigned to
__executable_start missing a zero..
So rip out that script, and pass -Ttext-segment=0x1800000 to ld
instead, assuming you're willing to use a binutils-2.20 feature.
Even better, rip out the script, *don't* pass -Ttext-segment, and see
Australia Development Lab, IBM