This is the mail archive of the
mailing list for the binutils project.
Re: gold patch committed (Was: Re: Help needed to track down bug: linking Linux kernel with gold creates unbootable kernel)
"H.J. Lu" <email@example.com> writes:
> On Fri, Apr 23, 2010 at 8:16 AM, Ian Lance Taylor <firstname.lastname@example.org> wrote:
>> "H.J. Lu" <email@example.com> writes:
>>> Program Headers:
>>> Â Type Â Â Â Â Â Offset Â Â Â Â Â Â VirtAddr Â Â Â Â Â PhysAddr
>>> Â Â Â Â Â Â Â Â ÂFileSiz Â Â Â Â Â ÂMemSiz Â Â Â Â Â Â ÂFlags ÂAlign
>>> Â LOAD Â Â Â Â Â 0x0000000000001000 0x0000000000000000 0x0000000000000000
>>> Â Â Â Â Â Â Â Â Â0x0000000000000001 0x0000000000000001 ÂR E Â Â1000
>>> Â LOAD Â Â Â Â Â 0x0000000000002000 0x0000000000004000 0x0000000000004000
>>> Â Â Â Â Â Â Â Â Â0x0000000000002001 0x0000000000002001 ÂRW Â Â 4000
>> This looks right to me.
>>> I am not sure it is a good idea to have different p_align.
>> Why not? ÂHow else can we communicate the information requested by the
>> programmer? ÂA system which cares about p_align needs to look at the
>> p_align of each PT_LOAD header.
> You can't load the first segment with 0x1000 alignment. You
> need to load the first segment with the alignment of the second
> segment. Why does gold have to make life harder for loader?
The Linux kernel doesn't look at the p_align field, nor should it.
The p_align field is clearly irrelevant when loading an executable.
The glibc dynamic linker checks that the p_align field looks
plausible, but otherwise ignores it other than for a PT_TLS segment;
that seems appropriate since ld.so is restricted to what mmap does
anyhow. In general, it's hard for me to think of why any loader on a
virtual memory system would look at the p_align field. And it's hard
for to think of any non-virtual memory system that would support ELF
style shared libraries.
So I think you are raising a purely hypothetical concern.
On the other hand the p_align field does convey information about the
sections in that particular segment, and that seems reasonable to me.