summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in24
-rw-r--r--Makerules166
-rwxr-xr-xextra/scripts/create_makefiles.sh2
-rw-r--r--libc/string/i386/string.c329
-rw-r--r--libc/string/powerpc/string.c214
-rw-r--r--libc/sysdeps/linux/alpha/sys/acct.h66
-rw-r--r--libintl/Makefile.in5
7 files changed, 126 insertions, 680 deletions
diff --git a/Makefile.in b/Makefile.in
index 652694f22..aa4a76015 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -12,10 +12,6 @@ noconfig_targets := menuconfig config oldconfig randconfig \
defconfig allyesconfig allnoconfig clean distclean \
release dist tags
-TOPDIR=./
-
-top_srcdir=$(TOPDIR)
-top_builddir=./
include $(top_builddir)Rules.mak
# need to have libc.so built, before we can build the others
@@ -134,11 +130,11 @@ endif
pre_subdirs: $(patsubst %, _pre_dir_%, $(PRE_DIRS))
$(patsubst %, _pre_dir_%, $(PRE_DIRS)): pregen
- $(MAKE) -C $(patsubst _pre_dir_%, %, $@)
+ @$(MAKE) -C $(patsubst _pre_dir_%, %, $@)
subdirs: $(patsubst %, _dir_%, $(DIRS))
$(patsubst %, _dir_%, $(DIRS)): pre_subdirs
- $(MAKE) -C $(patsubst _dir_%, %, $@)
+ @$(MAKE) -C $(patsubst _dir_%, %, $@)
install: install_runtime install_dev finished2
@@ -222,10 +218,9 @@ ifneq ($(UCLIBC_HAS_THREADS),y)
$(RM) $(PREFIX)$(DEVEL_PREFIX)include/semaphore.h
$(RM) $(PREFIX)$(DEVEL_PREFIX)include/bits/*thread*.h
endif
- -@for i in `find $(PREFIX)$(DEVEL_PREFIX) -type d` ; do \
+ -@for i in `find $(PREFIX)$(DEVEL_PREFIX) -type d` ; do \
chmod 755 $$i; chmod 644 $$i/*.h > /dev/null 2>&1; \
done
- -find $(PREFIX)$(DEVEL_PREFIX) -name .svn | xargs $(RM) -r
-chown -R `id | sed 's/^uid=\([0-9]*\).*gid=\([0-9]*\).*$$/\1:\2/'` $(PREFIX)$(DEVEL_PREFIX)
# Installs development library links.
@@ -249,6 +244,7 @@ ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)libthread_db.so.1 \
$(PREFIX)$(DEVEL_PREFIX)lib/libthread_db.so
endif
+ifeq ($(DOPIC),y)
# # If we build shared libraries then the static libs are PIC...
# # Make _pic.a symlinks to make mklibs.py and similar tools happy.
if [ -d lib ] ; then \
@@ -258,6 +254,7 @@ endif
done ; \
fi
endif
+endif
# Installs run-time libraries
install_runtime:
@@ -290,6 +287,12 @@ else # ifeq ($(HAVE_DOT_CONFIG),y)
all: menuconfig
+headers:
+ @echo "Need to make a config file first, run: make menuconfig"
+ @false
+
+endif # ifeq ($(HAVE_DOT_CONFIG),y)
+
# configuration
# ---------------------------------------------------------------------------
extra/config/conf:
@@ -344,6 +347,7 @@ clean:
@$(RM) -r lib include/bits
$(RM) lib*/*.a ldso/*/*.a libpthread/*/*.a
$(RM) libc/misc/internals/interp.c
+ $(RM) libc/stdio/*64.c
$(RM) include/fpu_control.h include/dl-osinfo.h
$(MAKE) -C extra/locale clean
$(MAKE) -C ldso headers_clean-y
@@ -376,10 +380,6 @@ dist release:
tar czf ../uClibc-$(VERSION).tar.gz -C .. uClibc-$(VERSION)
du -b ../uClibc-$(VERSION).tar.gz
-endif # ifeq ($(HAVE_DOT_CONFIG),y)
-
-include $(top_srcdir)Makerules
-
check:
$(MAKE) -C test
diff --git a/Makerules b/Makerules
index 5d95af9ce..144140a1a 100644
--- a/Makerules
+++ b/Makerules
@@ -16,28 +16,85 @@ endif
lib-a-y: $(lib-a-y)
lib-so-y: $(lib-so-y)
-compile.c=$(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $@)) $(CFLAGS-$(notdir $<))
-compile.S=$(compile.c) $(S_CPPFLAGS) $(ASFLAGS) $(ARCH_ASFLAGS) $(ASFLAGS-$(suffix $@)) $(ASFLAGS-$(notdir $@)) $(ASFLAGS-$(notdir $<))
-compile.m=$(compile.c) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
-
-compile-m=$(CC) $^ -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $@)) $(CFLAGS-$(notdir $<)) $(CFLAGS-multi-y)
+ifneq ($(findstring s,$(MAKEFLAGS)),)
+DISP := sil
+Q := @
+else
+ifneq ($(V)$(VERBOSE),)
+DISP := ver
+Q :=
+else
+DISP := pur
+Q := @
+endif
+endif
+
+show_objs = $(subst ../,,$@)
+
+pur_disp_compile.c = echo " "CC $(show_objs)
+pur_disp_compile.S = echo " "AS $(show_objs)
+pur_disp_compile.m = $(pur_disp_compile.c)
+pur_disp_compile-m = echo " "CC-m $(show_objs)
+pur_disp_strip = echo " "STRIP $(STRIP_FLAGS)
+pur_disp_ar = echo " "AR $(ARFLAGS) $@
+pur_disp_ld = echo " "LD $($(LIB_NAME)_FULL_NAME)
+
+sil_disp_compile.c = true
+sil_disp_compile.S = true
+sil_disp_compile.m = true
+sil_disp_compile-m = true
+sil_disp_strip = true
+sil_disp_ar = true
+sil_disp_ld = true
+
+ver_disp_compile.c = echo $(cmd_compile.c)
+ver_disp_compile.S = echo $(cmd_compile.S)
+ver_disp_compile.m = echo $(cmd_compile.m)
+ver_disp_compile-m = echo $(cmd_compile-m)
+ver_disp_strip = echo $(cmd_strip)
+ver_disp_ar = echo $(cmd_ar)
+ver_disp_ld =
+
+disp_compile.c = $($(DISP)_disp_compile.c)
+disp_compile.S = $($(DISP)_disp_compile.S)
+disp_compile.m = $($(DISP)_disp_compile.m)
+disp_compile-m = $($(DISP)_disp_compile-m)
+disp_strip = $($(DISP)_disp_strip)
+disp_ar = $($(DISP)_disp_ar)
+disp_ld = $($(DISP)_disp_ld)
+
+cmd_compile.c = $(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $@)) $(CFLAGS-$(notdir $<))
+cmd_compile.S = $(cmd_compile.c) $(S_CPPFLAGS) $(ASFLAGS) $(ARCH_ASFLAGS) $(ASFLAGS-$(suffix $@)) $(ASFLAGS-$(notdir $@)) $(ASFLAGS-$(notdir $<))
+cmd_compile.m = $(cmd_compile.c) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
+cmd_compile-m = $(CC) $^ -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ARCH_CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $@)) $(CFLAGS-$(notdir $<)) $(CFLAGS-multi-y)
+cmd_strip = $(STRIPTOOL) $(STRIP_FLAGS) $^
+cmd_ar = $(AR) $(ARFLAGS) $@ $^
+
+compile.c = @$(disp_compile.c) ; $(cmd_compile.c)
+compile.E = $(cmd_compile.c:-c=-E)
+compile.S = @$(disp_compile.S) ; $(cmd_compile.S)
+compile.m = @$(disp_compile.m) ; $(cmd_compile.m)
+compile-m = @$(disp_compile-m) ; $(cmd_compile-m)
+do_strip = @$(disp_strip) ; $(cmd_strip)
+do_ar = @$(disp_ar) ; $(cmd_ar)
CFLAGS-.os+=$(PICFLAG)
CFLAGS-.oS+=$(PICFLAG) -DSHARED
-%.o %.os: %.c
- $(compile.c)
-
-%.oS: %.c
- $(compile.c)
-
-%.o %.os: %.S
- $(compile.S)
+%.o: %.c ; $(compile.c)
+%.os: %.c ; $(compile.c)
+%.oS: %.c ; $(compile.c)
+%.o: %.S ; $(compile.S)
+%.os: %.S ; $(compile.S)
+%.o: %.s ; $(compile.S)
+%.os: %.s ; $(compile.S)
+%.E: %.c ; $(compile.E)
+%.E: %.S ; $(compile.E)
#ifeq ($(HAVE_ELF),y)
CRT=crt1
#else
-#CRT=crt0.o
+#CRT=crt0
#endif
ifeq ($(HAVE_SHARED),y)
@@ -47,29 +104,31 @@ CRTS=$(top_builddir)lib/$(CRT).o
endif
$(top_builddir)lib/$(CRT).o: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(CRT).S
- $(INSTALL) -d $(dir $@)
+ $(Q)$(INSTALL) -d $(dir $@)
$(compile.S) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
- $(STRIPTOOL) -x -R .note -R .comment $@
+ @$(disp_strip) $(show_objs)
+ $(Q)$(STRIPTOOL) -x -R .note -R .comment $@
$(top_builddir)lib/S$(CRT).o: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(CRT).S
- $(INSTALL) -d $(dir $@)
+ $(Q)$(INSTALL) -d $(dir $@)
$(compile.S) $(PIEFLAG) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
- $(STRIPTOOL) -x -R .note -R .comment $@
+ @$(disp_strip) $(show_objs)
+ $(Q)$(STRIPTOOL) -x -R .note -R .comment $@
CTOR_TARGETS=$(top_builddir)lib/crti.o $(top_builddir)lib/crtn.o
ifeq ($(UCLIBC_CTOR_DTOR),y)
$(top_builddir)lib/crti.o: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/crti.S
- $(INSTALL) -d $(dir $@)
+ $(Q)$(INSTALL) -d $(dir $@)
$(compile.S) $(PICFLAG) $(SSP_DISABLE_FLAGS)
$(top_builddir)lib/crtn.o: $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/crtn.S
- $(INSTALL) -d $(dir $@)
+ $(Q)$(INSTALL) -d $(dir $@)
$(compile.S) $(PICFLAG) $(SSP_DISABLE_FLAGS)
else
$(CTOR_TARGETS):
- $(INSTALL) -d $(top_builddir)lib
- $(AR) $(ARFLAGS) $@
+ $(Q)$(INSTALL) -d $(top_builddir)lib
+ $(do_ar)
endif
crt-y: $(crt-y)
@@ -82,8 +141,8 @@ objclean-y: $(objclean-y)
headers_clean-y: $(headers_clean-y)
$(top_builddir)lib/$(NONSHARED_LIBNAME): $(libc-nonshared-y)
- $(INSTALL) -d $(dir $@)
- $(AR) $(ARFLAGS) $@ $^
+ $(Q)$(INSTALL) -d $(dir $@)
+ $(do_ar)
.PHONY: dummy create
clean: objclean-y headers_clean-y
@@ -126,25 +185,26 @@ endif
else
$(top_builddir)lib/$(LIB_NAME).so: $($(LIB_NAME)_OUT)/$(LIB_NAME)_so.a $(interp)
endif
- $(INSTALL) -d $(dir $@)
- $(RM) $@ $@.$(MAJOR_VERSION) $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME)
- $(LD) $(LDFLAGS) $(EXTRA_LINK_OPTS) -soname=$(notdir $@).$(MAJOR_VERSION) \
+ $(Q)$(INSTALL) -d $(dir $@)
+ $(Q)$(RM) $@ $@.$(MAJOR_VERSION) $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME)
+ @$(disp_ld)
+ $(Q)$(LD) $(LDFLAGS) $(EXTRA_LINK_OPTS) -soname=$(notdir $@).$(MAJOR_VERSION) \
-o $(top_builddir)lib/$($(LIB_NAME)_FULL_NAME) $(SHARED_START_FILES) \
--whole-archive $(firstword $^) --no-whole-archive \
$(EXTRA_LINK_LIBS) $(SHARED_END_FILES)
- $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@.$(MAJOR_VERSION)
+ $(Q)$(LN) -sf $($(LIB_NAME)_FULL_NAME) $@.$(MAJOR_VERSION)
ifneq ($(strip $(LIB_NAME)),libc)
ifneq ($(strip $(LIB_NAME)),ld-uClibc)
- $(LN) -sf $($(LIB_NAME)_FULL_NAME) $@
+ $(Q)$(LN) -sf $($(LIB_NAME)_FULL_NAME) $@
endif
else
- echo "/* GNU ld script" > $@
- echo " * Use the shared library, but some functions are only in" >> $@
- echo " * the static library, so try that secondarily. */" >> $@
+ $(Q)echo "/* GNU ld script" > $@
+ $(Q)echo " * Use the shared library, but some functions are only in" >> $@
+ $(Q)echo " * the static library, so try that secondarily. */" >> $@
ifeq ($(COMPAT_ATEXIT),y)
- echo "GROUP ( $(NONSHARED_LIBNAME) $(SHARED_MAJORNAME) $(ASNEEDED) )" >> $@
+ $(Q)echo "GROUP ( $(NONSHARED_LIBNAME) $(SHARED_MAJORNAME) $(ASNEEDED) )" >> $@
else
- echo "GROUP ( $(SHARED_MAJORNAME) $(NONSHARED_LIBNAME) $(ASNEEDED) )" >> $@
+ $(Q)echo "GROUP ( $(SHARED_MAJORNAME) $(NONSHARED_LIBNAME) $(ASNEEDED) )" >> $@
endif
endif
@@ -158,46 +218,38 @@ libc_m.os: $(libc-multi-y)
ifneq ($(DOMULTI),n)
$($(LIB_NAME)_OUT)/$(LIB_NAME)_so.a: $($(LIB_NAME)_OUT)/$(LIB_NAME)_m.os $($(LIB_NAME)-nomulti-y:.o=.os) $($(LIB_NAME)-shared-y)
- $(RM) $@
-ifneq ($(strip $(STRIP_FLAGS)),)
- $(STRIPTOOL) $(STRIP_FLAGS) $^
-else
- $(STRIPTOOL) -x -R .note -R .comment $^
-endif
- $(AR) $(ARFLAGS) $@ $^
+ $(Q)$(RM) $@
+ $(do_strip)
+ $(do_ar)
ifeq ($(DOPIC),y)
$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)_OUT)/$(LIB_NAME)_m.os $($(LIB_NAME)-nomulti-y:.o=.os) $($(LIB_NAME)-static-y:.o=.os)
else
$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)_OUT)/$(LIB_NAME)_m.o $($(LIB_NAME)-nomulti-y) $($(LIB_NAME)-static-y)
endif
- $(INSTALL) -d $(dir $@)
- $(RM) $@
- $(STRIPTOOL) -x -R .note -R .comment $^
- $(AR) $(ARFLAGS) $@ $^
+ $(Q)$(INSTALL) -d $(dir $@)
+ $(Q)$(RM) $@
+ $(do_strip)
+ $(do_ar)
else # DOMULTI
$($(LIB_NAME)_OUT)/$(LIB_NAME)_so.a: $($(LIB_NAME)-SHARED_OBJS)
- $(RM) $@
-ifneq ($(strip $(STRIP_FLAGS)),)
- $(STRIPTOOL) $(STRIP_FLAGS) $^
-else
- $(STRIPTOOL) -x -R .note -R .comment $^
-endif
- $(AR) $(ARFLAGS) $@ $^
+ $(Q)$(RM) $@
+ $(do_strip)
+ $(do_ar)
ifeq ($(DOPIC),y)
$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)-ARCHIVE_OBJS:.o=.os)
else
$(top_builddir)lib/$(LIB_NAME).a: $($(LIB_NAME)-ARCHIVE_OBJS)
endif
- $(INSTALL) -d $(dir $@)
- $(RM) $@
- $(STRIPTOOL) -x -R .note -R .comment $^
- $(AR) $(ARFLAGS) $@ $^
+ $(Q)$(INSTALL) -d $(dir $@)
+ $(Q)$(RM) $@
+ $(do_strip)
+ $(do_ar)
endif # DOMULTI
$(LIB_NAME)_clean:
- rm -f $($(LIB_NAME)_OUT)/*.{o,os,a}
+ $(RM) $($(LIB_NAME)_OUT)/*.{o,os,a}
diff --git a/extra/scripts/create_makefiles.sh b/extra/scripts/create_makefiles.sh
index ee03ec587..087028673 100755
--- a/extra/scripts/create_makefiles.sh
+++ b/extra/scripts/create_makefiles.sh
@@ -20,7 +20,7 @@ fi
RM="rm -f"
${RM} Makefile
-${USE_CMD} Makefile.in Makefile
+${USE_CMD} extra/scripts/Makefile.libs.lvl0 Makefile
#for x in ${DIRS} ; do
# find ./${x} -name Makefile -exec rm -f {} \;
diff --git a/libc/string/i386/string.c b/libc/string/i386/string.c
deleted file mode 100644
index 8a7f1a89b..000000000
--- a/libc/string/i386/string.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * This string-include defines all string functions as inline
- * functions. Use gcc. It also assumes ds=es=data space, this should be
- * normal. Most of the string-functions are rather heavily hand-optimized,
- * see especially strtok,strstr,str[c]spn. They should work, but are not
- * very easy to understand. Everything is done entirely within the register
- * set, making the functions fast and clean. String instructions have been
- * used through-out, making for "slightly" unclear code :-)
- *
- * NO Copyright (C) 1991, 1992 Linus Torvalds,
- * consider these trivial functions to be PD.
- *
- * Modified for uClibc by Erik Andersen <andersen@codepoet.org>
- * These make no attempt to use nifty things like mmx/3dnow/etc.
- * These are not inline, and will therefore not be as fast as
- * modifying the headers to use inlines (and cannot therefore
- * do tricky things when dealing with const memory). But they
- * should (I hope!) be faster than their generic equivalents....
- *
- * More importantly, these should provide a good example for
- * others to follow when adding arch specific optimizations.
- * -Erik
- */
-
-#define _STDIO_UTILITY
-#define _GNU_SOURCE
-#include <string.h>
-#include <locale.h> /* for __LOCALE_C_ONLY */
-
-#ifdef L_strcpy
-char * strcpy(char * dest, const char * src)
-{
- int d0, d1, d2;
- __asm__ __volatile__(
- "1:\tlodsb\n\t"
- "stosb\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b"
- : "=&S" (d0), "=&D" (d1), "=&a" (d2)
- :"0" (src),"1" (dest) : "memory");
- return dest;
-}
-#endif
-
-
-#ifdef L_strncpy
-char * strncpy(char * dest, const char * src, size_t count)
-{
- int d0, d1, d2, d3;
- __asm__ __volatile__(
- "incl %2\n"
- "1:\n"
- "decl %2\n"
- "jz 2f\n"
- "lodsb\n\t"
- "stosb\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "decl %2\n"
- "rep\n\t"
- "stosb\n"
- "2:"
- : "=&S" (d0), "=&D" (d1), "=&c" (d2), "=&a" (d3)
- :"0" (src),"1" (dest),"2" (count) : "memory");
- return dest;
-}
-#endif
-
-
-#ifdef L_strcat
-char *strcat(char * dest, const char * src)
-{
- int d0, d1, d2, d3;
- __asm__ __volatile__(
- "repne\n\t"
- "scasb\n\t"
- "decl %1\n"
- "1:\tlodsb\n\t"
- "stosb\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b"
- : "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3)
- : "0" (src), "1" (dest), "2" (0), "3" (0xffffffff):"memory");
- return dest;
-}
-#endif
-
-
-#ifdef L_strncat
-char *strncat(char * dest,
- const char * src, size_t count)
-{
- int d0, d1, d2, d3;
- __asm__ __volatile__(
- "repne\n\t"
- "scasb\n\t"
- "decl %1\n\t"
- "movl %8,%3\n"
- "incl %3\n"
- "1:\tdecl %3\n\t"
- "jz 2f\n"
- "lodsb\n\t"
- "stosb\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n"
- "jmp 3f\n"
- "2:\txorl %2,%2\n\t"
- "stosb\n"
- "3:"
- : "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3)
- : "0" (src),"1" (dest),"2" (0),"3" (0xffffffff), "g" (count)
- : "memory");
- return dest;
-}
-#endif
-
-
-#ifdef L_strcmp
-int strcmp(const char *cs, const char *ct)
-{
- int d0, d1;
- register int __res;
- __asm__ __volatile__(
- "1:\tlodsb\n\t"
- "scasb\n\t"
- "jne 2f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "xorl %%eax,%%eax\n\t"
- "jmp 3f\n"
- "2:\tsbbl %%eax,%%eax\n\t"
- "orb $1,%%al\n"
- "3:"
- :"=a" (__res), "=&S" (d0), "=&D" (d1)
- :"1" (cs),"2" (ct));
- return __res;
-}
-#ifdef __LOCALE_C_ONLY
-weak_alias(strcmp,strcoll);
-#endif /* __LOCALE_C_ONLY */
-#endif
-
-
-#ifdef L_strncmp
-int strncmp(const char *cs, const char *ct, size_t count)
-{
- register int __res;
- int d0, d1, d2;
- __asm__ __volatile__(
- "incl %3\n"
- "1:\tdecl %3\n\t"
- "jz 2f\n"
- "lodsb\n\t"
- "scasb\n\t"
- "jne 3f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n"
- "2:\txorl %%eax,%%eax\n\t"
- "jmp 4f\n"
- "3:\tsbbl %%eax,%%eax\n\t"
- "orb $1,%%al\n"
- "4:"
- :"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2)
- :"1" (cs),"2" (ct),"3" (count));
- return __res;
-}
-#endif
-
-
-#ifdef L_strchr
-char * strchr(const char *s, int c)
-{
- int d0;
- register char * __res;
- __asm__ __volatile__(
- "movb %%al,%%ah\n"
- "1:\tlodsb\n\t"
- "cmpb %%ah,%%al\n\t"
- "je 2f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "movl $1,%1\n"
- "2:\tmovl %1,%0\n\t"
- "decl %0"
- :"=a" (__res), "=&S" (d0) : "1" (s),"0" (c));
- return __res;
-}
-weak_alias(strchr,index);
-#endif
-
-
-#ifdef L_strrchr
-char *strrchr(const char *s, int c)
-{
- int d0, d1;
- register char * __res;
- __asm__ __volatile__(
- "movb %%al,%%ah\n"
- "1:\tlodsb\n\t"
- "cmpb %%ah,%%al\n\t"
- "jne 2f\n\t"
- "leal -1(%%esi),%0\n"
- "2:\ttestb %%al,%%al\n\t"
- "jne 1b"
- :"=g" (__res), "=&S" (d0), "=&a" (d1) :"0" (0),"1" (s),"2" (c));
- return __res;
-}
-weak_alias(strrchr,rindex);
-#endif
-
-
-
-#ifdef L_strlen
-size_t strlen(const char *s)
-{
- int d0;
- register int __res;
- __asm__ __volatile__(
- "repne\n\t"
- "scasb\n\t"
- "notl %0\n\t"
- "decl %0"
- :"=c" (__res), "=&D" (d0) :"1" (s),"a" (0), "0" (0xffffffff));
- return __res;
-}
-#endif
-
-
-#ifdef L_strnlen
-size_t strnlen(const char *s, size_t count)
-{
- int d0;
- register int __res;
- __asm__ __volatile__(
- "movl %2,%0\n\t"
- "incl %1\n"
- "jmp 2f\n"
- "1:\tcmpb $0,(%0)\n\t"
- "je 3f\n\t"
- "incl %0\n"
- "2:\tdecl %1\n\t"
- "jne 1b\n"
- "3:\tsubl %2,%0"
- :"=a" (__res), "=&d" (d0)
- :"c" (s),"1" (count));
- return __res;
-}
-#endif
-
-
-#ifdef L_memcpy
-void *memcpy(void * to, const void * from, size_t n)
-{
- int d0, d1, d2;
- __asm__ __volatile__(
- "rep ; movsl\n\t"
- "testb $2,%b4\n\t"
- "je 1f\n\t"
- "movsw\n"
- "1:\ttestb $1,%b4\n\t"
- "je 2f\n\t"
- "movsb\n"
- "2:"
- : "=&c" (d0), "=&D" (d1), "=&S" (d2)
- :"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
- : "memory");
- return (to);
-}
-#endif
-
-
-#ifdef L_memmove
-void *memmove(void *dest, const void *src, size_t n)
-{
- int d0, d1, d2;
- if (dest<src)
- __asm__ __volatile__(
- "rep\n\t"
- "movsb"
- : "=&c" (d0), "=&S" (d1), "=&D" (d2)
- :"0" (n),"1" (src),"2" (dest)
- : "memory");
- else
- __asm__ __volatile__(
- "std\n\t"
- "rep\n\t"
- "movsb\n\t"
- "cld"
- : "=&c" (d0), "=&S" (d1), "=&D" (d2)
- :"0" (n),
- "1" (n-1+(const char *)src),
- "2" (n-1+(char *)dest)
- :"memory");
- return dest;
-}
-#endif
-
-#ifdef L_memchr
-void *memchr(const void *cs, int c, size_t count)
-{
- int d0;
- register void * __res;
- if (!count)
- return NULL;
- __asm__ __volatile__(
- "repne\n\t"
- "scasb\n\t"
- "je 1f\n\t"
- "movl $1,%0\n"
- "1:\tdecl %0"
- :"=D" (__res), "=&c" (d0) : "a" (c),"0" (cs),"1" (count));
- return __res;
-}
-#endif
-
-#ifdef L_memset
-void *memset(void *s, int c, size_t count)
-{
- int d0, d1;
- __asm__ __volatile__(
- "rep\n\t"
- "stosb"
- : "=&c" (d0), "=&D" (d1)
- :"a" (c),"1" (s),"0" (count)
- :"memory");
- return s;
-}
-#endif
-
diff --git a/libc/string/powerpc/string.c b/libc/string/powerpc/string.c
deleted file mode 100644
index acd5d0144..000000000
--- a/libc/string/powerpc/string.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Library General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option) any
- * later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
- * details.
- */
-
-/* These are carefully optimized mem*() functions for PPC written in C.
- * Don't muck around with these function without checking the generated
- * assmbler code.
- * It is possible to optimize these significantly more by using specific
- * data cache instructions(mainly dcbz). However that requires knownledge
- * about the CPU's cache line size.
- *
- * BUG ALERT!
- * The cache instructions on MPC8xx CPU's are buggy(they don't update
- * the DAR register when causing a DTLB Miss/Error) and cannot be
- * used on 8xx CPU's without a kernel patch to work around this
- * problem.
- *
- * Copyright (C) 2004 Joakim Tjernlund
- */
-
-#define _STDIO_UTILITY
-#define _GNU_SOURCE
-#include <string.h>
-#include <locale.h> /* for __LOCALE_C_ONLY */
-
-#ifdef L_memcpy
-void attribute_hidden *__memcpy(void *to, const void *from, size_t n)
-/* PPC can do pre increment and load/store, but not post increment and load/store.
- Therefore use *++ptr instead of *ptr++. */
-{
- unsigned long rem, chunks, tmp1, tmp2;
- unsigned char *tmp_to;
- unsigned char *tmp_from = (unsigned char *)from;
-
- chunks = n / 8;
- tmp_from -= 4;
- tmp_to = to - 4;
- if (!chunks)
- goto lessthan8;
- rem = (unsigned long )tmp_to % 4;
- if (rem)
- goto align;
- copy_chunks:
- do {
- /* make gcc to load all data, then store it */
- tmp1 = *(unsigned long *)(tmp_from+4);
- tmp_from += 8;
- tmp2 = *(unsigned long *)tmp_from;
- *(unsigned long *)(tmp_to+4) = tmp1;
- tmp_to += 8;
- *(unsigned long *)tmp_to = tmp2;
- } while (--chunks);
- lessthan8:
- n = n % 8;
- if (n >= 4) {
- *(unsigned long *)(tmp_to+4) = *(unsigned long *)(tmp_from+4);
- tmp_from += 4;
- tmp_to += 4;
- n = n-4;
- }
- if (!n ) return to;
- tmp_from += 3;
- tmp_to += 3;
- do {
- *++tmp_to = *++tmp_from;
- } while (--n);
-
- return to;
- align:
- rem = 4 - rem;
- n = n - rem;
- do {
- *(tmp_to+4) = *(tmp_from+4);
- ++tmp_from;
- ++tmp_to;
- } while (--rem);
- chunks = n / 8;
- if (chunks)
- goto copy_chunks;
- goto lessthan8;
-}
-strong_alias(__memcpy, memcpy);
-#endif
-
-#ifdef L_memmove
-void attribute_hidden *__memmove(void *to, const void *from, size_t n)
-{
- unsigned long rem, chunks, tmp1, tmp2;
- unsigned char *tmp_to;
- unsigned char *tmp_from = (unsigned char *)from;
-
- if (tmp_from >= (unsigned char *)to)
- return memcpy(to, from, n);
- chunks = n / 8;
- tmp_from += n;
- tmp_to = to + n;
- if (!chunks)
- goto lessthan8;
- rem = (unsigned long )tmp_to % 4;
- if (rem)
- goto align;
- copy_chunks:
- do {
- /* make gcc to load all data, then store it */
- tmp1 = *(unsigned long *)(tmp_from-4);
- tmp_from -= 8;
- tmp2 = *(unsigned long *)tmp_from;
- *(unsigned long *)(tmp_to-4) = tmp1;
- tmp_to -= 8;
- *(unsigned long *)tmp_to = tmp2;
- } while (--chunks);
- lessthan8:
- n = n % 8;
- if (n >= 4) {
- *(unsigned long *)(tmp_to-4) = *(unsigned long *)(tmp_from-4);
- tmp_from -= 4;
- tmp_to -= 4;
- n = n-4;
- }
- if (!n ) return to;
- do {
- *--tmp_to = *--tmp_from;
- } while (--n);
-
- return to;
- align:
- rem = 4 - rem;
- n = n - rem;
- do {
- *--tmp_to = *--tmp_from;
- } while (--rem);
- chunks = n / 8;
- if (chunks)
- goto copy_chunks;
- goto lessthan8;
-}
-strong_alias(__memmove, memmove);
-#endif
-
-#ifdef L_memset
-static inline int expand_byte_word(int c){
- /* this does:
- c = c << 8 | c;
- c = c << 16 | c ;
- */
- asm("rlwimi %0,%0,8,16,23\n"
- "\trlwimi %0,%0,16,0,15\n"
- : "=r" (c) : "0" (c));
- return c;
-}
-void attribute_hidden *__memset(void *to, int c, size_t n)
-{
- unsigned long rem, chunks;
- unsigned char *tmp_to;
-
- chunks = n / 8;
- tmp_to = to - 4;
- c = expand_byte_word(c);
- if (!chunks)
- goto lessthan8;
- rem = (unsigned long )tmp_to % 4;
- if (rem)
- goto align;
- copy_chunks:
- do {
- *(unsigned long *)(tmp_to+4) = c;
- tmp_to += 4;
- *(unsigned long *)(tmp_to+4) = c;
- tmp_to += 4;
- } while (--chunks);
- lessthan8:
- n = n % 8;
- if (n >= 4) {
- *(unsigned long *)(tmp_to+4) = c;
- tmp_to += 4;
- n = n-4;
- }
- if (!n ) return to;
- tmp_to += 3;
- do {
- *++tmp_to = c;
- } while (--n);
-
- return to;
- align:
- rem = 4 - rem;
- n = n-rem;
- do {
- *(tmp_to+4) = c;
- ++tmp_to;
- } while (--rem);
- chunks = n / 8;
- if (chunks)
- goto copy_chunks;
- goto lessthan8;
-}
-strong_alias(__memset, memset);
-#endif
-
-#ifdef L_bzero
-weak_alias(__bzero,bzero);
-void __bzero(void *s, size_t n)
-{
- (void)memset(s, 0, n);
-}
-#endif
diff --git a/libc/sysdeps/linux/alpha/sys/acct.h b/libc/sysdeps/linux/alpha/sys/acct.h
deleted file mode 100644
index 1e00006ef..000000000
--- a/libc/sysdeps/linux/alpha/sys/acct.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _SYS_ACCT_H
-
-#define _SYS_ACCT_H 1
-#include <features.h>
-
-#define __need_time_t
-#include <time.h>
-
-
-__BEGIN_DECLS
-
-#define ACCT_COMM 16
-
-struct acct
- {
- char ac_comm[ACCT_COMM]; /* Accounting command name. */
- time_t ac_utime; /* Accounting user time. */
- time_t ac_stime; /* Accounting system time. */
- time_t ac_etime; /* Accounting elapsed time. */
- time_t ac_btime; /* Beginning time. */
- unsigned int ac_uid; /* Accounting user ID. */
- unsigned int ac_gid; /* Accounting group ID. */
- unsigned int ac_tty; /* Controlling tty. */
- /* Please note that the value of the `ac_tty' field, a device number,
- is encoded differently in the kernel and for the libc dev_t type. */
- char ac_flag; /* Accounting flag. */
- long int ac_minflt; /* Accounting minor pagefaults. */
- long int ac_majflt; /* Accounting major pagefaults. */
- long int ac_exitcode; /* Accounting process exitcode. */
- };
-
-enum
- {
- AFORK = 0001, /* Has executed fork, but no exec. */
- ASU = 0002, /* Used super-user privileges. */
- ACORE = 0004, /* Dumped core. */
- AXSIG = 0010 /* Killed by a signal. */
- };
-
-#define AHZ 100
-
-
-/* Switch process accounting on and off. */
-extern int acct (__const char *__filename) __THROW;
-
-__END_DECLS
-
-#endif /* sys/acct.h */
diff --git a/libintl/Makefile.in b/libintl/Makefile.in
index 5b309fc39..8c77262a0 100644
--- a/libintl/Makefile.in
+++ b/libintl/Makefile.in
@@ -22,7 +22,10 @@ libintl_MOBJ:=$(patsubst %.o,$(libintl_OUT)/%.o,$(MOBJ))
libintl_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(libintl_MOBJ))))
-$(libintl_MOBJ) $(libintl_MOBJ:.o=.os): $(libintl_MSRC)
+$(libintl_MOBJ): $(libintl_MSRC)
+ $(compile.m)
+
+$(libintl_MOBJ:.o=.os): $(libintl_MSRC)
$(compile.m)
libintl-a-$(UCLIBC_HAS_GETTEXT_AWARENESS):=$(libintl_MOBJ)