This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re[2]: ld: Not enough room for program headers
- To: nickc at redhat dot com
- Subject: Re[2]: ld: Not enough room for program headers
- From: Franco Broi <franco at robres dot com dot au>
- Date: Fri, 8 Sep 2000 10:05:05 +0800 (WST)
- Cc: franco at robres dot com dot au, hjl at lucon dot org, michal at ellpspace dot math dot ualberta dot ca, binutils at sourceware dot cygnus dot com
Nick
I tried to change the script, but ld was using an internal script. When I made
it use one of the scripts in lib/ldscripts, I got other errors about bad MRI
in OUTPUT_FORMAT or something. Even when I extracted the script it was using
(using --verbose) it would still produce an error when reading it back unchanged.
The script from ld was exactly the same as the elf64alpha.x script.
Franco
Nick Clifton <nickc@redhat.com> wrote:
> Hi Franco,
>
> : > /usr/bin/ld: avi_new: Not enough room for program headers (allocated 6, need 7)
> : >
> : > After doing a bit of research, I discovered that this is something
> : > to do with SIZEOF_HEADERS in the linker script, and Michal
> : > suggested I try some newer versions of binutils to see if the
> : > problem has been fixed.
>
> This is probably not a bug per se, but more of a problem with your
> linker script. The linker documentation (ld/ld.texinfo) has this to
> say:
>
> SIZEOF_HEADERS
> Return the size in bytes of the output file's headers.
> This is information which appears at the start of the
> output file. You can use this number when setting the
> start address of the first section, if you choose, to
> facilitate paging.
>
> not enough room for program headers
> When producing an ELF output file, if the linker script
> uses the SIZEOF_HEADERS builtin function, the linker
> must compute the number of program headers before it has
> determined all the section addresses and sizes. If the
> linker later discovers that it needs additional program
> headers, it will report an error @samp{not enough room
> for program headers}. To avoid this error, you must
> avoid using the SIZEOF_HEADERS function, or you must
> rework your linker script to avoid forcing the linker
> to use additional program headers, or you must define
> the program headers yourself using the PHDRS command.
>
> So you need to change your script to either remove the use of
> SIZEOF_HEADERS (if you do not really need it) or to add a PHDRS
> declaration.
>
> : > After trying a few version of binutils ( 2.10.0.12, 18 and 24) to
> : > no avail, I discovered that 2.9.5.0.22-6 worked. This has more to
> : > do with the version of ld I'd imagine, the latter version of
> : > binutils has ld 2.9.5, whereas all the others I tried have ld
> : > 2.10.90.
>
> It is probably a bug in the 2.9.5... release that it did not produce
> this warning.
>
> Cheers
> Nick