Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Oct 2008 13:47:20 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        bms@incunabulum.net
Cc:        freebsd-embedded@freebsd.org
Subject:   Re: ELF loader problem with CFE on ASUS WL500g
Message-ID:  <20081013.134720.1079617746.imp@bsdimp.com>
In-Reply-To: <48F3A0EE.7040003@incunabulum.net>
References:  <48F39798.3010606@incunabulum.net> <20081013.125648.1239212699.imp@bsdimp.com> <48F3A0EE.7040003@incunabulum.net>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <48F3A0EE.7040003@incunabulum.net>
            Bruce M Simpson <bms@incunabulum.net> writes:
: M. Warner Losh wrote:
: > I thought you could fix this with linker script tweaks...
: >   
: 
: Not in an automated way. It'll let you set a *fixed* LMA by adding 
: AT(...) to the PHDR linker script section, but that's not very useful. 
: Trying to use a non-constant expression produces an error; and 
: LOADADDR() wants a *section*, not a *segment*.
: 
: The first thing I tried was to use the "load -addr" option in CFE; it 
: totally ignores this option as it only applies to raw images.
: 
: I tried the GNU ld MEMORY { ... } section, but it changes the VMA as 
: well as the LMA.
: 
: I seem to remember I had headaches like this when trying to build 
: FreeBSD with the MinGW toolchain to boot on an SGI Visual Workstation.

:-(

: > bummer...  It sounds a bit like we need to do the normal tricks of
: > 'early' boot loaders: turn on the mmu and then jump to . to transition
: > from PA to VA addresses...
: >
: > : It looks like objcopy's --change-section-lma option, with a negative 
: > : offset, would do what I want, however it will need to be scripted to 
: > : work on named sections.
: >
: > You might try to mock-up a test with a newer version of binutils than
: > 2.15 we're using?
: >   
: 
: I tried the attached script, which produces a BFD error:
:     BFD: kernel.rebased: section `.hash' can't be allocated in segment 3

That sucks.

: One common problem with these Broadcom based platforms is that they 
: almost always ship with CFE, and it's convenient to use the inbuilt ELF 
: loader for bootstrapping.

Correct.  I understand that...

: Unfortunately CFE comes with bugs attached, and there are usually no 
: alternative boot loaders available due to Broadcom's less than, shall we 
: say, "open" attitude towards open source. *ahem*
: 
: So yeah, it sounds like we probably need something like the ARM ELF 
: trampoline for MIPS ideally.

That's what I'm talking about.  Using CFE to boot FreeBSD kernel.
we're unlikely to be able to put the u-boot syscall features into CFE,
so we won't be able to leverage that work...

: It would probably also be relatively easy to write a small C tool with 
: libelf to do the rebasing CFE expects.

That's the other alternative...

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081013.134720.1079617746.imp>