Hi Michael,
Very cool, thanks for fixing this. It now builds for me. I'll test booting a
node via the produced binary later today.
It looks like ARM32 has a separate issue with 4.8.5. I don't actually have a
use case for iPXE on ARM32, but wanted to see if it compiled.
$ make CROSS_COMPILE=arm-linux-gnu- ARCH=arm32 bin-arm32-efi/snp.efi
[BUILD] bin-arm32-efi/acpi_settings.o
In file included from include/ipxe/efi/Uefi/UefiBaseType.h:22:0,
from include/ipxe/efi/efi.h:53,
from include/ipxe/errno/efi.h:26,
from include/errno.h:109,
from core/acpi_settings.c:34:
include/ipxe/efi/Base.h:50:94: error: division by zero [-Werror=div-by-zero]
#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8
_VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
^
include/ipxe/efi/Base.h:87:1: note: in expansion of macro ‘VERIFY_SIZE_OF’
VERIFY_SIZE_OF (__VERIFY_UINT8_ENUM_SIZE, 4);
^
include/ipxe/efi/Base.h:50:49: error: variably modified
‘_VerifySizeof__VERIFY_UINT8_ENUM_SIZE’ at file scope
#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8
_VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
^
include/ipxe/efi/Base.h:87:1: note: in expansion of macro ‘VERIFY_SIZE_OF’
VERIFY_SIZE_OF (__VERIFY_UINT8_ENUM_SIZE, 4);
^
include/ipxe/efi/Base.h:50:94: error: division by zero [-Werror=div-by-zero]
#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8
_VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
^
include/ipxe/efi/Base.h:88:1: note: in expansion of macro ‘VERIFY_SIZE_OF’
VERIFY_SIZE_OF (__VERIFY_UINT16_ENUM_SIZE, 4);
^
include/ipxe/efi/Base.h:50:49: error: variably modified
‘_VerifySizeof__VERIFY_UINT16_ENUM_SIZE’ at file scope
#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8
_VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
^
include/ipxe/efi/Base.h:88:1: note: in expansion of macro ‘VERIFY_SIZE_OF’
VERIFY_SIZE_OF (__VERIFY_UINT16_ENUM_SIZE, 4);
^
cc1: all warnings being treated as errors
make: *** [bin-arm32-efi/acpi_settings.o] Error 1
A similar issue is seen compiling natively, albeit with GCC 4.8.2 on a armv7l
machine running Ubuntu 14.04.02.
[BUILD] bin-arm32-efi/acpi.o
In file included from include/ipxe/efi/Uefi/UefiBaseType.h:22:0,
from include/ipxe/efi/efi.h:53,
from include/ipxe/errno/efi.h:26,
from include/errno.h:109,
from core/acpi.c:26:
include/ipxe/efi/Base.h:50:94: error: division by zero [-Werror=div-by-zero]
#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8
_VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
^
include/ipxe/efi/Base.h:87:1: note: in expansion of macro ‘VERIFY_SIZE_OF’
VERIFY_SIZE_OF (__VERIFY_UINT8_ENUM_SIZE, 4);
^
include/ipxe/efi/Base.h:50:49: error: variably modified
‘_VerifySizeof__VERIFY_UINT8_ENUM_SIZE’ at file scope
#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8
_VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
^
include/ipxe/efi/Base.h:87:1: note: in expansion of macro ‘VERIFY_SIZE_OF’
VERIFY_SIZE_OF (__VERIFY_UINT8_ENUM_SIZE, 4);
^
include/ipxe/efi/Base.h:50:94: error: division by zero [-Werror=div-by-zero]
#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8
_VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
^
include/ipxe/efi/Base.h:88:1: note: in expansion of macro ‘VERIFY_SIZE_OF’
VERIFY_SIZE_OF (__VERIFY_UINT16_ENUM_SIZE, 4);
^
include/ipxe/efi/Base.h:50:49: error: variably modified
‘_VerifySizeof__VERIFY_UINT16_ENUM_SIZE’ at file scope
#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8
_VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))]
^
include/ipxe/efi/Base.h:88:1: note: in expansion of macro ‘VERIFY_SIZE_OF’
VERIFY_SIZE_OF (__VERIFY_UINT16_ENUM_SIZE, 4);
^
cc1: all warnings being treated as errors
make: *** [bin-arm32-efi/acpi.o] Error 1
Thanks again,
Ben
> On Jul 28, 2017, at 8:18 AM, Michael Brown <[email protected]> wrote:
>
> On 26/07/17 16:42, Allen, Benjamin S. wrote:
>> The arm64 makefile sets the -mabi=lp64 CFLAG. It appears this ABI argument
>> was added to GCC in 4.9 for AArch64. CentOS 7 / RHEL7 ship with GCC 4.8.5,
>> and don't have a reasonable packaged way to use a later GCC.
>
> I happen to have a CentOS 7 box next to me. This should now be fixed:
>
> http://git.ipxe.org/ipxe.git/commitdiff/b6fc8be
>
> http://git.ipxe.org/ipxe.git/commitdiff/1a77466
>
> Thanks,
>
> Michael
_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel