[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