Port-hpcsh archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: current kernel unbootable + fix




On Sunday, April 13, 2003, at 08:17  PM, Valeriy E. Ushakov wrote:

When kernel is linked, ld issues warnings that there are no suitable
memory region for link_set_* sections and put them at 0x0.  This
happens because sys/arch/hpcsh/conf/shl-elf.x defines memory region
"ram" and explicitly places output .text and .data sections into that
region.

Yah. But link_set_* should be sorted with .text or .rodata by the linker... hm...

But link_set_* sections are not mentioned in the script and when ld
copies those sections from its input to output it doesn't consider
"ram" region as suitable for those sections.

Right, you can't explicitly mention link_set_* in the linker script, because if you do, the start-of-section/end-of-section special marker symbols go away, which breaks actually *using* the link sets :-)

I fixed the problem with adding (rwx) attributes to the "ram" section.
The resulting kernel boots fine.  I'm not sure if it's a proper fixm
though.  Can someone with more ld clue look into this?  Jason?

Hm. That solution will work. Look at sys/arch/evbarm/conf/ldscript.evbarm for another way that the problem can be solved.

Sadly, the linker script syntax doesn't deal well with these "anonymous" sections that link sets use. When I attempted to deal with this in ldd itself, my changes to make the linker scripts more friendly to these sections were soundly rejected. So, I think we're stuck with annoying work-arounds such as yours and mine.

        -- Jason R. Thorpe <thorpej%wasabisystems.com@localhost>




Home | Main Index | Thread Index | Old Index