[ipxe-devel] 64 bit?

Michael Brown mcb30 at ipxe.org
Tue Jan 22 16:16:00 GMT 2019


On 22/01/2019 16:07, Johannes Thoma wrote:
>>  From memory: the issue in 32-bit builds is that format_decimal() in 
>> core/vsprintf.c will handle only 32-bit (signed) integers and so the 
>> HTTP range request headers cannot be constructed correctly for >2GB.
>>
>> This limitation in format_decimal() is originally intended to allow 
>> for the binary to be kept as small as possible, by avoiding the need 
>> to link in the 64-bit division code.  This is arguably obsolete nowadays.
> 
> I have prepared the patch for booting images > 2GB over http also on 32-bit
> systems, before I submit it, I would like to do further tests.
> 
> How do I run the regression tests (especially the vsprintf_test)?

The easiest way is to build the Linux userspace test suite:

   make bin-x86_64-linux/tests.linux bin-i386-linux/tests.linux

You can then run those as normal executables.  I would typically run 
them under Valgrind, e.g.:

   make bin-x86_64-linux/tests.linux bin-i386-linux/tests.linux && \
     valgrind ./bin-x86_64-linux/tests.linux && \
     valgrind ./bin-i386-linux/tests.linux

You can also build individual test executables using e.g.

   make bin-x86_64-linux/vsprintf_test.linux

The tests can run in any environment, so if you really want to then you 
can build e.g.

   make bin/tests.iso

and boot that ISO on a VM (or physical machine).

> And is there a way to compile 'everything' in order to check that my patch
> doesn't break other builds?

Yes:

   make everything

Thanks,

Michael


More information about the ipxe-devel mailing list