[U-Boot] recent tools on FreeBSD

Simon Glass sjg at chromium.org
Sat Feb 7 18:19:31 CET 2015


Hi Andreas,

On 7 February 2015 at 10:08, Andreas Bießmann
<andreas.devel at googlemail.com> wrote:
> 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.

So are you saying that we need to write a tool which converts the ELF
sections in the u-boot ELF into C code which then gets compiled and
put into a final u-boot ELF? And if we did that then sandbox would
work?

BTW I never did have any success getting a dev environment up on a
Mac. It took hours to download and install things and then I can't
remember what went wrong but it was awful. This was about 2 years ago
- maybe things have got easier? I'm happy to fiddle with this sort of
thing but my pain tolerance isn't what it was/

>
>> 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.

Ah OK. And compiling U-Boot sandbox with a gnu linux cross tool chain
(with x86 target) on BSD is not an option? I suppose it would not run.

>
>> 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

Regards,
Simon


More information about the U-Boot mailing list