[U-Boot] recent tools on FreeBSD

Andreas Bießmann andreas.devel at googlemail.com
Sat Feb 7 18:08:52 CET 2015


Hi Simon,

On 07.02.15 17:29, Simon Glass wrote:
> On 7 February 2015 at 09:23, Andreas Bießmann
> <andreas.devel at googlemail.com> wrote:
>> On 07.02.15 16:10, Simon Glass wrote:
>>> On 7 February 2015 at 03:04, Jeroen Hofstee <jeroen at myspectrum.nl> wrote:
>>>> On 06-02-15 22:00, Simon Glass wrote:
>>>>> On 6 February 2015 at 13:40, Andreas Bießmann
>>>>> <andreas.devel at googlemail.com> wrote:
>>>>>> On 06.02.15 20:56, Jeroen Hofstee wrote:
>>
>>>>>> Dynamic list-sections is in general a good thing. But beside the linker
>>>>>> problem here we will get another problem on darwin hosts when we want to
>>>>>> read the sections. I added a patch to linux kernel to get around [1].
>>>>>>
>>>>>> So I have another option here:
>>>>>>
>>>>>> 4) setup the lists sections in code, add the magic handling for Mach-O
>>>>>> binaries and remove the linker foo.
>>>>>
>>>>> The lower-common-denominator approach is a bit frustrating. How does
>>>>> FreeBSD compile U-Boot?
>>>>
>>>>
>>>> I guess I am missing the point here. U-boot v2015.01 builds fine
>>>> on FreeBSD and as far as I know on a mac as well. It is v2015.04-rc1
>>>> which no longer builds mkimage on FreeBSD and Darwin.
>>
>> Exactly that is the point. Before it worked to build the host tools on
>> some exotic hosts. The introduced linker generated lists breaks this.
>>
>>>>> What are you actually using that system for if
>>>>> it cannot build U-Boot?
>>>>
>>>> I am missing the point, u-boot and its tools build fine until v2015.04-rc1
>>>> on FreeBSD and a mac. And this is easily fixed by not using linker magic
>>>> for tools. (and yes sandbox likely fails to build, but I don't care that
>>>> much)
>>>
>>> How do you build U-Boot for any of the boards supported? What I mean
>>> is that if you can't handle linker scripts in FreeBSD how do you build
>>> anything beyond the 'tools' build?
>>
>> to build U-Boot for any board we use a cross toolchain, to build the
>> host tools we use the host compiler. In most cases the cross toolchain
>> is gnu/linux which comes with a linker as we know in linux.
>> But some host systems toolchain differ. *BSD with ELF as binary format
>> is not really a problem here, cause the binary format is comparable. It
>> requires just some tweaks for the used host-tools (e.g. host linker) and
>> it will work. Unfortunately Darwin uses Mach-O as binary format which
>> has some more restrictions. Especially it does not work with sections
>> the same way as ELF does. Therefore I posted the patch for
>> scripts/mod/file2alias.c in linux kernel to handle these. In days gone
>> by we used to support windows as host too, at least with mingw which
>> tries to clone a unix environment on windows. But the binary format on
>> Windows is still PE (AFAIK) ... I wonder if the MS linker can generate
>> those lists.
> 
> OK I see, so the GNU cross compilers are used on BSD, but the GNU x86
> compiler is not used for host compiling.
> 
>>
>> Please do not use the linker to generate those lists. Maybe we should
>> use the kernel approach and build the lists inside the code.
> 
> Can you point me to that please?

I added correct section handling for Mach-O binary format to the
file2alias.c [1] when they introduced dynamic sections
(ADD_TO_DEVTABLE() macro in that file) which broke compilation on darwin.

> I'm not familiar with it. 

Me too, I just fixed the build when it was broken.

> The kernel
> uses all sorts of crazy link scripts - I wonder how FreeBSD deals with
> that? 

AFAIK there is no link script for any host tool. They use it heavily for
the kernel. But again, this is compiled and linked with the gnu linux
cross tool chain.

> I suppose you can't compile Linux on FreeBSD natively?

This will not work.

Best regards

Andreas Bießmann

[1]
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/scripts/mod/file2alias.c?id=bb66fc67192bbd406fe9c22033f1bbbf3e7ec621


More information about the U-Boot mailing list