I am using arm-none-eabi-* (7 2018-q2-update) to link with newlib-nano to use the NE10 library in a bare metal envirolment.
It looks like i am unable to be successful in compiling the code with newlib nano as i get many undefined references. I have messed up the makefile (which may look shabby) code from what it used to be for which i have been trying to link withour success.
I do not know what am I missing. It looks like calls to : malloc memmove free should be included in newlib. I am also unable to link the math functions for which i try to include libm libgcc...
My link process just fails(fails when arm-none-eabi-ld is called!) a copy of the makefile is below
An extract of errors or output log while making :
arm-none-eabi-ld -T src/linker32.ld -Map output.map -o build/kernel7.elf -static build/gpio_test_c.o build/serial_c.o build/cstart_c.o build/NE10_sample_real_fft_c.o build/interrupts_c.o build/Ne10Test_c.o build/mailbox_c.o build/start32_s.o -L. -LC:/Users/Sheroy/Desktop/RpiBareMetal/Codes -lNE10
C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_abs.c.obj): In function `ne10_abs_float_c':NE10_abs.c:(.text+0x14): undefined reference to `fabs'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_abs.c.obj): In function `ne10_abs_vec2f_c':NE10_abs.c:(.text+0x44): undefined reference to `fabs'NE10_abs.c:(.text+0x58): undefined reference to `fabs'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_abs.c.obj): In function `ne10_abs_vec3f_c':NE10_abs.c:(.text+0x8a): undefined reference to `fabs'NE10_abs.c:(.text+0x9e): undefined reference to `fabs'
NE10_fft.c:(.text+0x70): undefined reference to `cos'NE10_fft.c:(.text+0x80): undefined reference to `sin'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_fft_generate_twiddles_line_transposed_float32':NE10_fft.c:(.text+0x128): undefined reference to `cos'NE10_fft.c:(.text+0x138): undefined reference to `sin'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_fft_generate_twiddles_line_int32':NE10_fft.c:(.text+0x1e0): undefined reference to `cos'NE10_fft.c:(.text+0x1f0): undefined reference to `floor'NE10_fft.c:(.text+0x200): undefined reference to `sin'NE10_fft.c:(.text+0x210): undefined reference to `floor'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_factor.part.0':NE10_fft.c:(.text+0x2a0): undefined reference to `__aeabi_idiv'NE10_fft.c:(.text+0x31e): undefined reference to `__aeabi_idiv'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_fft_generate_twiddles_int32':NE10_fft.c:(.text+0x3a4): undefined reference to `__aeabi_idiv'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_fft_generate_twiddles_impl_float32':NE10_fft.c:(.text+0x454): undefined reference to `__aeabi_idiv'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_fft_alloc_c2c_float32_neon':NE10_fft.c:(.text+0x4b8): undefined reference to `malloc'NE10_fft.c:(.text+0x542): undefined reference to `memmove'NE10_fft.c:(.text+0x572): undefined reference to `free'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_fft_alloc_c2c_int32_neon':NE10_fft.c:(.text+0x5bc): undefined reference to `malloc'NE10_fft.c:(.text+0x63a): undefined reference to `memmove'NE10_fft.c:(.text+0x660): undefined reference to `free'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_fft_destroy_c2c_float32':NE10_fft.c:(.text+0x6b0): undefined reference to `free'C:/Users/Sheroy/Desktop/RpiBareMetal/Codes\libNE10.a(NE10_fft.c.obj): In function `ne10_fft_destroy_c2c_int32':NE10_fft.c:(.text+0x6b4): undefined reference to `free'
and a lot more undefined references...
The makefile is below:
You probably want to let gcc handle your linking:
To achieve that you should repace
$(ARMGNU)ld -T src/linker32.ld -Map output.map -o $(BUILD_DIR)/kernel7.elf $(LDOPS)
With:
$(ARMGNU)gcc $(COPS) -T src/linker32.ld -o $(BUILD_DIR)/kernel7.elf $(LDOPS)