pico-sdk
pico-sdk copied to clipboard
elf2uf2 on s390x: ERROR: Not an ELF file
Hi,
I have this CMakeLists.txt
:
cmake_minimum_required(VERSION 3.13)
include(pico_sdk_import.cmake)
project(hello_world)
pico_sdk_init()
add_executable(hello_world hello.c)
target_link_libraries(hello_world pico_stdlib)
pico_add_extra_outputs(hello_world)
and this hello-world program (yes this program is not even making use of the pico sdk but the problem is also there if we add that):
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
On s390x the build will fail like this:
$ make VERBOSE=1
[...]
/usr/bin/arm-none-eabi-objcopy -Oihex /home/josch/hello_world.elf hello_world.hex
/usr/bin/arm-none-eabi-objcopy -Obinary /home/josch/hello_world.elf hello_world.bin
/usr/bin/arm-none-eabi-objdump -h /home/josch/hello_world.elf > hello_world.dis
/usr/bin/arm-none-eabi-objdump -d /home/josch/hello_world.elf >> hello_world.dis
elf2uf2/elf2uf2 /home/josch/hello_world.elf hello_world.uf2
ERROR: Not an ELF file
make[2]: *** [CMakeFiles/hello_world.dir/build.make:812: hello_world.elf] Error 254
make[2]: *** Deleting file 'hello_world.elf'
make[2]: Leaving directory '/home/josch'
make[1]: *** [CMakeFiles/Makefile2:1491: CMakeFiles/hello_world.dir/all] Error 2
make[1]: Leaving directory '/home/josch'
make: *** [Makefile:91: all] Error 2
I added some printfs into tools/elf2uf2/main.cpp
to investigate the values of ELF_MAGIC
and eh_out.common.magic
in read_and_check_elf32_header
and got this:
ELF_MAGIC = 464c457f
eh_out.common.magic = 7f454c46
There seems to be an endian problem somewhere? The file
utility seems to think that my hello_world.elf
has the correct magic:
$ file hello_world.elf
hello_world.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, with debug_info, not stripped
Any ideas?