Hi Tom! Thanks for the quick response!
On 5/7/25 18:55, Tom Rini wrote: > On Wed, May 07, 2025 at 06:07:54AM +0000, Johannes Krottmayer wrote: > >> Since GNU binutils version 2.44, assembly functions must include >> the assembler directive .type name, %function. If not a call to >> these functions fails with the error message 'Unknown destination >> type (ARM/Thumb)' and the error message 'dangerous relocation: >> unsupported relocation' at linking. >> >> Signed-off-by: Johannes Krottmayer <johan...@krotti42.com> >> Cc: Tom Rini <tr...@konsulko.com> >> --- >> arch/arm/cpu/armv7m/start.S | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/arch/arm/cpu/armv7m/start.S b/arch/arm/cpu/armv7m/start.S >> index 0c07f2140c7..c20f01a0aed 100644 >> --- a/arch/arm/cpu/armv7m/start.S >> +++ b/arch/arm/cpu/armv7m/start.S >> @@ -12,5 +12,6 @@ reset: >> W(b) _main >> >> .globl c_runtime_cpu_setup >> +.type c_runtime_cpu_setup, %function >> c_runtime_cpu_setup: >> mov pc, lr > > Thanks for making the patch. There's an argument that this should use > the ENTRY / ENDPROC macros from <linux/linkage.h> but that also shows > that we're missing commit 5d4cae5fe2ea ("[ARM] VFP: fix section mismatch > error") from the kernel. And so I'm fine with making a TODO to clean > this up later if you don't want to embark on something a bit more > complicated here. > No problem for me to creating my simple patch. It's also not a problem for me to use the required macros (ENTRY, ENDPROC). Use some similar macros on my own projects too. I have searched for your mentioned commit from Linux, and it's okay when I try to add this too in further patches. For the correct initialization from the floating point unit I must look more precisely into the U-Boot and Linux source code. But I have a question according the ENPROC macro: include/linux/linkage.h (from U-Boot): #ifndef ENDPROC #define ENDPROC(name) \ .type name STT_FUNC ASM_NL \ END(name) #endif Especially the macro/define STT_FUNC. I have thought STT_FUNC is %function, but haven't found these in the current U-Boot master branch. Simple search with grep on the shell: " jk@workstation:~/Projects/U-Boot/src> grep -R STT_FUNC include/linux/linkage.h: .type name STT_FUNC ASM_NL \ include/elf.h:#define STT_FUNC 2 /* function */ jk@workstation:~/Projects/U-Boot/src> " Also tried a much more comfortable search with the elixir.bootlin identifier search. As you can see STT_FUNC is defined only in the ELF header. 'include/linux/linkage.h' doesn't include the ELF header. And I don't know if the value 2 for STT_FUNC is an alternative usage from the .type directive. 'include/linux/linkage.h' includes 'asm/linkage.h'. I'm still a newbie with the U-Boot build process and I think on build the machine dependent header will included (arch/arm/include/linkage.h). Correct me if I'm wrong please. Also there will be elf.h not included. Maybe the STT_FUNC will defined in build process, but shouldn't I find this in a specific Makefile with a simple search with grep? By the I could change STT_FUNC to %function, but I didn't know (not tried yet) if this has other bad effects. Thanks in advance! Kind regards, Johannes