This is the mail archive of the
mailing list for the binutils project.
Re: PowerPC EABI segment alignment
- From: Michael Eager <eager at eagercon dot com>
- To: Daniel Jacobowitz <drow at false dot org>
- Cc: binutils at sourceware dot org
- Date: Mon, 03 Mar 2008 18:56:49 -0800
- Subject: Re: PowerPC EABI segment alignment
- References: <47C6FB7F.firstname.lastname@example.org> <20080229141258.GA4659@caradoc.them.org>
Daniel Jacobowitz wrote:
On Thu, Feb 28, 2008 at 10:20:47AM -0800, Michael Eager wrote:
The PPC SVR4 ABI specifies that segments are aligned on 64K
(0x10000) boundaries. [PPC SVR4 ABI, pg. 5-1].
The PPC EABI says that there are no program loading requirements.
[PPC EABI, pg. 19]
Binutils follows the SVR4 specification, even when built with
--target=powerpc-eabi and sets segment alignment as 0x10000.
(Except for QNX, where the alignment is 0x1000). This causes problems
with non-hosted PPC boards with limited memory: the desired alignment
is 8 bytes, to avoid memory holes.
I patch binutils to set ELF_MAXPAGESIZE=8 to make this happen.
How to other folks address this problem?
Maybe you want -N, for building non-paged binaries. The powerpc-eabi
toolchain can be used with a variety of environments, and some of them
do have memory protection and dynamic paging; for those, you'll need
a page size that the hardware supports.
-N makes read-only sections writable which leads them to
being merged with writable sections. That's undesirable
when you want to put R/O data in ROM and R/W in RAM.
Text segment is still aligned on a 64K boundary, IIRC.
Powerpc-eabi may be used in different environments, but I
don't see how it works correctly in the EABI environment.
Binutils with --target=powerpc-eabi is built the same as
--target=powerpc-svr4. Shouldn't these be different configurations?
No one uses the powerpc-svr4 target that I'm aware of.
There are several targets which are built the same: powerpc-elf,
powerpc-eabi, powerpc-sysv, powerpc-netbsd, powerpc-openbsd, powerpc-kaos.
I can guess that there are similarities between SysV, NetBSD, OpenBSD,
(don't know kaos) but EABI is different, at least in terms of segment
Michael Eager email@example.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077