[klibc] __builtin_clz in klibc

Heiko Carstens heiko.carstens at de.ibm.com
Mon Jun 26 13:05:24 PDT 2006


On Mon, Jun 26, 2006 at 12:43:28PM -0700, H. Peter Anvin wrote:
> Heiko Carstens wrote:
> >Hi,
> >I just got a bug report that klibc doesn't compile on s390:
> >  KLIBCCC usr/klibc/libgcc/__clzsi2.o
> >  KLIBCCC usr/klibc/libgcc/__clzdi2.o
> >usr/klibc/libgcc/__clzdi2.c: In function `__clzdi2':
> >usr/klibc/libgcc/__clzdi2.c:24: warning: implicit declaration of function `__builtin_clz'
> >This looks like a common problem, because __builtin_clz is available since
> >gcc 3.4, while the kernel should compile even with gcc 3.2.
> >Looks like counting the zero bits should be done differently...
> 
> That's a warning, though, and shouldn't keep anything from compiling, so if that happens there is problem elsewhere.
> 
> __clzdi2 isn't actually needed by klibc itself (it uses __clzsi2, but not __clzdi2), so simply removing __clzdi2.o from the list of modules should take care of the problme.

  KLIBCLD usr/klibc/libc.so
usr/klibc/libgcc/__clzdi2.o: In function `__clzdi2':__clzdi2.c:(.text+0x8): undefined reference to `__builtin_clz'
make[2]: *** [usr/klibc/libc.so] Error 1
make[1]: *** [_usr_klibc] Error 2
make: *** [usr] Error 2

So, how about this:

From:  Heiko Carstens <heiko.carstens at de.ibm.com>

Don't compile/link libgcc/__clzdi2.o since it uses __builtin_clz which is
only available since gcc 3.4.

Signed-off-by:  Heiko Carstens <heiko.carstens at de.ibm.com>
---

 usr/klibc/arch/arm/Makefile.inc   |    4 +---
 usr/klibc/arch/mips/Makefile.inc  |    1 -
 usr/klibc/arch/s390/Makefile.inc  |    1 -
 usr/klibc/arch/sparc/Makefile.inc |    3 +--
 4 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/usr/klibc/arch/arm/Makefile.inc b/usr/klibc/arch/arm/Makefile.inc
index 9222918..88d6c03 100644
--- a/usr/klibc/arch/arm/Makefile.inc
+++ b/usr/klibc/arch/arm/Makefile.inc
@@ -18,6 +18,4 @@ KLIBCARCHOBJS = \
 	libgcc/__udivdi3.o \
 	libgcc/__umoddi3.o \
 	libgcc/__udivmoddi4.o \
-	libgcc/__clzsi2.o \
-	libgcc/__clzdi2.o \
-
+	libgcc/__clzsi2.o
diff --git a/usr/klibc/arch/mips/Makefile.inc b/usr/klibc/arch/mips/Makefile.inc
index 311bdfc..adbfc38 100644
--- a/usr/klibc/arch/mips/Makefile.inc
+++ b/usr/klibc/arch/mips/Makefile.inc
@@ -13,7 +13,6 @@ KLIBCARCHOBJS = \
 	arch/$(KLIBCARCH)/setjmp.o \
 	arch/$(KLIBCARCH)/syscall.o \
 	libgcc/__clzsi2.o \
-	libgcc/__clzdi2.o \
 	libgcc/__ashldi3.o \
 	libgcc/__ashrdi3.o \
 	libgcc/__lshrdi3.o \
diff --git a/usr/klibc/arch/s390/Makefile.inc b/usr/klibc/arch/s390/Makefile.inc
index 7c1cb42..8a35d73 100644
--- a/usr/klibc/arch/s390/Makefile.inc
+++ b/usr/klibc/arch/s390/Makefile.inc
@@ -14,7 +14,6 @@ KLIBCARCHOBJS = \
 	arch/$(KLIBCARCHDIR)/mmap.o \
 	arch/$(KLIBCARCHDIR)/syscall.o \
 	libgcc/__clzsi2.o \
-	libgcc/__clzdi2.o \
 	libgcc/__ashldi3.o \
 	libgcc/__ashrdi3.o \
 	libgcc/__lshrdi3.o \
diff --git a/usr/klibc/arch/sparc/Makefile.inc b/usr/klibc/arch/sparc/Makefile.inc
index 208a549..7041e73 100644
--- a/usr/klibc/arch/sparc/Makefile.inc
+++ b/usr/klibc/arch/sparc/Makefile.inc
@@ -26,8 +26,7 @@ KLIBCARCHOBJS = $(m4-targets) \
 	libgcc/__udivdi3.o \
 	libgcc/__umoddi3.o \
 	libgcc/__udivmoddi4.o \
-	libgcc/__clzsi2.o \
-	libgcc/__clzdi2.o
+	libgcc/__clzsi2.o
 
 adir := $(obj)/arch/$(KLIBCARCH)
 



More information about the klibc mailing list