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
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to