On 19/12/13 13:37, Chen Gang wrote: > On 12/19/2013 08:17 PM, James Hogan wrote: >> On 19/12/13 12:05, Chen Gang wrote: >>> Use objdump to get "umoddi3.S" for __umoddi3(), the original binary >>> file is "gcc-4.2.4-final/gcc/libgcc/umoddi3.o" which is generated by >>> "gcc-4.2.4/gcc/libgcc2.c". >>> >>> The relate error with allmodconfig: >>> >>> MODPOST 2909 modules >>> ERROR: "__umoddi3" [drivers/target/target_core_mod.ko] undefined! >> >> _umoddi3 is a 64bit division, which should be using the proper division >> functions provided by the kernel in <linux/math64.h>. >> >> It needs fixing wherever it comes from in drivers/target/target_core_mod.ko. >> > > After disassemble target_core_mod.ko, for me, the compiler will use > ___umoddi3 for '%' operator and use ___udivsi3 for '/' operator. Yeh, % is in this case remainder from a 64bit division, for which the standard division functions in <linux/math64.h> should be used instead. > If what I guess is correct, we need use/copy the "system library" which > compiler provides, so just use its ".o" file is OK (just like another > "arch/metag/lib/*.S" have done). No, I believe there shouldn't be any use of the C 64bit division/modulo operations in generic kernel code in the first place, so like I said before the code in question should be fixed to use the proper functions in <linux/math64.h>. Cheers James -- To unsubscribe from this list: send the line "unsubscribe linux-metag" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html