[U-Boot] sandbox on FreeBSD

Simon Glass sjg at chromium.org
Tue Feb 10 16:34:42 CET 2015


Hi Jeroen,

On 9 February 2015 at 16:20, Jeroen Hofstee <jeroen at myspectrum.nl> wrote:
> Hello Simon,
>
> On 02/07/15 16:10, Simon Glass wrote:
>>
>>
>>>
>>> I am not giving up, I think it is sane if a tool which adds a header and
>>> a checksum does not use linker magic.  Sandbox biggest problem is
>>> not the linking, but the fact that linux headers and std* are included,
>>> it is a different topic.
>>
>> This should be easy to fix in os.c since all the inclusions are
>> isolated to there. I'd been keen to see a patch for that. Also if you
>> want LCD support, sdl.c.
>
>
> I had a look at this and hacked my way through and linked it
> with a GNU ld (GNU Binutils) 2.25. So at least I have a binary, but
> unfortunately it doesn't work, and errors out with:
>
> Fatal error 'Can't allocate initial thread' at line 350 in file
> /usr/src/lib/libthr/thread/thr_init.c (errno = 2)
>
>
> The reason for this seems to be void _thread_init_hack(void) __attribute__
> ((constructor));
> which calls _libpthread_init -> _thr_alloc -> calloc and that calls the
> version
> in u-boots version of dl-malloc which is not initialized yet.
>
>
> Did you encounter such problems on linux as well? Or does libpthread simply
> not allocate memory before reaching main?

No I see no such problem but I can understand why it might happen.

There is a USE_DL_PREFIX in malloc.h which might fix the naming clash.
U-Boot sandbox uses mmap() to allocate memory from the OS.

It may be worth sending a patch even if you are not quite there?

I suspect we can adjust the Makefile to use U-Boot's internal malloc()
only for U-Boot and not for the libraries it uses. I've done that sort
of thing before and remember it being a little painful.

>
>
> Regards,
> Jeroen
>
>
> ldd ../u-boot-build/u-boot
> ../u-boot-build/u-boot:
> librt.so.1 => /usr/lib/librt.so.1 (0x800896000)
> libSDL-1.2.so.0 => /usr/local/lib/libSDL-1.2.so.0 (0x800a9c000)
> libthr.so.3 => /lib/libthr.so.3 (0x800d02000)
> libc.so.7 => /lib/libc.so.7 (0x800f27000)
> libm.so.5 => /lib/libm.so.5 (0x8012d0000)
> libvgl.so.6 => /usr/lib/libvgl.so.6 (0x8014f8000)
> libaa.so.1 => /usr/local/lib/libaa.so.1 (0x801701000)
> libusbhid.so.4 => /usr/lib/libusbhid.so.4 (0x801919000)
> libncurses.so.8 => /lib/libncurses.so.8 (0x801b1d000)
>

Regards,
Simon


More information about the U-Boot mailing list