From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shinya Kuribayashi Date: Tue, 21 Aug 2007 12:33:38 +0900 Subject: [U-Boot-Users] Build error on strcmp() In-Reply-To: <47F3F98010FF784EBEE6526EAAB078D1024F8697@tq-mailsrv.tq-net.de> References: <47F3F98010FF784EBEE6526EAAB078D1024F8697@tq-mailsrv.tq-net.de> Message-ID: <46CA5D12.7020809@necel.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Dear Martin Krause, >> common/libcommon.a(exports.o)(.text+0xdc): In function >> `jumptable_init': >> /home/skuribay/bootloader/u-boot/u-boot.git/common/exports.c:32: >> undefined reference to `strcmp' make: *** [u-boot] Error 1 >> >> We MIPS have arch-specific strcmp defined in . >> Since strcmp is inlined, we couldn't refer them by function pointer. >> The nm of lib_generic/string.o is like this: >> >> U _gp_disp >> U malloc >> 00000610 T memchr >> 00000520 T memcmp >> 00000474 T memcpy >> 000004a4 T memmove >> 00000448 T memset >> 00000000 T strcat >> 00000084 T strchr >> 00000198 T strdup >> 000000c0 T strlen >> 00000038 T strncat >> 0000015c T strnlen >> 00000270 T strpbrk >> 000000e4 T strrchr >> 00000380 T strsep >> 00000210 T strspn >> 00000550 T strstr >> 000003ec T strswab >> 000002c0 T strtok >> 00000004 C ___strtok >> >> I think all architectures which have __HAVE_ARCH_STRCMP defined will >> encounter this error. What is the proper workaround? > > Sorry, I'm no linker expert - so no idea :( You don't have to be an expert. I just wanted to show you MIPS string.o doesn't incorporate strcmp. Ok, I looked closely the other architectures' string libraries, and found *only* MIPS plays the inlined card. I also found there is good note in of i386 and ARM: > /* > * We don't do inline string functions, since the > * optimised inline asm versions are not small. > */ So we MIPS might need to change strcmp from optimized asm version into object version. Of course other inlined string funcs, too. I will post the patch later. Thanks, Shinya Kuribayashi