diff options
Diffstat (limited to 'libc')
101 files changed, 763 insertions, 752 deletions
diff --git a/libc/Makefile.in b/libc/Makefile.in index 88b61819a..1e0b58437 100644 --- a/libc/Makefile.in +++ b/libc/Makefile.in @@ -33,8 +33,10 @@ include $(libc_DIR)/unistd/Makefile.in # Check if the target architecture has a version script for # libc, and if so, include it when linking. -VERSION_SCRIPT:=${shell if [ -f $(libc_DIR)/sysdeps/linux/$(TARGET_ARCH)/libc.map ] ; then \ - echo "--version-script $(libc_DIR)/sysdeps/linux/$(TARGET_ARCH)/libc.map"; fi} +VERSION_SCRIPT := $(wildcard $(libc_DIR)/sysdeps/linux/$(TARGET_ARCH)/libc.map) +ifneq ($(VERSION_SCRIPT),) +VERSION_SCRIPT := --version-script $(VERSION_SCRIPT) +endif EXTRA_LINK_OPTS:=$(VERSION_SCRIPT) -init __uClibc_init EXTRA_LINK_LIBS:=$(libc_OUT)/misc/internals/interp.os $(top_builddir)lib/$(UCLIBC_LDSO) $(LIBGCC) # $(LDADD_LIBFLOAT) diff --git a/libc/inet/Makefile.in b/libc/inet/Makefile.in index 0b5ea7cc3..cb844907b 100644 --- a/libc/inet/Makefile.in +++ b/libc/inet/Makefile.in @@ -50,17 +50,25 @@ INET_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(INET_MOBJ)))) INET_OBJS:=$(INET_OBJ) $(INET_MOBJ) -$(INET_MOBJ1) $(INET_MOBJ1:.o=.os): $(INET_MSRC1) +$(INET_MOBJ1): $(INET_MSRC1) $(compile.m) -$(INET_MOBJ2) $(INET_MOBJ2:.o=.os): $(INET_MSRC2) +$(INET_MOBJ1:.o=.os): $(INET_MSRC1) $(compile.m) -$(INET_MOBJ3) $(INET_MOBJ3:.o=.os): $(INET_MSRC3) +$(INET_MOBJ2): $(INET_MSRC2) + $(compile.m) + +$(INET_MOBJ2:.o=.os): $(INET_MSRC2) + $(compile.m) + +$(INET_MOBJ3): $(INET_MSRC3) + $(compile.m) + +$(INET_MOBJ3:.o=.os): $(INET_MSRC3) $(compile.m) libc-a-y+=$(INET_OBJS) -libc-a-pic-y+=$(INET_OBJS:.o=.os) libc-so-y+=$(INET_OBJS:.o=.os) CFLAGS-multi-y+=$(INET_DEF) diff --git a/libc/inet/rpc/Makefile.in b/libc/inet/rpc/Makefile.in index 08f4eeca2..9bfa781d6 100644 --- a/libc/inet/rpc/Makefile.in +++ b/libc/inet/rpc/Makefile.in @@ -32,16 +32,18 @@ endif INET_RPC_DIR:=$(top_srcdir)libc/inet/rpc INET_RPC_OUT:=$(top_builddir)libc/inet/rpc +ifneq ($(DOMULTI),n) INET_RPC_NO_MULTI:=rpc_commondata.c rpc_thread.c svc.c +CSRC:=$(filter-out $(INET_RPC_NO_MULTI),$(CSRC)) +endif INET_RPC_SRC:=$(patsubst %.c,$(INET_RPC_DIR)/%.c,$(CSRC)) INET_RPC_OBJ:=$(patsubst %.c,$(INET_RPC_OUT)/%.o,$(CSRC)) libc-a-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ) -libc-a-pic-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ:.o=.os) libc-so-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ:.o=.os) -libc-multi-$(UCLIBC_HAS_RPC)+=$(filter-out $(patsubst %.c,$(INET_RPC_DIR)/%.c,$(INET_RPC_NO_MULTI)),$(INET_RPC_SRC)) +libc-multi-$(UCLIBC_HAS_RPC)+=$(INET_RPC_SRC) libc-nomulti-$(UCLIBC_HAS_RPC)+=$(patsubst %.c,$(INET_RPC_OUT)/%.o,$(INET_RPC_NO_MULTI)) objclean-y+=inet_rpc_objclean diff --git a/libc/misc/assert/Makefile.in b/libc/misc/assert/Makefile.in index 6fbdcb72a..0e41268b2 100644 --- a/libc/misc/assert/Makefile.in +++ b/libc/misc/assert/Makefile.in @@ -15,7 +15,6 @@ MISC_ASSERT_SRC:=$(MISC_ASSERT_DIR)/__assert.c MISC_ASSERT_OBJ:=$(MISC_ASSERT_OUT)/__assert.o libc-a-y+=$(MISC_ASSERT_OBJ) -libc-a-pic-y+=$(MISC_ASSERT_OBJ:.o=.os) libc-so-y+=$(MISC_ASSERT_OBJ:.o=.os) libc-multi-y+=$(MISC_ASSERT_SRC) diff --git a/libc/misc/ctype/Makefile.in b/libc/misc/ctype/Makefile.in index f9f1bfbed..0e194cbff 100644 --- a/libc/misc/ctype/Makefile.in +++ b/libc/misc/ctype/Makefile.in @@ -18,7 +18,7 @@ MOBJ+= __C_ctype_b.o __C_ctype_tolower.o __C_ctype_toupper.o \ __ctype_assert.o isctype.o endif -MOBJx= isalnum_l.o isalpha_l.o isascii_l.o iscntrl_l.o isdigit_l.o \ +MOBJx:= isalnum_l.o isalpha_l.o isascii_l.o iscntrl_l.o isdigit_l.o \ isgraph_l.o islower_l.o isprint_l.o ispunct_l.o isspace_l.o \ isupper_l.o isxdigit_l.o toascii_l.o tolower_l.o toupper_l.o \ isblank_l.o # isxlower_l.o isxupper_l.o @@ -28,21 +28,24 @@ MISC_CTYPE_OUT:=$(top_builddir)libc/misc/ctype MISC_CTYPE_MSRC:=$(MISC_CTYPE_DIR)/$(MSRC) MISC_CTYPE_MOBJ:=$(patsubst %.o,$(MISC_CTYPE_OUT)/%.o,$(MOBJ)) -MISC_CTYPE_MOBJx=$(patsubst %.o,$(MISC_CTYPE_OUT)/%.o,$(MOBJx)) +MISC_CTYPE_MOBJx:=$(patsubst %.o,$(MISC_CTYPE_OUT)/%.o,$(MOBJx)) -# adapt this if MOBJx is done for multi MISC_CTYPE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_CTYPE_MOBJ)))) -$(MISC_CTYPE_MOBJ) $(MISC_CTYPE_MOBJ:.o=.os): $(MISC_CTYPE_MSRC) +$(MISC_CTYPE_MOBJ): $(MISC_CTYPE_MSRC) $(compile.m) -$(MISC_CTYPE_MOBJx) $(MISC_CTYPE_MOBJx:.o=.os): $(MISC_CTYPE_MSRC) +$(MISC_CTYPE_MOBJ:.o=.os): $(MISC_CTYPE_MSRC) + $(compile.m) + +$(MISC_CTYPE_MOBJx): $(MISC_CTYPE_MSRC) + $(compile.m) -D__UCLIBC_DO_XLOCALE + +$(MISC_CTYPE_MOBJx:.o=.os): $(MISC_CTYPE_MSRC) $(compile.m) -D__UCLIBC_DO_XLOCALE libc-a-y+=$(MISC_CTYPE_MOBJ) libc-a-$(UCLIBC_HAS_XLOCALE)+=$(MISC_CTYPE_MOBJx) -libc-a-pic-y+=$(MISC_CTYPE_MOBJ:.o=.os) -libc-a-pic-$(UCLIBC_HAS_XLOCALE)+=$(MISC_CTYPE_MOBJx:.o=.os) libc-so-y+=$(MISC_CTYPE_MOBJ:.o=.os) libc-so-$(UCLIBC_HAS_XLOCALE)+=$(MISC_CTYPE_MOBJx:.o=.os) diff --git a/libc/misc/dirent/Makefile.in b/libc/misc/dirent/Makefile.in index 8ba28cdeb..ee0165e38 100644 --- a/libc/misc/dirent/Makefile.in +++ b/libc/misc/dirent/Makefile.in @@ -17,7 +17,6 @@ MISC_DIRENT_SRC:=$(patsubst %.c,$(MISC_DIRENT_DIR)/%.c,$(CSRC)) MISC_DIRENT_OBJ:=$(patsubst %.c,$(MISC_DIRENT_OUT)/%.o,$(CSRC)) libc-a-y+=$(MISC_DIRENT_OBJ) -libc-a-pic-y+=$(MISC_DIRENT_OBJ:.o=.os) libc-so-y+=$(MISC_DIRENT_OBJ:.o=.os) libc-multi-y+=$(MISC_DIRENT_SRC) diff --git a/libc/misc/error/Makefile.in b/libc/misc/error/Makefile.in index 86bf881fa..2977256d9 100644 --- a/libc/misc/error/Makefile.in +++ b/libc/misc/error/Makefile.in @@ -14,7 +14,6 @@ MISC_ERROR_SRC:=$(patsubst %.c,$(MISC_ERROR_DIR)/%.c,$(CSRC)) MISC_ERROR_OBJ:=$(patsubst %.c,$(MISC_ERROR_OUT)/%.o,$(CSRC)) libc-a-y+=$(MISC_ERROR_OBJ) -libc-a-pic-y+=$(MISC_ERROR_OBJ:.o=.os) libc-so-y+=$(MISC_ERROR_OBJ:.o=.os) libc-multi-y+=$(MISC_ERROR_SRC) diff --git a/libc/misc/file/Makefile.in b/libc/misc/file/Makefile.in index 58da3e2a3..9410a887a 100644 --- a/libc/misc/file/Makefile.in +++ b/libc/misc/file/Makefile.in @@ -16,11 +16,10 @@ endif MISC_FILE_OBJ:=$(patsubst $(MISC_FILE_DIR)/%.c,$(MISC_FILE_OUT)/%.o,$(MISC_FILE_SRC)) libc-a-y+=$(MISC_FILE_OBJ) -libc-a-pic-y+=$(MISC_FILE_OBJ:.o=.os) libc-so-y+=$(MISC_FILE_OBJ:.o=.os) libc-multi-y+=$(MISC_FILE_DIR)/lockf.c -libc-nomulti-y+=$(MISC_FILE_OUT)/lockf64.o +libc-nomulti-$(UCLIBC_HAS_LFS)+=$(MISC_FILE_OUT)/lockf64.o objclean-y+=misc_file_objclean diff --git a/libc/misc/fnmatch/Makefile.in b/libc/misc/fnmatch/Makefile.in index 24019dede..5476672df 100644 --- a/libc/misc/fnmatch/Makefile.in +++ b/libc/misc/fnmatch/Makefile.in @@ -13,7 +13,6 @@ MISC_FNMATCH_SRC:=$(MISC_FNMATCH_DIR)/fnmatch.c MISC_FNMATCH_OBJ:=$(MISC_FNMATCH_OUT)/fnmatch.o libc-a-y+=$(MISC_FNMATCH_OBJ) -libc-a-pic-y+=$(MISC_FNMATCH_OBJ:.o=.os) libc-so-y+=$(MISC_FNMATCH_OBJ:.o=.os) libc-multi-y+=$(MISC_FNMATCH_SRC) diff --git a/libc/misc/ftw/Makefile.in b/libc/misc/ftw/Makefile.in index 2f92ef0ec..c2cabfa0e 100644 --- a/libc/misc/ftw/Makefile.in +++ b/libc/misc/ftw/Makefile.in @@ -13,24 +13,26 @@ MISC_FTW_OUT:=$(top_builddir)libc/misc/ftw # ftw.c has to be rewritten to allow multi MISC_FTW_NO_MULTI:=ftw64.o -MOBJ:=$(filter-out $(MISC_FTW_NO_MULTI),$(MOBJ)) MISC_FTW_MSRC:=$(MISC_FTW_DIR)/$(MSRC) MISC_FTW_MOBJ:=$(patsubst %.o,$(MISC_FTW_OUT)/%.o,$(MOBJ)) -MISC_FTW_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_FTW_MOBJ)))) -MISC_FTW_OBJS:=$(MISC_FTW_MOBJ) $(MISC_FTW_OUT)/$(MISC_FTW_NO_MULTI) +MISC_FTW_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(filter-out $(MISC_FTW_NO_MULTI),$(notdir $(MISC_FTW_MOBJ))))) -$(MISC_FTW_OBJS) $(MISC_FTW_OBJS:.o=.os): $(MISC_FTW_MSRC) +MISC_FTW_OBJS:=$(MISC_FTW_MOBJ) + +$(MISC_FTW_OBJS): $(MISC_FTW_MSRC) + $(compile.m) + +$(MISC_FTW_OBJS:.o=.os): $(MISC_FTW_MSRC) $(compile.m) libc-a-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_OBJS) -libc-a-pic-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_OBJS:.o=.os) libc-so-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_OBJS:.o=.os) CFLAGS-multi-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_DEF) libc-multi-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_MSRC) -libc-nomulti-$(UCLIBC_HAS_FTW)+=$(MISC_FTW_OUT)/$(MISC_FTW_NO_MULTI) +libc-nomulti-$(UCLIBC_HAS_FTW)+=$(patsubst %.o,$(MISC_FTW_OUT)/%.o,$(MISC_FTW_NO_MULTI)) objclean-y+=misc_ftw_objclean diff --git a/libc/misc/glob/Makefile.in b/libc/misc/glob/Makefile.in index c17086fde..cd845464f 100644 --- a/libc/misc/glob/Makefile.in +++ b/libc/misc/glob/Makefile.in @@ -14,10 +14,11 @@ MISC_GLOB_OUT:=$(top_builddir)libc/misc/glob MISC_GLOB_SRC:=$(patsubst %.c,$(MISC_GLOB_DIR)/%.c,$(CSRC)) MISC_GLOB_OBJ:=$(patsubst %.c,$(MISC_GLOB_OUT)/%.o,$(CSRC)) -$(MISC_GLOB_OUT)/glob64.o $(MISC_GLOB_OUT)/glob64.os: $(MISC_GLOB_DIR)/glob64.c $(MISC_GLOB_DIR)/glob.c +$(MISC_GLOB_OUT)/glob64.o: $(MISC_GLOB_DIR)/glob64.c $(MISC_GLOB_DIR)/glob.c + +$(MISC_GLOB_OUT)/glob64.os: $(MISC_GLOB_DIR)/glob64.c $(MISC_GLOB_DIR)/glob.c libc-a-$(UCLIBC_HAS_GLOB)+=$(MISC_GLOB_OBJ) -libc-a-pic-$(UCLIBC_HAS_GLOB)+=$(MISC_GLOB_OBJ:.o=.os) libc-so-$(UCLIBC_HAS_GLOB)+=$(MISC_GLOB_OBJ:.o=.os) # glob has to be rewritten to allow multi diff --git a/libc/misc/gnu/Makefile.in b/libc/misc/gnu/Makefile.in index 263b45713..d3ba2e549 100644 --- a/libc/misc/gnu/Makefile.in +++ b/libc/misc/gnu/Makefile.in @@ -15,7 +15,6 @@ MISC_GNU_SRC:=$(MISC_GNU_DIR)/obstack.c MISC_GNU_OBJ:=$(MISC_GNU_OUT)/obstack.o libc-a-y+=$(MISC_GNU_OBJ) -libc-a-pic-y+=$(MISC_GNU_OBJ:.o=.os) libc-so-y+=$(MISC_GNU_OBJ:.o=.os) libc-multi-y+=$(MISC_GNU_SRC) diff --git a/libc/misc/internals/Makefile.in b/libc/misc/internals/Makefile.in index c6be32a30..2916475ec 100644 --- a/libc/misc/internals/Makefile.in +++ b/libc/misc/internals/Makefile.in @@ -19,12 +19,12 @@ MISC_INTERNALS_OBJ:=$(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(CSRC)) STATIC_SRC:=__uClibc_main.c $(MISC_INTERNALS_OUT)/interp.c: $(MISC_INTERNALS_DIR)/Makefile.in - echo "/* Force shared libraries to know about the correct library loader */" > $@ - echo "#include <features.h>" >> $@ - echo "#ifdef __HAVE_ELF__" >> $@ - echo "const char __dl_ldso__[] __attribute__ ((section " \ + $(Q)echo "/* Force shared libraries to know about the correct library loader */" > $@ + $(Q)echo "#include <features.h>" >> $@ + $(Q)echo "#ifdef __HAVE_ELF__" >> $@ + $(Q)echo "const char __dl_ldso__[] __attribute__ ((section " \ "(\".interp\"))) =\""$(SHARED_LIB_LOADER_PREFIX)/$(UCLIBC_LDSO)"\";" >> $@ - echo "#endif" >> $@ + $(Q)echo "#endif" >> $@ libc-a-y+=$(MISC_INTERNALS_OBJ) libc-so-y+=$(MISC_INTERNALS_OBJ:.o=.os) diff --git a/libc/misc/intl/Makefile.in b/libc/misc/intl/Makefile.in index 40eadfa1b..6daa22dd9 100644 --- a/libc/misc/intl/Makefile.in +++ b/libc/misc/intl/Makefile.in @@ -17,11 +17,13 @@ MISC_INTL_MSRC:=$(MISC_INTL_DIR)/$(MSRC) MISC_INTL_MOBJ:=$(patsubst %.o,$(MISC_INTL_OUT)/%.o,$(MOBJ)) MISC_INTL_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_INTL_MOBJ)))) -$(MISC_INTL_MOBJ) $(MISC_INTL_MOBJ:.o=.os): $(MISC_INTL_MSRC) +$(MISC_INTL_MOBJ): $(MISC_INTL_MSRC) + $(compile.m) + +$(MISC_INTL_MOBJ:.o=.os): $(MISC_INTL_MSRC) $(compile.m) libc-a-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_MOBJ) -libc-a-pic-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_MOBJ:.o=.os) libc-so-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_MOBJ:.o=.os) CFLAGS-multi-$(UCLIBC_HAS_GETTEXT_AWARENESS)+=$(MISC_INTL_DEF) diff --git a/libc/misc/locale/Makefile.in b/libc/misc/locale/Makefile.in index bdf42204d..9d0074521 100644 --- a/libc/misc/locale/Makefile.in +++ b/libc/misc/locale/Makefile.in @@ -8,38 +8,49 @@ MSRC:=locale.c MOBJ:=setlocale.o localeconv.o _locale_init.o nl_langinfo.o -MOBJx= +MOBJx:= ifeq ($(UCLIBC_HAS_LOCALE),y) MOBJ+=newlocale.o __locale_mbrtowc_l.o endif ifeq ($(UCLIBC_HAS_XLOCALE),y) -MOBJx+=nl_langinfo_l.o duplocale.o freelocale.o uselocale.o __curlocale.o +MOBJx:=nl_langinfo_l.o duplocale.o freelocale.o uselocale.o __curlocale.o endif -DATA= +DATA:= ifeq ($(UCLIBC_HAS_LOCALE),y) DATA:=locale_data.o endif +MISC_LOCALE_NO_MULTI=localeconv.o + MISC_LOCALE_DIR:=$(top_srcdir)libc/misc/locale MISC_LOCALE_OUT:=$(top_builddir)libc/misc/locale MISC_LOCALE_MSRC:=$(MISC_LOCALE_DIR)/$(MSRC) MISC_LOCALE_MOBJ:=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(MOBJ)) -MISC_LOCALE_MOBJx=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(MOBJx)) -MISC_LOCALE_DATA=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(DATA)) +MISC_LOCALE_MOBJx:=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(MOBJx)) +MISC_LOCALE_DATA:=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(DATA)) + +MISC_LOCALE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(filter-out $(MISC_LOCALE_NO_MULTI),$(notdir $(MISC_LOCALE_MOBJ))))) -MISC_LOCALE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_LOCALE_MOBJ)))) +$(MISC_LOCALE_MOBJ): $(MISC_LOCALE_MSRC) + $(compile.m) -$(MISC_LOCALE_MOBJ) $(MISC_LOCALE_MOBJ:.o=.os): $(MISC_LOCALE_MSRC) +$(MISC_LOCALE_MOBJ:.o=.os): $(MISC_LOCALE_MSRC) $(compile.m) -$(MISC_LOCALE_MOBJx) $(MISC_LOCALE_MOBJx:.o=.os): $(MISC_LOCALE_MSRC) +$(MISC_LOCALE_MOBJx): $(MISC_LOCALE_MSRC) $(compile.m) -D__UCLIBC_DO_XLOCALE -$(MISC_LOCALE_DATA) $(MISC_LOCALE_DATA:.o=.os): $(top_builddir)extra/locale/$(notdir $(MISC_LOCALE_DATA:.o=.c)) +$(MISC_LOCALE_MOBJx:.o=.os): $(MISC_LOCALE_MSRC) + $(compile.m) -D__UCLIBC_DO_XLOCALE + +$(MISC_LOCALE_DATA): $(top_builddir)extra/locale/$(notdir $(MISC_LOCALE_DATA:.o=.c)) + $(compile.c) -D__WCHAR_ENABLED -I$(dir $<) + +$(MISC_LOCALE_DATA:.o=.os): $(top_builddir)extra/locale/$(notdir $(MISC_LOCALE_DATA:.o=.c)) $(compile.c) -D__WCHAR_ENABLED -I$(dir $<) libc-a-y+=$(MISC_LOCALE_MOBJ) @@ -49,9 +60,9 @@ libc-so-y+=$(MISC_LOCALE_MOBJ:.o=.os) libc-so-$(UCLIBC_HAS_LOCALE)+=$(MISC_LOCALE_DATA:.o=.os) libc-so-$(UCLIBC_HAS_XLOCALE)+=$(MISC_LOCALE_MOBJx:.o=.os) -#CFLAGS-multi-y+=$(MISC_LOCALE_DEF) -#libc-multi-y+=$(MISC_LOCALE_MSRC) -libc-nomulti-y+=$(MISC_LOCALE_MOBJ) +CFLAGS-multi-y+=$(MISC_LOCALE_DEF) +libc-multi-y+=$(MISC_LOCALE_MSRC) +libc-nomulti-y+=$(patsubst %.o,$(MISC_LOCALE_OUT)/%.o,$(MISC_LOCALE_NO_MULTI)) libc-nomulti-$(UCLIBC_HAS_LOCALE)+=$(MISC_LOCALE_DATA) libc-nomulti-$(UCLIBC_HAS_XLOCALE)+=$(MISC_LOCALE_MOBJx) diff --git a/libc/misc/mntent/Makefile.in b/libc/misc/mntent/Makefile.in index cdb8acd5e..c1674f494 100644 --- a/libc/misc/mntent/Makefile.in +++ b/libc/misc/mntent/Makefile.in @@ -15,7 +15,6 @@ MISC_MNTENT_SRC:=$(MISC_MNTENT_DIR)/mntent.c MISC_MNTENT_OBJ:=$(MISC_MNTENT_OUT)/mntent.o libc-a-y+=$(MISC_MNTENT_OBJ) -libc-a-pic-y+=$(MISC_MNTENT_OBJ:.o=.os) libc-so-y+=$(MISC_MNTENT_OBJ:.o=.os) libc-multi-y+=$(MISC_MNTENT_SRC) diff --git a/libc/misc/pthread/Makefile.in b/libc/misc/pthread/Makefile.in index 0bcb1496b..0bbe0fd36 100644 --- a/libc/misc/pthread/Makefile.in +++ b/libc/misc/pthread/Makefile.in @@ -14,11 +14,10 @@ MISC_PTHREAD_SRC:=$(patsubst %.c,$(MISC_PTHREAD_DIR)/%.c,$(CSRC)) MISC_PTHREAD_OBJ:=$(patsubst %.c,$(MISC_PTHREAD_OUT)/%.o,$(CSRC)) libc-a-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ) -libc-a-pic-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ:.o=.os) libc-so-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ:.o=.os) -#libc-multi-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_SRC) -libc-nomulti-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OBJ) +libc-multi-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_DIR)/no-tsd.c +libc-nomulti-$(UCLIBC_HAS_THREADS)+=$(MISC_PTHREAD_OUT)/weaks.o objclean-y+=misc_pthread_objclean diff --git a/libc/misc/regex/Makefile.in b/libc/misc/regex/Makefile.in index 6909e6246..50d2c2d06 100644 --- a/libc/misc/regex/Makefile.in +++ b/libc/misc/regex/Makefile.in @@ -15,7 +15,6 @@ MISC_REGEX_SRC:=$(patsubst %.c,$(MISC_REGEX_DIR)/%.c,$(CSRC)) MISC_REGEX_OBJ:=$(patsubst %.c,$(MISC_REGEX_OUT)/%.o,$(CSRC)) libc-a-$(UCLIBC_HAS_REGEX)+=$(MISC_REGEX_OBJ) -libc-a-pic-$(UCLIBC_HAS_REGEX)+=$(MISC_REGEX_OBJ:.o=.os) libc-so-$(UCLIBC_HAS_REGEX)+=$(MISC_REGEX_OBJ:.o=.os) libc-multi-$(UCLIBC_HAS_REGEX)+=$(MISC_REGEX_SRC) diff --git a/libc/misc/search/Makefile.in b/libc/misc/search/Makefile.in index b762db6e0..943ef34d0 100644 --- a/libc/misc/search/Makefile.in +++ b/libc/misc/search/Makefile.in @@ -41,20 +41,31 @@ MISC_SEARCH_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_SEARCH_MOBJ)))) MISC_SEARCH_OBJS:=$(MISC_SEARCH_OBJ) $(MISC_SEARCH_MOBJ) -$(MISC_SEARCH_MOBJ1) $(MISC_SEARCH_MOBJ1:.o=.os): $(MISC_SEARCH_MSRC1) +$(MISC_SEARCH_MOBJ1): $(MISC_SEARCH_MSRC1) $(compile.m) -$(MISC_SEARCH_MOBJ2) $(MISC_SEARCH_MOBJ2:.o=.os): $(MISC_SEARCH_MSRC2) +$(MISC_SEARCH_MOBJ1:.o=.os): $(MISC_SEARCH_MSRC1) $(compile.m) -$(MISC_SEARCH_MOBJ3) $(MISC_SEARCH_MOBJ3:.o=.os): $(MISC_SEARCH_MSRC3) +$(MISC_SEARCH_MOBJ2): $(MISC_SEARCH_MSRC2) $(compile.m) -$(MISC_SEARCH_MOBJ4) $(MISC_SEARCH_MOBJ4:.o=.os): $(MISC_SEARCH_MSRC4) +$(MISC_SEARCH_MOBJ2:.o=.os): $(MISC_SEARCH_MSRC2) + $(compile.m) + +$(MISC_SEARCH_MOBJ3): $(MISC_SEARCH_MSRC3) + $(compile.m) + +$(MISC_SEARCH_MOBJ3:.o=.os): $(MISC_SEARCH_MSRC3) + $(compile.m) + +$(MISC_SEARCH_MOBJ4): $(MISC_SEARCH_MSRC4) + $(compile.m) + +$(MISC_SEARCH_MOBJ4:.o=.os): $(MISC_SEARCH_MSRC4) $(compile.m) libc-a-y+=$(MISC_SEARCH_OBJS) -libc-a-pic-y+=$(MISC_SEARCH_OBJS:.o=.os) libc-so-y+=$(MISC_SEARCH_OBJS:.o=.os) CFLAGS-multi-y+=$(MISC_SEARCH_DEF) diff --git a/libc/misc/statfs/Makefile.in b/libc/misc/statfs/Makefile.in index 2adb20f1d..9350e221e 100644 --- a/libc/misc/statfs/Makefile.in +++ b/libc/misc/statfs/Makefile.in @@ -17,7 +17,6 @@ MISC_STATFS_SRC:=$(patsubst %.c,$(MISC_STATFS_DIR)/%.c,$(CSRC)) MISC_STATFS_OBJ:=$(patsubst %.c,$(MISC_STATFS_OUT)/%.o,$(CSRC)) libc-a-y+=$(MISC_STATFS_OBJ) -libc-a-pic-y+=$(MISC_STATFS_OBJ:.o=.os) libc-so-y+=$(MISC_STATFS_OBJ:.o=.os) libc-multi-y+=$(MISC_STATFS_SRC) diff --git a/libc/misc/syslog/Makefile.in b/libc/misc/syslog/Makefile.in index bc6cb0710..c1cd2ee18 100644 --- a/libc/misc/syslog/Makefile.in +++ b/libc/misc/syslog/Makefile.in @@ -15,7 +15,6 @@ MISC_SYSLOG_SRC:=$(patsubst %.c,$(MISC_SYSLOG_DIR)/%.c,$(CSRC)) MISC_SYSLOG_OBJ:=$(patsubst %.c,$(MISC_SYSLOG_OUT)/%.o,$(CSRC)) libc-a-y+=$(MISC_SYSLOG_OBJ) -libc-a-pic-y+=$(MISC_SYSLOG_OBJ:.o=.os) libc-so-y+=$(MISC_SYSLOG_OBJ:.o=.os) libc-multi-y+=$(MISC_SYSLOG_SRC) diff --git a/libc/misc/sysvipc/Makefile.in b/libc/misc/sysvipc/Makefile.in index 73cc932aa..9a4446cb3 100644 --- a/libc/misc/sysvipc/Makefile.in +++ b/libc/misc/sysvipc/Makefile.in @@ -34,27 +34,34 @@ MISC_SYSVIPC_MOBJ3:=$(patsubst %.o,$(MISC_SYSVIPC_OUT)/%.o,$(MOBJ3)) MISC_SYSVIPC_MSRC:=$(MISC_SYSVIPC_MSRC1) $(MISC_SYSVIPC_MSRC2) $(MISC_SYSVIPC_MSRC3) MISC_SYSVIPC_MOBJ:=$(MISC_SYSVIPC_MOBJ1) $(MISC_SYSVIPC_MOBJ2) $(MISC_SYSVIPC_MOBJ3) -# only MSRC2 -MISC_SYSVIPC_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_SYSVIPC_MOBJ2)))) + +MISC_SYSVIPC_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_SYSVIPC_MOBJ)))) MISC_SYSVIPC_OBJS:=$(MISC_SYSVIPC_OBJ) $(MISC_SYSVIPC_MOBJ) -$(MISC_SYSVIPC_MOBJ1) $(MISC_SYSVIPC_MOBJ1:.o=.os): $(MISC_SYSVIPC_MSRC1) +$(MISC_SYSVIPC_MOBJ1): $(MISC_SYSVIPC_MSRC1) + $(compile.m) + +$(MISC_SYSVIPC_MOBJ1:.o=.os): $(MISC_SYSVIPC_MSRC1) + $(compile.m) + +$(MISC_SYSVIPC_MOBJ2): $(MISC_SYSVIPC_MSRC2) + $(compile.m) + +$(MISC_SYSVIPC_MOBJ2:.o=.os): $(MISC_SYSVIPC_MSRC2) $(compile.m) -$(MISC_SYSVIPC_MOBJ2) $(MISC_SYSVIPC_MOBJ2:.o=.os): $(MISC_SYSVIPC_MSRC2) +$(MISC_SYSVIPC_MOBJ3): $(MISC_SYSVIPC_MSRC3) $(compile.m) -$(MISC_SYSVIPC_MOBJ3) $(MISC_SYSVIPC_MOBJ3:.o=.os): $(MISC_SYSVIPC_MSRC3) +$(MISC_SYSVIPC_MOBJ3:.o=.os): $(MISC_SYSVIPC_MSRC3) $(compile.m) libc-a-y+=$(MISC_SYSVIPC_OBJS) -libc-a-pic-y+=$(MISC_SYSVIPC_OBJS:.o=.os) libc-so-y+=$(MISC_SYSVIPC_OBJS:.o=.os) CFLAGS-multi-y+=$(MISC_SYSVIPC_DEF) -libc-multi-y+=$(MISC_SYSVIPC_SRC) $(MISC_SYSVIPC_MSRC2) -libc-nomulti-y+=$(MISC_SYSVIPC_MOBJ1) $(MISC_SYSVIPC_MOBJ3) +libc-multi-y+=$(MISC_SYSVIPC_SRC) $(MISC_SYSVIPC_MSRC) objclean-y+=misc_sysvipc_objclean diff --git a/libc/misc/time/Makefile.in b/libc/misc/time/Makefile.in index 986e5ed29..b62032a25 100644 --- a/libc/misc/time/Makefile.in +++ b/libc/misc/time/Makefile.in @@ -11,13 +11,13 @@ MOBJ:= asctime.o asctime_r.o clock.o ctime.o ctime_r.o gmtime.o gmtime_r.o \ localtime.o localtime_r.o mktime.o strftime.o strptime.o tzset.o \ _time_t2tm.o __time_tm.o _time_mktime.o dysize.o timegm.o \ _time_mktime_tzi.o _time_localtime_tzi.o -MOBJx= +MOBJx:= ifeq ($(UCLIBC_HAS_FLOATS),y) MOBJ+=difftime.o endif ifeq ($(UCLIBC_HAS_XLOCALE),y) -MOBJx+=strftime_l.o strptime_l.o +MOBJx:=strftime_l.o strptime_l.o endif ifeq ($(UCLIBC_HAS_WCHAR),y) @@ -32,35 +32,39 @@ CSRC:=adjtime.c ftime.c MISC_TIME_DIR:=$(top_srcdir)libc/misc/time MISC_TIME_OUT:=$(top_builddir)libc/misc/time -MISC_TIME_NO_MULTI:=strftime.o +MISC_TIME_NO_MULTI:=strftime.o mktime.o strptime.o gmtime.o localtime.o asctime.o asctime_r.o gmtime_r.o localtime_r.o MISC_TIME_SRC:=$(patsubst %.c,$(MISC_TIME_DIR)/%.c,$(CSRC)) MISC_TIME_OBJ:=$(patsubst %.c,$(MISC_TIME_OUT)/%.o,$(CSRC)) MISC_TIME_MSRC:=$(patsubst %.c,$(MISC_TIME_DIR)/%.c,$(MSRC)) MISC_TIME_MOBJ:=$(patsubst %.o,$(MISC_TIME_OUT)/%.o,$(MOBJ)) -MISC_TIME_MOBJx=$(patsubst %.o,$(MISC_TIME_OUT)/%.o,$(MOBJx)) +MISC_TIME_MOBJx:=$(patsubst %.o,$(MISC_TIME_OUT)/%.o,$(MOBJx)) -MISC_TIME_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(filter-out $(MISC_TIME_OUT)/$(MISC_TIME_NO_MULTI),$(MISC_TIME_MOBJ))))) +MISC_TIME_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(filter-out $(MISC_TIME_NO_MULTI),$(notdir $(MISC_TIME_MOBJ))))) MISC_TIME_OBJS:=$(MISC_TIME_OBJ) $(MISC_TIME_MOBJ) -$(MISC_TIME_MOBJ) $(MISC_TIME_MOBJ:.o=.os): $(MISC_TIME_MSRC) +$(MISC_TIME_MOBJ): $(MISC_TIME_MSRC) $(compile.m) -$(MISC_TIME_MOBJx) $(MISC_TIME_MOBJx:.o=.os): $(MISC_TIME_MSRC) +$(MISC_TIME_MOBJ:.o=.os): $(MISC_TIME_MSRC) + $(compile.m) + +$(MISC_TIME_MOBJx): $(MISC_TIME_MSRC) + $(compile.m) -D__UCLIBC_DO_XLOCALE + +$(MISC_TIME_MOBJx:.o=.os): $(MISC_TIME_MSRC) $(compile.m) -D__UCLIBC_DO_XLOCALE libc-a-y+=$(MISC_TIME_OBJS) libc-a-$(UCLIBC_HAS_XLOCALE)+=$(MISC_TIME_MOBJx) -libc-a-pic-y+=$(MISC_TIME_OBJS:.o=.os) -libc-a-pic-$(UCLIBC_HAS_XLOCALE)+=$(MISC_TIME_MOBJx:.o=.os) libc-so-y+=$(MISC_TIME_OBJS:.o=.os) libc-so-$(UCLIBC_HAS_XLOCALE)+=$(MISC_TIME_MOBJx:.o=.os) CFLAGS-multi-y+=$(MISC_TIME_DEF) libc-multi-y+=$(MISC_TIME_MSRC) -libc-nomulti-y+=$(MISC_TIME_OUT)/$(MISC_TIME_NO_MULTI) +libc-nomulti-y+=$(patsubst %.o,$(MISC_TIME_OUT)/%.o,$(MISC_TIME_NO_MULTI)) libc-nomulti-$(UCLIBC_HAS_XLOCALE)+=$(MISC_TIME_MOBJx) objclean-y+=misc_time_objclean diff --git a/libc/misc/ttyent/Makefile.in b/libc/misc/ttyent/Makefile.in index e653ef2c1..eff772546 100644 --- a/libc/misc/ttyent/Makefile.in +++ b/libc/misc/ttyent/Makefile.in @@ -14,7 +14,6 @@ MISC_TTYENT_SRC:=$(patsubst %.c,$(MISC_TTYENT_DIR)/%.c,$(CSRC)) MISC_TTYENT_OBJ:=$(patsubst %.c,$(MISC_TTYENT_OUT)/%.o,$(CSRC)) libc-a-y+=$(MISC_TTYENT_OBJ) -libc-a-pic-y+=$(MISC_TTYENT_OBJ:.o=.os) libc-so-y+=$(MISC_TTYENT_OBJ:.o=.os) libc-multi-y+=$(MISC_TTYENT_SRC) diff --git a/libc/misc/utmp/Makefile.in b/libc/misc/utmp/Makefile.in index 6240a160d..2a0fe0f13 100644 --- a/libc/misc/utmp/Makefile.in +++ b/libc/misc/utmp/Makefile.in @@ -15,7 +15,6 @@ MISC_UTMP_SRC:=$(patsubst %.c,$(MISC_UTMP_DIR)/%.c,$(CSRC)) MISC_UTMP_OBJ:=$(patsubst %.c,$(MISC_UTMP_OUT)/%.o,$(CSRC)) libc-a-y+=$(MISC_UTMP_OBJ) -libc-a-pic-y+=$(MISC_UTMP_OBJ:.o=.os) libc-so-y+=$(MISC_UTMP_OBJ:.o=.os) libc-multi-y+=$(MISC_UTMP_SRC) diff --git a/libc/misc/wchar/Makefile.in b/libc/misc/wchar/Makefile.in index 885f2476b..9059d71d8 100644 --- a/libc/misc/wchar/Makefile.in +++ b/libc/misc/wchar/Makefile.in @@ -33,11 +33,13 @@ MISC_WCHAR_MSRC:=$(MISC_WCHAR_DIR)/$(MSRC) MISC_WCHAR_MOBJ:=$(patsubst %.o,$(MISC_WCHAR_OUT)/%.o,$(MOBJ)) MISC_WCHAR_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_WCHAR_MOBJ)))) -$(MISC_WCHAR_MOBJ) $(MISC_WCHAR_MOBJ:.o=.os): $(MISC_WCHAR_MSRC) +$(MISC_WCHAR_MOBJ): $(MISC_WCHAR_MSRC) + $(compile.m) + +$(MISC_WCHAR_MOBJ:.o=.os): $(MISC_WCHAR_MSRC) $(compile.m) libc-a-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_MOBJ) -libc-a-pic-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_MOBJ:.o=.os) libc-so-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_MOBJ:.o=.os) CFLAGS-multi-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCHAR_DEF) diff --git a/libc/misc/wctype/Makefile.in b/libc/misc/wctype/Makefile.in index 1db745223..dc008ec7d 100644 --- a/libc/misc/wctype/Makefile.in +++ b/libc/misc/wctype/Makefile.in @@ -12,7 +12,7 @@ MOBJ:= iswalnum.o iswalpha.o iswcntrl.o iswdigit.o iswgraph.o \ iswxdigit.o iswblank.o wctrans.o towctrans.o \ wctype.o iswctype.o towlower.o towupper.o -MOBJx= iswalnum_l.o iswalpha_l.o iswcntrl_l.o iswdigit_l.o iswgraph_l.o \ +MOBJx:= iswalnum_l.o iswalpha_l.o iswcntrl_l.o iswdigit_l.o iswgraph_l.o \ iswlower_l.o iswprint_l.o iswpunct_l.o iswspace_l.o iswupper_l.o \ iswxdigit_l.o iswblank_l.o \ wctype_l.o iswctype_l.o wctrans_l.o towctrans_l.o towlower_l.o towupper_l.o @@ -22,21 +22,24 @@ MISC_WCTYPE_OUT:=$(top_builddir)libc/misc/wctype MISC_WCTYPE_MSRC:=$(MISC_WCTYPE_DIR)/$(MSRC) MISC_WCTYPE_MOBJ:=$(patsubst %.o,$(MISC_WCTYPE_OUT)/%.o,$(MOBJ)) -MISC_WCTYPE_MOBJx=$(patsubst %.o,$(MISC_WCTYPE_OUT)/%.o,$(MOBJx)) +MISC_WCTYPE_MOBJx:=$(patsubst %.o,$(MISC_WCTYPE_OUT)/%.o,$(MOBJx)) -# adapt this if MOBJx is done for multi MISC_WCTYPE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(MISC_WCTYPE_MOBJ)))) -$(MISC_WCTYPE_MOBJ) $(MISC_WCTYPE_MOBJ:.o=.os): $(MISC_WCTYPE_MSRC) +$(MISC_WCTYPE_MOBJ): $(MISC_WCTYPE_MSRC) $(compile.m) -$(MISC_WCTYPE_MOBJx) $(MISC_WCTYPE_MOBJx:.o=.os): $(MISC_WCTYPE_MSRC) +$(MISC_WCTYPE_MOBJ:.o=.os): $(MISC_WCTYPE_MSRC) + $(compile.m) + +$(MISC_WCTYPE_MOBJx): $(MISC_WCTYPE_MSRC) + $(compile.m) -D__UCLIBC_DO_XLOCALE + +$(MISC_WCTYPE_MOBJx:.o=.os): $(MISC_WCTYPE_MSRC) $(compile.m) -D__UCLIBC_DO_XLOCALE libc-a-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCTYPE_MOBJ) libc-a-$(UCLIBC_HAS_XLOCALE)+=$(MISC_WCTYPE_MOBJx) -libc-a-pic-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCTYPE_MOBJ:.o=.os) -libc-a-pic-$(UCLIBC_HAS_XLOCALE)+=$(MISC_WCTYPE_MOBJx:.o=.os) libc-so-$(UCLIBC_HAS_WCHAR)+=$(MISC_WCTYPE_MOBJ:.o=.os) libc-so-$(UCLIBC_HAS_XLOCALE)+=$(MISC_WCTYPE_MOBJx:.o=.os) diff --git a/libc/misc/wordexp/Makefile.in b/libc/misc/wordexp/Makefile.in index c5199fe07..f4094d5c2 100644 --- a/libc/misc/wordexp/Makefile.in +++ b/libc/misc/wordexp/Makefile.in @@ -14,7 +14,6 @@ MISC_WORDEXP_SRC:=$(patsubst %.c,$(MISC_WORDEXP_DIR)/%.c,$(CSRC)) MISC_WORDEXP_OBJ:=$(patsubst %.c,$(MISC_WORDEXP_OUT)/%.o,$(CSRC)) libc-a-$(UCLIBC_HAS_WORDEXP)+=$(MISC_WORDEXP_OBJ) -libc-a-pic-$(UCLIBC_HAS_WORDEXP)+=$(MISC_WORDEXP_OBJ:.o=.os) libc-so-$(UCLIBC_HAS_WORDEXP)+=$(MISC_WORDEXP_OBJ:.o=.os) libc-multi-$(UCLIBC_HAS_WORDEXP)+=$(MISC_WORDEXP_SRC) diff --git a/libc/pwd_grp/Makefile.in b/libc/pwd_grp/Makefile.in index 991f38872..3475d2331 100644 --- a/libc/pwd_grp/Makefile.in +++ b/libc/pwd_grp/Makefile.in @@ -28,13 +28,14 @@ PWDGRP_MOBJ:=$(patsubst %.o,$(PWDGRP_OUT)/%.o,$(MOBJ)) PWDGRP_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(PWDGRP_MOBJ)))) -$(PWDGRP_MOBJ) $(PWDGRP_MOBJ:.o=.os): $(PWDGRP_MSRC) +$(PWDGRP_MOBJ): $(PWDGRP_MSRC) + $(compile.m) + +$(PWDGRP_MOBJ:.o=.os): $(PWDGRP_MSRC) $(compile.m) libc-a-y+=$(PWDGRP_MOBJ) libc-a-$(HAS_SHADOW)+=$(PWDGRP_OUT)/lckpwdf.o -libc-a-pic-y+=$(PWDGRP_MOBJ:.o=.os) -libc-a-pic-$(HAS_SHADOW)+=$(PWDGRP_OUT)/lckpwdf.os libc-so-y+=$(PWDGRP_MOBJ:.o=.os) libc-so-$(HAS_SHADOW)+=$(PWDGRP_OUT)/lckpwdf.os diff --git a/libc/signal/Makefile.in b/libc/signal/Makefile.in index 22c9f35ea..26a8f0c56 100644 --- a/libc/signal/Makefile.in +++ b/libc/signal/Makefile.in @@ -23,12 +23,9 @@ SIGNAL_SRC:=$(patsubst %.c,$(SIGNAL_DIR)/%.c,$(CSRC)) SIGNAL_OBJ:=$(patsubst $(SIGNAL_DIR)/%.c,$(SIGNAL_OUT)/%.o,$(SIGNAL_SRC)) libc-a-y+=$(SIGNAL_OBJ) -libc-a-pic-y+=$(SIGNAL_OBJ:.o=.os) libc-so-y+=$(SIGNAL_OBJ:.o=.os) -# either sigaction or allocrtsig have to be removed -#libc-multi-y+=$(SIGNAL_SRC) -libc-nomulti-y+=$(SIGNAL_OBJ) +libc-multi-y+=$(SIGNAL_SRC) objclean-y+=signal_objclean diff --git a/libc/stdio/Makefile.in b/libc/stdio/Makefile.in index 9a98afe8a..a928e0872 100644 --- a/libc/stdio/Makefile.in +++ b/libc/stdio/Makefile.in @@ -83,6 +83,14 @@ endif CSRC+=$(CUSRC) $(CWSRC) +ifneq ($(DOMULTI),n) +STDIO_CSRC_NO_MULTI:=fwrite.c fputc.c fputs.c fprintf.c _fpmaxtostr.c +CSRC:=$(filter-out $(STDIO_CSRC_NO_MULTI),$(CSRC)) +endif +STDIO_MOBJ1_NO_MULTI:=vfprintf.o vfwprintf.o register_printf_function.o +STDIO_MOBJ2_NO_MULTI:=vfscanf.o vfwscanf.o fscanf.o +STDIO_MOBJ_NO_MULTI:=$(STDIO_MOBJ1_NO_MULTI) $(STDIO_MOBJ2_NO_MULTI) + STDIO_DIR:=$(top_srcdir)libc/stdio STDIO_OUT:=$(top_builddir)libc/stdio @@ -101,20 +109,23 @@ STDIO_MOBJ2:=$(patsubst %.o,$(STDIO_OUT)/%.o,$(MOBJ2)) STDIO_MSRC:=$(STDIO_MSRC1) $(STDIO_MSRC2) STDIO_MOBJ:=$(STDIO_MOBJ1) $(STDIO_MOBJ2) -#STDIO_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STDIO_MOBJ)))) +STDIO_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(filter-out $(STDIO_MOBJ_NO_MULTI),$(notdir $(STDIO_MOBJ))))) STDIO_OBJS:=$(STDIO_OBJ) $(STDIO_MOBJ) $(STDIO_CUOBJ) $(STDIO_CLOBJ) -#STDIO_NO_MULTI:=$(STDIO_CUOBJ) $(STDIO_CLOBJ) +STDIO_NO_MULTI:=$(STDIO_CUOBJ) $(STDIO_CLOBJ) # these need special handling or rewrite to support multi-build # CUOBJ -%_unlocked.o %_unlocked.os: %.c +%_unlocked.o: %.c + $(compile.c) -D__DO_UNLOCKED + +%_unlocked.os: %.c $(compile.c) -D__DO_UNLOCKED # need this, else the other %64 files will get false rules $(STDIO_CLSRC): $(STDIO_OUT)/%64.c : $(STDIO_DIR)/%.c - cp $< $@ + @cp $< $@ $(STDIO_CLOBJ): %.o : %.c $(compile.c) -D__DO_LARGEFILE @@ -122,22 +133,28 @@ $(STDIO_CLOBJ): %.o : %.c $(STDIO_CLOBJ:.o=.os): %.os : %.c $(compile.c) -D__DO_LARGEFILE -$(STDIO_MOBJ1) $(STDIO_MOBJ1:.o=.os): $(STDIO_MSRC1) +$(STDIO_MOBJ1): $(STDIO_MSRC1) + $(compile.m) + +$(STDIO_MOBJ1:.o=.os): $(STDIO_MSRC1) + $(compile.m) + +$(STDIO_MOBJ2): $(STDIO_MSRC2) $(compile.m) -$(STDIO_MOBJ2) $(STDIO_MOBJ2:.o=.os): $(STDIO_MSRC2) +$(STDIO_MOBJ2:.o=.os): $(STDIO_MSRC2) $(compile.m) libc-a-y+=$(STDIO_OBJS) -libc-a-pic-y+=$(STDIO_OBJS:.o=.os) libc-so-y+=$(STDIO_OBJS:.o=.os) -#CFLAGS-multi-y+=$(STDIO_DEF) -#libc-multi-y+=$(STDIO_SRC) $(STDIO_MSRC) -#libc-nomulti-y+=$(STDIO_NO_MULTI) -libc-nomulti-y+=$(STDIO_OBJS) +CFLAGS-multi-y+=$(STDIO_DEF) +libc-multi-y+=$(STDIO_SRC) $(STDIO_MSRC) +libc-nomulti-y+=$(STDIO_NO_MULTI) +libc-nomulti-y+=$(patsubst %.c,$(STDIO_OUT)/%.o,$(STDIO_CSRC_NO_MULTI)) +libc-nomulti-y+=$(patsubst %.o,$(STDIO_OUT)/%.o,$(STDIO_MOBJ_NO_MULTI)) objclean-y+=stdio_objclean stdio_objclean: - $(RM) $(STDIO_OUT)/*.{o,os} + $(RM) $(STDIO_OUT)/*.{o,os} $(STDIO_OUT)/*64.c diff --git a/libc/stdlib/Makefile.in b/libc/stdlib/Makefile.in index 236d20cda..52527e1e5 100644 --- a/libc/stdlib/Makefile.in +++ b/libc/stdlib/Makefile.in @@ -67,6 +67,10 @@ ifeq ($(UCLIBC_HAS_FLOATS),y) CSRC+=drand48.c drand48_r.c erand48.c erand48_r.c endif +STDLIB_MOBJ1_NO_MULTI:=_stdlib_strto_l.o _stdlib_strto_ll.o +STDLIB_MOBJ2_NO_MULTI:=strtod.o strtof.o __strtofpmax.o +STDLIB_MOBJ_NO_MULTI:=$(STDLIB_MOBJ1_NO_MULTI) $(STDLIB_MOBJ2_NO_MULTI) + STDLIB_DIR:=$(top_srcdir)libc/stdlib STDLIB_OUT:=$(top_builddir)libc/stdlib @@ -85,25 +89,40 @@ STDLIB_MOBJ2x:=$(patsubst %.o,$(STDLIB_OUT)/%.o,$(MOBJ2x)) STDLIB_MSRC:=$(STDLIB_MSRC1) $(STDLIB_MSRC2) $(STDLIB_MSRC3) STDLIB_MOBJ:=$(STDLIB_MOBJ1) $(STDLIB_MOBJ2) $(STDLIB_MOBJ3) -STDLIB_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STDLIB_MOBJ)))) +STDLIB_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(filter-out $(STDLIB_MOBJ_NO_MULTI),$(notdir $(STDLIB_MOBJ))))) STDLIB_MOBJx:=$(STDLIB_MOBJ1x) $(STDLIB_MOBJ2x) STDLIB_OBJS:=$(STDLIB_OBJ) $(STDLIB_MOBJ) $(STDLIB_MOBJx) -$(STDLIB_MOBJ1) $(STDLIB_MOBJ1:.o=.os): $(STDLIB_MSRC1) +$(STDLIB_MOBJ1): $(STDLIB_MSRC1) + $(compile.m) + +$(STDLIB_MOBJ1:.o=.os): $(STDLIB_MSRC1) $(compile.m) -$(STDLIB_MOBJ2) $(STDLIB_MOBJ2:.o=.os): $(STDLIB_MSRC2) +$(STDLIB_MOBJ2): $(STDLIB_MSRC2) $(compile.m) -$(STDLIB_MOBJ3) $(STDLIB_MOBJ3:.o=.os) $(STDLIB_OUT)/atexit.os: $(STDLIB_MSRC3) +$(STDLIB_MOBJ2:.o=.os): $(STDLIB_MSRC2) $(compile.m) -$(STDLIB_MOBJ1x) $(STDLIB_MOBJ1x:.o=.os): $(STDLIB_MSRC1) +$(STDLIB_MOBJ3): $(STDLIB_MSRC3) + $(compile.m) + +$(STDLIB_MOBJ3:.o=.os) $(STDLIB_OUT)/atexit.os: $(STDLIB_MSRC3) + $(compile.m) + +$(STDLIB_MOBJ1x): $(STDLIB_MSRC1) + $(compile.m) -D__UCLIBC_DO_XLOCALE + +$(STDLIB_MOBJ1x:.o=.os): $(STDLIB_MSRC1) + $(compile.m) -D__UCLIBC_DO_XLOCALE + +$(STDLIB_MOBJ2x): $(STDLIB_MSRC2) $(compile.m) -D__UCLIBC_DO_XLOCALE -$(STDLIB_MOBJ2x) $(STDLIB_MOBJ2x:.o=.os): $(STDLIB_MSRC2) +$(STDLIB_MOBJ2x:.o=.os): $(STDLIB_MSRC2) $(compile.m) -D__UCLIBC_DO_XLOCALE libc-a-y+=$(STDLIB_OBJS) @@ -112,12 +131,10 @@ libc-so-y+=$(STDLIB_OBJS:.o=.os) # this should always be the PIC version, because it could be used in shared libs libc-nonshared-y+=$(STDLIB_OUT)/atexit.os -#CFLAGS-multi-y+=$(STDLIB_DEF) -#libc-multi-y+=$(STDLIB_SRC) $(STDLIB_MSRC) -#libc-nomulti-y+=$(STDLIB_MOBJx) -#libc-multi-y+=$(STDLIB_MSRC) -#libc-nomulti-y+=$(STDLIB_OBJ) $(STDLIB_MOBJx) -libc-nomulti-y+=$(STDLIB_OBJS) +CFLAGS-multi-y+=$(STDLIB_DEF) +libc-multi-y+=$(STDLIB_SRC) $(STDLIB_MSRC) +libc-nomulti-y+=$(patsubst %.o,$(STDLIB_OUT)/%.o,$(STDLIB_MOBJ_NO_MULTI)) +libc-nomulti-$(UCLIBC_HAS_XLOCALE)+=$(STDLIB_MOBJx) objclean-y+=stdlib_objclean diff --git a/libc/stdlib/malloc-simple/Makefile.in b/libc/stdlib/malloc-simple/Makefile.in index 42b302071..7add9deaa 100644 --- a/libc/stdlib/malloc-simple/Makefile.in +++ b/libc/stdlib/malloc-simple/Makefile.in @@ -16,13 +16,15 @@ STDLIB_MALLOC_SIMPLE_MOBJ:=$(patsubst %.o,$(STDLIB_MALLOC_SIMPLE_OUT)/%.o,$(MOBJ STDLIB_MALLOC_SIMPLE_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STDLIB_MALLOC_SIMPLE_MOBJ)))) libc-a-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_MOBJ) -libc-a-pic-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_MOBJ:.o=.os) libc-so-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_MOBJ:.o=.os) CFLAGS-multi-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_DEF) libc-multi-$(MALLOC_SIMPLE)+=$(STDLIB_MALLOC_SIMPLE_MSRC) -$(STDLIB_MALLOC_SIMPLE_MOBJ) $(STDLIB_MALLOC_SIMPLE_MOBJ:.o=.os): $(STDLIB_MALLOC_SIMPLE_MSRC) +$(STDLIB_MALLOC_SIMPLE_MOBJ): $(STDLIB_MALLOC_SIMPLE_MSRC) + $(compile.m) + +$(STDLIB_MALLOC_SIMPLE_MOBJ:.o=.os): $(STDLIB_MALLOC_SIMPLE_MSRC) $(compile.m) objclean-y+=stdlib_malloc_simple_objclean diff --git a/libc/stdlib/malloc-standard/Makefile.in b/libc/stdlib/malloc-standard/Makefile.in index e8c34b544..e566dad8c 100644 --- a/libc/stdlib/malloc-standard/Makefile.in +++ b/libc/stdlib/malloc-standard/Makefile.in @@ -22,7 +22,6 @@ STDLIB_MALLOC_STANDARD_SRC:=$(patsubst %.c,$(STDLIB_MALLOC_STANDARD_DIR)/%.c,$(C STDLIB_MALLOC_STANDARD_OBJ:=$(patsubst %.c,$(STDLIB_MALLOC_STANDARD_OUT)/%.o,$(CSRC)) libc-a-$(MALLOC_STANDARD)+=$(STDLIB_MALLOC_STANDARD_OBJ) -libc-a-pic-$(MALLOC_STANDARD)+=$(STDLIB_MALLOC_STANDARD_OBJ:.o=.os) libc-so-$(MALLOC_STANDARD)+=$(STDLIB_MALLOC_STANDARD_OBJ:.o=.os) libc-multi-$(MALLOC_STANDARD)+=$(STDLIB_MALLOC_STANDARD_SRC) diff --git a/libc/stdlib/malloc/Makefile.in b/libc/stdlib/malloc/Makefile.in index 6a0e3cee3..cf61011a4 100644 --- a/libc/stdlib/malloc/Makefile.in +++ b/libc/stdlib/malloc/Makefile.in @@ -26,11 +26,9 @@ STDLIB_MALLOC_SRC:=$(patsubst %.c,$(STDLIB_MALLOC_DIR)/%.c,$(CSRC)) STDLIB_MALLOC_OBJ:=$(patsubst %.c,$(STDLIB_MALLOC_OUT)/%.o,$(CSRC)) libc-a-$(MALLOC)+=$(STDLIB_MALLOC_OBJ) -libc-a-pic-$(MALLOC)+=$(STDLIB_MALLOC_OBJ:.o=.os) libc-so-$(MALLOC)+=$(STDLIB_MALLOC_OBJ:.o=.os) -#libc-multi-$(MALLOC)+=$(STDLIB_MALLOC_SRC) -libc-nomulti-$(MALLOC)+=$(STDLIB_MALLOC_OBJ) +libc-multi-$(MALLOC)+=$(STDLIB_MALLOC_SRC) objclean-y+=stdlib_malloc_objclean diff --git a/libc/string/Makefile.in b/libc/string/Makefile.in index 820baec1c..0adcaee39 100644 --- a/libc/string/Makefile.in +++ b/libc/string/Makefile.in @@ -10,32 +10,26 @@ include $(top_srcdir)libc/string/generic/Makefile.in MSRC:=wstring.c -MOBJ:= basename.o bcopy.o bzero.o dirname.o ffs.o memccpy.o memchr.o memcmp.o \ - memcpy.o memmove.o mempcpy.o memrchr.o memset.o rawmemchr.o stpcpy.o \ - stpncpy.o strcasecmp.o strcasestr.o strcat.o strchrnul.o strchr.o \ - strcmp.o strcpy.o strcspn.o strdup.o strlen.o strncasecmp.o strncat.o \ - strncmp.o strncpy.o strndup.o strnlen.o strpbrk.o strrchr.o strsep.o \ - strspn.o strstr.o strtok.o strtok_r.o strerror.o __xpg_strerror_r.o \ +MOBJ:= basename.o bcopy.o bzero.o dirname.o ffs.o memccpy.o \ + memrchr.o rawmemchr.o strcasecmp.o strcasestr.o \ + strncasecmp.o strndup.o strsep.o \ + strtok.o strerror.o __xpg_strerror_r.o \ _string_syserrmsgs.o __glibc_strerror_r.o \ _string_syssigmsgs.o sys_siglist.o strsignal.o psignal.o \ - __xpg_basename.o strlcat.o strlcpy.o sys_errlist.o memmem.o + __xpg_basename.o strlcat.o sys_errlist.o memmem.o -MOBJW= +MOBJW:= ifeq ($(UCLIBC_HAS_WCHAR),y) -MOBJW= wcscasecmp.o wcscat.o wcschrnul.o wcschr.o wcscmp.o wcscpy.o wcscspn.o \ - wcsdup.o wcslen.o wcsncasecmp.o wcsncat.o wcsncmp.o wcsncpy.o \ - wcsnlen.o wcspbrk.o wcsrchr.o wcsspn.o wcsstr.o wcstok.o wmemchr.o \ - wmemcmp.o wmemcpy.o wmemmove.o wmempcpy.o wmemset.o wcpcpy.o wcpncpy.o \ - __wcslcpy.o \ +MOBJW:= wcscasecmp.o wcsncasecmp.o \ wcsxfrm.o strxfrm.o # wcscoll strcoll.o endif -MOBJx= -MOBJWx= +MOBJx:= +MOBJWx:= ifeq ($(UCLIBC_HAS_XLOCALE),y) -MOBJx+=strcasecmp_l.o strncasecmp_l.o +MOBJx:=strcasecmp_l.o strncasecmp_l.o ifeq ($(UCLIBC_HAS_WCHAR),y) -MOBJWx+=wcscasecmp_l.o wcsncasecmp_l.o wcsxfrm_l.o strxfrm_l.o +MOBJWx:=wcscasecmp_l.o wcsncasecmp_l.o wcsxfrm_l.o strxfrm_l.o endif endif @@ -56,38 +50,71 @@ endif STRING_DIR:=$(top_srcdir)libc/string STRING_OUT:=$(top_builddir)libc/string +STRING_WSRC:=$(filter-out $(STRING_DIR)/wstring.c,$(wildcard $(STRING_DIR)/w*.c)) +STRING_CSRC:=$(filter-out $(STRING_DIR)/wstring.c $(STRING_WSRC),$(wildcard $(STRING_DIR)/*.c)) + +ifeq ($(UCLIBC_HAS_STRING_ARCH_OPT),y) +ifneq ($(strip $(STRING_ARCH_OBJS)),) +MOBJ:=$(filter-out $(notdir $(STRING_ARCH_OBJS)),$(MOBJ)) +STRING_CSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_ARCH_OBJS))),$(STRING_CSRC)) +STRING_WSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_ARCH_OBJS))),$(STRING_WSRC)) +endif +endif + +ifeq ($(UCLIBC_HAS_STRING_GENERIC_OPT),y) +ifneq ($(strip $(STRING_GENERIC_OBJS)),) +MOBJ:=$(filter-out $(notdir $(STRING_GENERIC_OBJS)),$(MOBJ)) +STRING_CSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_GENERIC_OBJS))),$(STRING_CSRC)) +STRING_WSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_GENERIC_OBJS))),$(STRING_WSRC)) +endif +endif + + +STRING_COBJ:=$(patsubst $(STRING_DIR)/%.c,$(STRING_OUT)/%.o,$(STRING_CSRC)) +ifeq ($(UCLIBC_HAS_WCHAR),y) +STRING_WOBJ:=$(patsubst $(STRING_DIR)/%.c,$(STRING_OUT)/%.o,$(STRING_WSRC)) +endif STRING_MSRC:=$(patsubst %.c,$(STRING_DIR)/%.c,$(MSRC)) STRING_MOBJ:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJ)) -STRING_MOBJW=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJW)) -STRING_MOBJx=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJx)) -STRING_MOBJWx=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJWx)) +STRING_MOBJW:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJW)) +STRING_MOBJx:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJx)) +STRING_MOBJWx:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJWx)) + +STRING_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_MOBJ)))) -#STRING_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_MOBJ)))) +STRING_Wx:=$(STRING_MOBJW) $(STRING_MOBJx) $(STRING_MOBJWx) +STRING_OBJS:=$(STRING_COBJ) $(STRING_WOBJ) $(STRING_MOBJ) $(STRING_Wx) -STRING_Wx=$(STRING_MOBJW) $(STRING_MOBJx) $(STRING_MOBJWx) -STRING_OBJS:=$(STRING_MOBJ) $(STRING_Wx) +$(STRING_MOBJ): $(STRING_MSRC) + $(compile.m) -$(STRING_MOBJ) $(STRING_MOBJ:.o=.os): $(STRING_MSRC) +$(STRING_MOBJ:.o=.os): $(STRING_MSRC) $(compile.m) -$(STRING_MOBJW) $(STRING_MOBJW:.o=.os): $(STRING_MSRC) +$(STRING_MOBJW): $(STRING_MSRC) $(compile.m) -DWANT_WIDE -$(STRING_MOBJx) $(STRING_MOBJx:.o=.os): $(STRING_MSRC) +$(STRING_MOBJW:.o=.os): $(STRING_MSRC) + $(compile.m) -DWANT_WIDE + +$(STRING_MOBJx): $(STRING_MSRC) + $(compile.m) -D__UCLIBC_DO_XLOCALE + +$(STRING_MOBJx:.o=.os): $(STRING_MSRC) $(compile.m) -D__UCLIBC_DO_XLOCALE -$(STRING_MOBJWx) $(STRING_MOBJWx:.o=.os): $(STRING_MSRC) +$(STRING_MOBJWx): $(STRING_MSRC) + $(compile.m) -DWANT_WIDE -D__UCLIBC_DO_XLOCALE + +$(STRING_MOBJWx:.o=.os): $(STRING_MSRC) $(compile.m) -DWANT_WIDE -D__UCLIBC_DO_XLOCALE libc-a-y+=$(STRING_OBJS) -libc-a-pic-y+=$(STRING_OBJS:.o=.os) libc-so-y+=$(STRING_OBJS:.o=.os) -# multi does not work here, because arch/Makefile.in uses the same L_* defines -#CFLAGS-multi-y+=$(STRING_DEF) -#libc-multi-y+=$(STRING_MSRC) -#libc-nomulti-y+=$(STRING_Wx) -libc-nomulti-y+=$(STRING_OBJS) +CFLAGS-multi-y+=$(STRING_DEF) +libc-multi-y+=$(STRING_MSRC) $(STRING_CSRC) $(STRING_WSRC) +libc-nomulti-y+=$(STRING_Wx) objclean-y+=string_objclean diff --git a/libc/string/arm/Makefile.arch b/libc/string/arm/Makefile.arch index f4069d9d1..4b2550ee2 100644 --- a/libc/string/arm/Makefile.arch +++ b/libc/string/arm/Makefile.arch @@ -19,7 +19,7 @@ STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ) libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os) -libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) +libc-nomulti-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) objclean-y+=string_arch_objclean diff --git a/libc/string/frv/Makefile.arch b/libc/string/frv/Makefile.arch index 5b5230088..a864e8d1a 100644 --- a/libc/string/frv/Makefile.arch +++ b/libc/string/frv/Makefile.arch @@ -19,7 +19,7 @@ STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ) libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os) -libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) +libc-nomulti-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) objclean-y+=string_arch_objclean diff --git a/libc/string/generic/Makefile.in b/libc/string/generic/Makefile.in index 2273181d5..82910172a 100644 --- a/libc/string/generic/Makefile.in +++ b/libc/string/generic/Makefile.in @@ -9,23 +9,19 @@ STRING_GENERIC_DIR:=$(top_srcdir)libc/string/generic STRING_GENERIC_OUT:=$(top_builddir)libc/string/generic STRING_GENERIC_SRC:=$(wildcard $(STRING_GENERIC_DIR)/*.c) -MOBJ:=$(patsubst $(STRING_GENERIC_DIR)/%.c,%.o,$(STRING_GENERIC_SRC)) ifeq ($(UCLIBC_HAS_STRING_ARCH_OPT),y) ifneq ($(strip $(STRING_ARCH_OBJS)),) -MOBJ:=$(filter-out $(notdir $(STRING_ARCH_OBJS)),$(MOBJ)) +STRING_GENERIC_SRC:=$(filter-out $(patsubst %.o,$(STRING_GENERIC_DIR)/%.c,$(notdir $(STRING_ARCH_OBJS))),$(STRING_GENERIC_SRC)) endif endif -STRING_GENERIC_OBJ:=$(patsubst %.o,$(STRING_GENERIC_OUT)/%.o,$(MOBJ)) - -STRING_GENERIC_OBJS:=$(STRING_GENERIC_OBJ) +STRING_GENERIC_OBJS:=$(patsubst $(STRING_GENERIC_DIR)/%.c,$(STRING_GENERIC_OUT)/%.o,$(STRING_GENERIC_SRC)) libc-a-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_OBJS) libc-so-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_OBJS:.o=.os) -#libc-multi-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_SRC) -libc-nomulti-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_OBJS) +libc-multi-$(UCLIBC_HAS_STRING_GENERIC_OPT)+=$(STRING_GENERIC_SRC) objclean-y+=string_generic_objclean diff --git a/libc/string/i386/Makefile.arch b/libc/string/i386/Makefile.arch index 65f461cbb..27a29dd16 100644 --- a/libc/string/i386/Makefile.arch +++ b/libc/string/i386/Makefile.arch @@ -5,29 +5,18 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -MSRC:=string.c -MOBJ:= strcpy.o strncpy.o strcat.o strncat.o strcmp.o \ - strncmp.o strchr.o strrchr.o strlen.o strnlen.o \ - memcpy.o memmove.o memchr.o memset.o - STRING_ARCH_DIR:=$(top_srcdir)libc/string/i386 STRING_ARCH_OUT:=$(top_builddir)libc/string/i386 -STRING_ARCH_MSRC:=$(patsubst %.c,$(STRING_ARCH_DIR)/%.c,$(MSRC)) -STRING_ARCH_MOBJ:=$(patsubst %.o,$(STRING_ARCH_OUT)/%.o,$(MOBJ)) - -STRING_ARCH_OBJS:=$(STRING_ARCH_MOBJ) - -STRING_ARCH_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_ARCH_OBJS)))) +STRING_ARCH_CSRC:=$(wildcard $(STRING_ARCH_DIR)/*.c) +STRING_ARCH_COBJ:=$(patsubst $(STRING_ARCH_DIR)/%.c,$(STRING_ARCH_OUT)/%.o,$(STRING_ARCH_CSRC)) -$(STRING_ARCH_MOBJ) $(STRING_ARCH_MOBJ:.o=.os): $(STRING_ARCH_MSRC) - $(compile.m) +STRING_ARCH_OBJS:=$(STRING_ARCH_COBJ) libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os) -CFLAGS-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_DEF) -libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_MSRC) +libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_CSRC) objclean-y+=string_arch_objclean diff --git a/libc/string/mips/Makefile.arch b/libc/string/mips/Makefile.arch index 8aebbe27b..a110c291e 100644 --- a/libc/string/mips/Makefile.arch +++ b/libc/string/mips/Makefile.arch @@ -18,7 +18,7 @@ STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ) libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os) -libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) +libc-nomulti-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) objclean-y+=string_arch_objclean diff --git a/libc/string/powerpc/Makefile.arch b/libc/string/powerpc/Makefile.arch index 97ae14e7f..47a8dac1d 100644 --- a/libc/string/powerpc/Makefile.arch +++ b/libc/string/powerpc/Makefile.arch @@ -5,27 +5,18 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -MSRC:=string.c -MOBJ:=memcpy.o memmove.o memset.o bzero.o - STRING_ARCH_DIR:=$(top_srcdir)libc/string/powerpc STRING_ARCH_OUT:=$(top_builddir)libc/string/powerpc -STRING_ARCH_MSRC:=$(patsubst %.c,$(STRING_ARCH_DIR)/%.c,$(MSRC)) -STRING_ARCH_MOBJ:=$(patsubst %.o,$(STRING_ARCH_OUT)/%.o,$(MOBJ)) - -STRING_ARCH_OBJS:=$(STRING_ARCH_MOBJ) - -STRING_ARCH_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_ARCH_MOBJ)))) +STRING_ARCH_CSRC:=$(wildcard $(STRING_ARCH_DIR)/*.c) +STRING_ARCH_COBJ:=$(patsubst $(STRING_ARCH_DIR)/%.c,$(STRING_ARCH_OUT)/%.o,$(STRING_ARCH_CSRC)) -$(STRING_ARCH_MOBJ) $(STRING_ARCH_MOBJ:.o=.os): $(STRING_ARCH_MSRC) - $(compile.m) +STRING_ARCH_OBJS:=$(STRING_ARCH_COBJ) libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os) -CFLAGS-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_DEF) -libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_MSRC) +libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_CSRC) objclean-y+=string_arch_objclean diff --git a/libc/string/sh64/Makefile.arch b/libc/string/sh64/Makefile.arch index b691ae1d7..f246864f6 100644 --- a/libc/string/sh64/Makefile.arch +++ b/libc/string/sh64/Makefile.arch @@ -19,7 +19,7 @@ STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ) libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os) -libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) +libc-nomulti-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) objclean-y+=string_arch_objclean diff --git a/libc/string/sh64/memcpy.S b/libc/string/sh64/memcpy.S index 361e050db..0ee386a96 100644 --- a/libc/string/sh64/memcpy.S +++ b/libc/string/sh64/memcpy.S @@ -38,10 +38,13 @@ .section .text..SHmedia32,"ax" .globl memcpy - .type memcpy, @function + .set memcpy,__memcpy + .globl __memcpy + .hidden __memcpy + .type __memcpy, @function .align 5 -memcpy: +__memcpy: #define LDUAQ(P,O,D0,D1) ldlo.q P,O,D0; ldhi.q P,O+7,D1 #define STUAQ(P,O,D0,D1) stlo.q P,O,D0; sthi.q P,O+7,D1 @@ -198,5 +201,4 @@ Loop_ua: stlo.q r5, 8, r1 blink tr1, r63 - .size memcpy, . - memcpy - + .size __memcpy,.-__memcpy diff --git a/libc/string/sh64/memset.S b/libc/string/sh64/memset.S index 714fa3fb3..e1679230b 100644 --- a/libc/string/sh64/memset.S +++ b/libc/string/sh64/memset.S @@ -19,11 +19,14 @@ .section .text..SHmedia32,"ax" .globl memset - .type memset, @function + .set memset,__memset + .globl __memset + .hidden __memset + .type __memset, @function .align 5 -memset: +__memset: pta/l multiquad, tr0 andi r2, 7, r22 ptabs r18, tr2 @@ -88,5 +91,4 @@ loop: sthi.q r5, -1, r3 blink tr2,r63 - .size memset, . - memset - + .size __memset,.-__memset diff --git a/libc/string/sh64/strcpy.S b/libc/string/sh64/strcpy.S index 273e9147c..faa071c50 100644 --- a/libc/string/sh64/strcpy.S +++ b/libc/string/sh64/strcpy.S @@ -16,10 +16,13 @@ .section .text..SHmedia32,"ax" .globl strcpy - .type strcpy, @function + .set strcpy,__strcpy + .globl __strcpy + .hidden __strcpy + .type __strcpy, @function .align 5 -strcpy: +__strcpy: pta/l shortstring,tr1 ldlo.q r3,0,r4 @@ -94,5 +97,4 @@ loop: addi r0, 8, r0 blink tr1, r63 // shortstring - .size strcpy, . - strcpy - + .size __strcpy,.-__strcpy diff --git a/libc/string/sh64/strlen.S b/libc/string/sh64/strlen.S index 57d15a29a..0f99488d5 100644 --- a/libc/string/sh64/strlen.S +++ b/libc/string/sh64/strlen.S @@ -32,10 +32,13 @@ .section .text..SHmedia32,"ax" .globl strlen - .type strlen,@function + .set strlen,__strlen + .globl __strlen + .hidden __strlen + .type __strlen,@function .balign 16 -strlen: +__strlen: ptabs r18, tr4 /* @@ -56,5 +59,4 @@ loop: or r0, r63, r2 blink tr4, r63 - .size strlen, . - strlen - + .size __strlen,.-__strlen diff --git a/libc/string/sparc/Makefile.arch b/libc/string/sparc/Makefile.arch index 726140c1b..1acd93ad9 100644 --- a/libc/string/sparc/Makefile.arch +++ b/libc/string/sparc/Makefile.arch @@ -19,7 +19,8 @@ STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ) $(STRING_ARCH_SOBJ) libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os) -libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) $(STRING_ARCH_SSRC) +libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) +libc-nomulti-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SOBJ) objclean-y+=string_arch_objclean diff --git a/libc/string/sparc/sparc32/memchr.S b/libc/string/sparc/sparc32/memchr.S index c00df2427..e8f44f176 100644 --- a/libc/string/sparc/sparc32/memchr.S +++ b/libc/string/sparc/sparc32/memchr.S @@ -63,6 +63,9 @@ 1: retl sub %o0, 1, %o0 +.globl memchr +.set memchr,__memchr +.hidden __memchr ENTRY(__memchr) andcc %o1, 0xff, %o1 sll %o1, 8, %g6 @@ -138,7 +141,6 @@ ENTRY(__memchr) sub %o0, 4, %o0 END(__memchr) -weak_alias (__memchr, memchr) #if !__BOUNDED_POINTERS__ weak_alias (__memchr, __ubp_memchr) #endif diff --git a/libc/string/sparc/sparc32/memcpy.S b/libc/string/sparc/sparc32/memcpy.S index d0a80887b..b2a9b1602 100644 --- a/libc/string/sparc/sparc32/memcpy.S +++ b/libc/string/sparc/sparc32/memcpy.S @@ -161,12 +161,19 @@ b 3f sub %o0, 2, %o0 -ENTRY(bcopy) +.globl bcopy +.set bcopy,__bcopy +.hidden __bcopy +ENTRY(__bcopy) mov %o0, %o3 mov %o1, %o0 mov %o3, %o1 -END(bcopy) -ENTRY(memmove) +END(__bcopy) + +.globl memmove +.set memmove,__memmove +.hidden __memmove +ENTRY(__memmove) cmp %o0, %o1 st %o0, [%sp + 64] bleu 9f @@ -446,9 +453,12 @@ ENTRY(memmove) sub %o2, 2, %o2 b 3f add %o0, 2, %o0 -END(memmove) +END(__memmove) -ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ +.globl memcpy +.set memcpy,__memcpy +.hidden __memcpy +ENTRY(__memcpy) /* %o0=dst %o1=src %o2=len */ sub %o0, %o1, %o4 st %o0, [%sp + 64] 9: andcc %o4, 3, %o5 @@ -963,4 +973,4 @@ ENTRY(memcpy) /* %o0=dst %o1=src %o2=len */ sub %o7, %o4, %o5 110: retl sub %o7, %g6, %o5 -END(memcpy) +END(__memcpy) diff --git a/libc/string/sparc/sparc32/memset.S b/libc/string/sparc/sparc32/memset.S index 02cebb791..ef8a5b634 100644 --- a/libc/string/sparc/sparc32/memset.S +++ b/libc/string/sparc/sparc32/memset.S @@ -62,7 +62,10 @@ ENTRY(__bzero) sub %o0, %o2, %o0 END(__bzero) -ENTRY(memset) +.globl memset +.set memset,__memset +.hidden __memset +ENTRY(__memset) and %o1, 0xff, %g3 sll %g3, 8, %g2 or %g3, %g2, %g3 @@ -147,6 +150,6 @@ ENTRY(memset) stb %g3, [%o0 + 6] 0: retl nop -END(memset) +END(__memset) weak_alias (__bzero, bzero) diff --git a/libc/string/sparc/sparc32/stpcpy.S b/libc/string/sparc/sparc32/stpcpy.S index b7e7a00f8..97a5dce0e 100644 --- a/libc/string/sparc/sparc32/stpcpy.S +++ b/libc/string/sparc/sparc32/stpcpy.S @@ -65,6 +65,9 @@ 1: retl add %o0, -1, %o0 +.globl stpcpy +.set stpcpy,__stpcpy +.hidden __stpcpy ENTRY(__stpcpy) andcc %o1, 3, %g0 bne 10b @@ -157,5 +160,3 @@ ENTRY(__stpcpy) 19: retl nop END(__stpcpy) - -weak_alias (__stpcpy, stpcpy) diff --git a/libc/string/sparc/sparc32/strcat.S b/libc/string/sparc/sparc32/strcat.S index e4ff21d01..8efe6aebf 100644 --- a/libc/string/sparc/sparc32/strcat.S +++ b/libc/string/sparc/sparc32/strcat.S @@ -91,7 +91,10 @@ b 3f sub %o0, 1, %o0 -ENTRY(strcat) +.globl strcat +.set strcat,__strcat +.hidden __strcat +ENTRY(__strcat) mov %o0, %g2 andcc %o0, 3, %g0 bne 11b @@ -343,4 +346,4 @@ ENTRY(strcat) srl %o5, 16, %o4 retl mov %g2, %o0 -END(strcat) +END(__strcat) diff --git a/libc/string/sparc/sparc32/strchr.S b/libc/string/sparc/sparc32/strchr.S index f18a8abc7..450b4ffe6 100644 --- a/libc/string/sparc/sparc32/strchr.S +++ b/libc/string/sparc/sparc32/strchr.S @@ -67,7 +67,10 @@ 1: retl sub %o0, 1, %o0 -ENTRY(strchr) +.globl strchr +.set strchr,__strchr +.hidden __strchr +ENTRY(__strchr) andcc %o1, 0xff, %o1 be 12f sll %o1, 8, %o2 @@ -215,9 +218,12 @@ ENTRY(strchr) 1: or %o4, %lo(0x01010101), %o2 b 7f ld [%o0], %g4 -END(strchr) +END(__strchr) -ENTRY(strrchr) +.globl strrchr +.set strrchr,__strrchr +.hidden __strrchr +ENTRY(__strrchr) andcc %o1, 0xff, %o1 clr %o5 be 12b @@ -274,7 +280,7 @@ ENTRY(strrchr) ld [%o0], %g4 9: retl mov %o5, %o0 -END(strrchr) +END(__strrchr) weak_alias (strchr, index) weak_alias (strrchr, rindex) diff --git a/libc/string/sparc/sparc32/strcmp.S b/libc/string/sparc/sparc32/strcmp.S index d6cf9e7d3..2ae1b2ef4 100644 --- a/libc/string/sparc/sparc32/strcmp.S +++ b/libc/string/sparc/sparc32/strcmp.S @@ -74,7 +74,10 @@ 2: retl mov %o4, %o0 -ENTRY(strcmp) +.globl strcmp +.set strcmp,__strcmp +.hidden __strcmp +ENTRY(__strcmp) andcc %o0, 3, %g0 bne 10b sethi %hi(0x80808080), %g1 @@ -252,4 +255,4 @@ ENTRY(strcmp) ld [%i0], %i4 jmpl %i7 + 8, %g0 restore %g4, %g0, %o0 -END(strcmp) +END(__strcmp) diff --git a/libc/string/sparc/sparc32/strcpy.S b/libc/string/sparc/sparc32/strcpy.S index c368580ba..6dc3517b5 100644 --- a/libc/string/sparc/sparc32/strcpy.S +++ b/libc/string/sparc/sparc32/strcpy.S @@ -63,7 +63,10 @@ b 6f andcc %o0, 3, %g3 -ENTRY(strcpy) +.globl strcpy +.set strcpy,__strcpy +.hidden __strcpy +ENTRY(__strcpy) mov %o0, %g2 andcc %o1, 3, %g0 bne 1b @@ -269,4 +272,4 @@ ENTRY(strcpy) srl %o5, 16, %o4 retl mov %g2, %o0 -END(strcpy) +END(__strcpy) diff --git a/libc/string/sparc/sparc32/strlen.S b/libc/string/sparc/sparc32/strlen.S index cc455ac89..116700e24 100644 --- a/libc/string/sparc/sparc32/strlen.S +++ b/libc/string/sparc/sparc32/strlen.S @@ -63,7 +63,10 @@ 3: retl mov 2, %o0 -ENTRY(strlen) +.globl strlen +.set strlen,__strlen +.hidden __strlen +ENTRY(__strlen) mov %o0, %o1 andcc %o0, 3, %g0 bne 10b @@ -98,4 +101,4 @@ ENTRY(strlen) add %o4, 1, %o4 13: retl sub %o4, %o1, %o0 -END(strlen) +END(__strlen) diff --git a/libc/string/sparc/sparc64/memcpy.S b/libc/string/sparc/sparc64/memcpy.S index 660fae6b2..47f812a1e 100644 --- a/libc/string/sparc/sparc64/memcpy.S +++ b/libc/string/sparc/sparc64/memcpy.S @@ -191,7 +191,10 @@ .text .align 32 -ENTRY(bcopy) +.globl bcopy +.set bcopy,__bcopy +.hidden __bcopy +ENTRY(__bcopy) sub %o1, %o0, %o4 /* IEU0 Group */ mov %o0, %g3 /* IEU1 */ cmp %o4, %o2 /* IEU1 Group */ @@ -205,7 +208,7 @@ ENTRY(bcopy) add %o0, %o2, %o0 /* IEU0 */ retl nop -END(bcopy) +END(__bcopy) .align 32 200: be,pt %xcc, 201f /* CTI */ @@ -503,7 +506,10 @@ END(__align_cpy_16) #endif .align 32 -ENTRY(memcpy) +.globl memcpy +.set memcpy,__memcpy +.hidden __memcpy +ENTRY(__memcpy) 210: #ifndef USE_BPR srl %o2, 0, %o2 /* IEU1 Group */ @@ -694,7 +700,7 @@ ENTRY(memcpy) 214: wr %g0, FPRS_FEF, %fprs retl mov %g4, %o0 -END(memcpy) +END(__memcpy) .align 32 228: andcc %o2, 1, %g0 /* IEU1 Group */ @@ -719,7 +725,10 @@ END(memcpy) nop .align 32 -ENTRY(memmove) +.globl memmove +.set memmove,__memmove +.hidden __memmove +ENTRY(__memmove) #ifndef USE_BPR srl %o2, 0, %o2 /* IEU1 Group */ #endif @@ -910,7 +919,7 @@ ENTRY(memmove) 234: wr %g0, FPRS_FEF, %fprs retl mov %g4, %o0 -END(memmove) +END(__memmove) #ifdef USE_BPR weak_alias (memcpy, __align_cpy_1) diff --git a/libc/string/sparc/sparc64/memset.S b/libc/string/sparc/sparc64/memset.S index 2e23f92a8..5d2911451 100644 --- a/libc/string/sparc/sparc64/memset.S +++ b/libc/string/sparc/sparc64/memset.S @@ -36,7 +36,10 @@ /* Well, memset is a lot easier to get right than bcopy... */ .text .align 32 -ENTRY(memset) +.globl memset +.set memset,__memset +.hidden __memset +ENTRY(__memset) andcc %o1, 0xff, %o1 mov %o0, %o5 be,a,pt %icc, 50f @@ -176,7 +179,7 @@ ENTRY(memset) nop ba,pt %xcc, 18b ldd [%o0], %f0 -END(memset) +END(__memset) #define ZERO_BLOCKS(base, offset, source) \ stx source, [base - offset - 0x38]; \ diff --git a/libc/string/sparc/sparc64/sparcv9b/memcpy.S b/libc/string/sparc/sparc64/sparcv9b/memcpy.S index 7f36b7c2c..91e74d438 100644 --- a/libc/string/sparc/sparc64/sparcv9b/memcpy.S +++ b/libc/string/sparc/sparc64/sparcv9b/memcpy.S @@ -36,7 +36,10 @@ .text .align 32 -ENTRY(bcopy) +.globl bcopy +.set bcopy,__bcopy +.hidden __bcopy +ENTRY(__bcopy) sub %o1, %o0, %o4 mov %o0, %g4 cmp %o4, %o2 @@ -50,7 +53,7 @@ ENTRY(bcopy) add %o0, %o2, %o0 retl nop -END(bcopy) +END(__bcopy) /* Special/non-trivial issues of this code: * @@ -67,7 +70,10 @@ END(bcopy) * of up to 2.4GB per second. */ .align 32 -ENTRY(memcpy) +.globl memcpy +.set memcpy,__memcpy +.hidden __memcpy +ENTRY(__memcpy) 100: /* %o0=dst, %o1=src, %o2=len */ mov %o0, %g5 @@ -328,7 +334,7 @@ small_copy_unaligned: retl mov %g5, %o0 -END(memcpy) +END(__memcpy) #define RMOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3) \ ldx [%src - offset - 0x20], %t0; \ @@ -403,7 +409,10 @@ END(memcpy) mov %g4, %o0 .align 32 -ENTRY(memmove) +.globl memmove +.set memmove,__memmove +.hidden __memmove +ENTRY(__memmove) mov %o0, %g5 #ifndef USE_BPR srl %o2, 0, %o2 /* IEU1 Group */ @@ -595,7 +604,7 @@ ENTRY(memmove) 234: wr %g0, FPRS_FEF, %fprs retl mov %g4, %o0 -END(memmove) +END(__memmove) #ifdef USE_BPR weak_alias (memcpy, __align_cpy_1) diff --git a/libc/string/sparc/sparc64/strcat.S b/libc/string/sparc/sparc64/strcat.S index 21ff119c4..3b81e59e6 100644 --- a/libc/string/sparc/sparc64/strcat.S +++ b/libc/string/sparc/sparc64/strcat.S @@ -47,7 +47,10 @@ .text .align 32 -ENTRY(strcat) +.globl strcat +.set strcat,__strcat +.hidden __strcat +ENTRY(__strcat) sethi %hi(0x01010101), %g1 /* IEU0 Group */ ldub [%o0], %o3 /* Load */ or %g1, %lo(0x01010101), %g1 /* IEU0 Group */ @@ -335,4 +338,4 @@ ENTRY(strcat) stb %o4, [%o0 - 8] /* Store */ retl /* CTI+IEU1 Group */ mov %g6, %o0 /* IEU0 */ -END(strcat) +END(__strcat) diff --git a/libc/string/sparc/sparc64/strchr.S b/libc/string/sparc/sparc64/strchr.S index 784b7fe4d..6943e8b96 100644 --- a/libc/string/sparc/sparc64/strchr.S +++ b/libc/string/sparc/sparc64/strchr.S @@ -47,7 +47,10 @@ .text .align 32 -ENTRY(strchr) +.globl strchr +.set strchr,__strchr +.hidden __strchr +ENTRY(__strchr) andcc %o1, 0xff, %o1 /* IEU1 Group */ be,pn %icc, 17f /* CTI */ sllx %o1, 8, %g3 /* IEU0 Group */ @@ -327,10 +330,13 @@ ENTRY(strchr) lduba [%o0] ASI_PNF, %o3 /* Load */ retl /* CTI+IEU1 Group */ add %o0, -1, %o0 /* IEU0 */ -END(strchr) +END(__strchr) .align 32 -ENTRY(strrchr) +.globl strrchr +.set strrchr,__strrchr +.hidden __strrchr +ENTRY(__strrchr) andcc %o1, 0xff, %o1 /* IEU1 Group */ be,pn %icc, 17b /* CTI */ clr %g4 /* IEU0 */ @@ -474,7 +480,7 @@ ENTRY(strrchr) ba,pt %xcc, 1b /* CTI Group */ ldx [%o0], %o3 /* Load */ -END(strrchr) +END(__strrchr) weak_alias (strchr, index) weak_alias (strrchr, rindex) diff --git a/libc/string/sparc/sparc64/strcmp.S b/libc/string/sparc/sparc64/strcmp.S index 5866778d3..a4eb36632 100644 --- a/libc/string/sparc/sparc64/strcmp.S +++ b/libc/string/sparc/sparc64/strcmp.S @@ -45,7 +45,10 @@ .text .align 32 -ENTRY(strcmp) +.globl strcmp +.set strcmp,__strcmp +.hidden __strcmp +ENTRY(__strcmp) sethi %hi(0x01010101), %g1 /* IEU0 Group */ andcc %o0, 7, %g0 /* IEU1 */ bne,pn %icc, 7f /* CTI */ @@ -275,4 +278,4 @@ ENTRY(strcmp) ba,pt %xcc, 11b /* CTI Group */ ldxa [%o1 + %o0] ASI_PNF, %g6 /* Load */ -END(strcmp) +END(__strcmp) diff --git a/libc/string/sparc/sparc64/strcpy.S b/libc/string/sparc/sparc64/strcpy.S index aa5d2aee3..cc906bae7 100644 --- a/libc/string/sparc/sparc64/strcpy.S +++ b/libc/string/sparc/sparc64/strcpy.S @@ -45,7 +45,10 @@ .text .align 32 -ENTRY(strcpy) +.globl strcpy +.set strcpy,__strcpy +.hidden __strcpy +ENTRY(__strcpy) sethi %hi(0x01010101), %g1 /* IEU0 Group */ mov %o0, %g6 /* IEU1 */ or %g1, %lo(0x01010101), %g1 /* IEU0 Group */ @@ -240,4 +243,4 @@ ENTRY(strcpy) stb %o4, [%o0 - 8] /* Store */ retl /* CTI+IEU1 Group */ mov %g6, %o0 /* IEU0 */ -END(strcpy) +END(__strcpy) diff --git a/libc/string/sparc/sparc64/strlen.S b/libc/string/sparc/sparc64/strlen.S index 5167ad5ba..9f48fe6a1 100644 --- a/libc/string/sparc/sparc64/strlen.S +++ b/libc/string/sparc/sparc64/strlen.S @@ -39,7 +39,10 @@ .text .align 32 -ENTRY(strlen) +.globl strlen +.set strlen,__strlen +.hidden __strlen +ENTRY(__strlen) sethi %hi(0x01010101), %g1 /* IEU0 Group */ ldub [%o0], %o3 /* Load */ or %g1, %lo(0x01010101), %g1 /* IEU0 Group */ @@ -169,4 +172,4 @@ ENTRY(strlen) add %o0, -1, %o0 /* IEU0 Group */ retl /* CTI+IEU1 Group */ sub %o0, %o1, %o0 /* IEU0 */ -END(strlen) +END(__strlen) diff --git a/libc/string/x86_64/Makefile.arch b/libc/string/x86_64/Makefile.arch index 914eab55c..56e5a5165 100644 --- a/libc/string/x86_64/Makefile.arch +++ b/libc/string/x86_64/Makefile.arch @@ -19,7 +19,8 @@ STRING_ARCH_OBJS:=$(STRING_ARCH_OBJ) $(STRING_ARCH_SOBJ) libc-a-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS) libc-so-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_OBJS:.o=.os) -libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) $(STRING_ARCH_SSRC) +libc-multi-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SRC) +libc-nomulti-$(UCLIBC_HAS_STRING_ARCH_OPT)+=$(STRING_ARCH_SOBJ) objclean-y+=string_x86_64_objclean diff --git a/libc/string/x86_64/memcpy.S b/libc/string/x86_64/memcpy.S index 4fa38a640..c375bf3fb 100644 --- a/libc/string/x86_64/memcpy.S +++ b/libc/string/x86_64/memcpy.S @@ -32,7 +32,10 @@ ENTRY (__memcpy_chk) jb HIDDEN_JUMPTARGET (__chk_fail) END (__memcpy_chk) #endif -ENTRY (BP_SYM (memcpy)) +.global memcpy +.set memcpy,__memcpy +.hidden __memcpy +ENTRY (BP_SYM (__memcpy)) /* Cutoff for the big loop is a size of 32 bytes since otherwise the loop will never be entered. */ cmpq $32, %rdx @@ -92,4 +95,4 @@ ENTRY (BP_SYM (memcpy)) #endif ret -END (BP_SYM (memcpy)) +END (BP_SYM (__memcpy)) diff --git a/libc/string/x86_64/memset.S b/libc/string/x86_64/memset.S index d74ec8ccb..d66195580 100644 --- a/libc/string/x86_64/memset.S +++ b/libc/string/x86_64/memset.S @@ -35,7 +35,10 @@ ENTRY (__memset_chk) jb HIDDEN_JUMPTARGET (__chk_fail) END (__memset_chk) #endif -ENTRY (memset) +.global memset +.set memset,__memset +.hidden __memset +ENTRY (__memset) #if BZERO_P mov %rsi,%rdx /* Adjust parameter. */ xorl %esi,%esi /* Fill with 0s. */ @@ -131,7 +134,7 @@ ENTRY (memset) jne 11b jmp 4b -END (memset) +END (__memset) #if !BZERO_P && defined PIC && !defined NOT_IN_libc strong_alias (__memset_chk, __memset_zero_constant_len_parameter) diff --git a/libc/string/x86_64/strcat.S b/libc/string/x86_64/strcat.S index 1106cb4ed..9ee10b202 100644 --- a/libc/string/x86_64/strcat.S +++ b/libc/string/x86_64/strcat.S @@ -23,7 +23,10 @@ .text -ENTRY (BP_SYM (strcat)) +.global strcat +.set strcat,__strcat +.hidden __strcat +ENTRY (BP_SYM (__strcat)) movq %rdi, %rcx /* Dest. register. */ andl $7, %ecx /* mask alignment bits */ movq %rdi, %rax /* Duplicate destination pointer. */ @@ -253,4 +256,4 @@ ENTRY (BP_SYM (strcat)) 24: movq %rdi, %rax /* Source is return value. */ retq -END (BP_SYM (strcat)) +END (BP_SYM (__strcat)) diff --git a/libc/string/x86_64/strchr.S b/libc/string/x86_64/strchr.S index b84b012b2..04d365a82 100644 --- a/libc/string/x86_64/strchr.S +++ b/libc/string/x86_64/strchr.S @@ -22,7 +22,10 @@ .text -ENTRY (BP_SYM (strchr)) +.globl strchr +.set strchr,__strchr +.hidden __strchr +ENTRY (BP_SYM (__strchr)) /* Before we start with the main loop we process single bytes until the source pointer is aligned. This has two reasons: @@ -282,6 +285,6 @@ ENTRY (BP_SYM (strchr)) 6: nop retq -END (BP_SYM (strchr)) +END (BP_SYM (__strchr)) weak_alias (BP_SYM (strchr), BP_SYM (index)) diff --git a/libc/string/x86_64/strcmp.S b/libc/string/x86_64/strcmp.S index 0b401a773..f933c1156 100644 --- a/libc/string/x86_64/strcmp.S +++ b/libc/string/x86_64/strcmp.S @@ -22,7 +22,10 @@ #include "_glibc_inc.h" .text -ENTRY (BP_SYM (strcmp)) +.global strcmp +.set strcmp,__strcmp +.hidden __strcmp +ENTRY (BP_SYM (__strcmp)) L(oop): movb (%rdi), %al cmpb (%rsi), %al jne L(neq) @@ -38,4 +41,4 @@ L(neq): movl $1, %eax movl $-1, %ecx cmovbl %ecx, %eax ret -END (BP_SYM (strcmp)) +END (BP_SYM (__strcmp)) diff --git a/libc/string/x86_64/strcpy.S b/libc/string/x86_64/strcpy.S index 0847e2b7c..1a64d2745 100644 --- a/libc/string/x86_64/strcpy.S +++ b/libc/string/x86_64/strcpy.S @@ -21,7 +21,10 @@ #include "_glibc_inc.h" #ifndef USE_AS_STPCPY -# define STRCPY strcpy +# define STRCPY __strcpy +.global strcpy +.set strcpy,__strcpy +.hidden __strcpy #endif .text diff --git a/libc/string/x86_64/strcspn.S b/libc/string/x86_64/strcspn.S index e1a22e4f1..e25100bc1 100644 --- a/libc/string/x86_64/strcspn.S +++ b/libc/string/x86_64/strcspn.S @@ -26,10 +26,16 @@ #include "_glibc_inc.h" /* BEWARE: `#ifdef strcspn' means that strcspn is redefined as `strpbrk' */ -#define STRPBRK_P (defined strcspn) +#define STRPBRK_P (defined __strcspn) .text -ENTRY (strcspn) +#if STRPBRK_P +#else +.global strcspn +.set strcspn,__strcspn +.hidden __strcspn +#endif +ENTRY (__strcspn) movq %rdi, %rdx /* Save SRC. */ @@ -120,4 +126,4 @@ L(4): addq $256, %rsp /* remove skipset */ non-valid character */ #endif ret -END (strcspn) +END (__strcspn) diff --git a/libc/string/x86_64/strlen.S b/libc/string/x86_64/strlen.S index 36b63031e..ab25515f8 100644 --- a/libc/string/x86_64/strlen.S +++ b/libc/string/x86_64/strlen.S @@ -22,7 +22,10 @@ .text -ENTRY (strlen) +.global strlen +.set strlen,__strlen +.hidden __strlen +ENTRY (__strlen) movq %rdi, %rcx /* Duplicate source pointer. */ andl $7, %ecx /* mask alignment bits */ movq %rdi, %rax /* duplicate destination. */ @@ -132,4 +135,4 @@ ENTRY (strlen) 2: subq %rdi, %rax /* compute difference to string start */ ret -END (strlen) +END (__strlen) diff --git a/libc/string/x86_64/strpbrk.S b/libc/string/x86_64/strpbrk.S index c49cd2c06..c37befe72 100644 --- a/libc/string/x86_64/strpbrk.S +++ b/libc/string/x86_64/strpbrk.S @@ -1,2 +1,5 @@ -#define strcspn strpbrk +#define __strcspn __strpbrk +.global strpbrk +.set strpbrk,__strpbrk +.hidden __strpbrk #include "strcspn.S" diff --git a/libc/string/x86_64/strspn.S b/libc/string/x86_64/strspn.S index 245d8e699..8d5903c1b 100644 --- a/libc/string/x86_64/strspn.S +++ b/libc/string/x86_64/strspn.S @@ -26,7 +26,10 @@ #include "_glibc_inc.h" .text -ENTRY (strspn) +.global strspn +.set strspn,__strspn +.hidden __strspn +ENTRY (__strspn) movq %rdi, %rdx /* Save SRC. */ @@ -111,4 +114,4 @@ L(4): addq $256, %rsp /* remove stopset */ characters, so compute distance to first non-valid character */ ret -END (strspn) +END (__strspn) diff --git a/libc/sysdeps/linux/Makefile.arch b/libc/sysdeps/linux/Makefile.arch index a2d675294..5feffe8d6 100644 --- a/libc/sysdeps/linux/Makefile.arch +++ b/libc/sysdeps/linux/Makefile.arch @@ -5,17 +5,13 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -ifeq ($(TARGET_ARCH),) -$(error TARGET_ARCH is not set, no .config exists in topdir) -endif - ARCH_DIR := $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) ARCH_OUT := $(top_builddir)libc/sysdeps/linux/$(TARGET_ARCH) ARCH_CSRC := $(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC)) ARCH_COBJ := $(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC)) -ARCH_SSRC := $(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC)) -ARCH_SOBJ := $(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC)) +ARCH_SSRC := $(patsubst %.s,$(ARCH_DIR)/%.s,$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC))) +ARCH_SOBJ := $(patsubst %.s,$(ARCH_OUT)/%.o,$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC))) ARCH_OBJS := $(ARCH_COBJ) $(ARCH_SOBJ) diff --git a/libc/sysdeps/linux/alpha/Makefile b/libc/sysdeps/linux/alpha/Makefile index ed354d3dc..b1bf1ef10 100644 --- a/libc/sysdeps/linux/alpha/Makefile +++ b/libc/sysdeps/linux/alpha/Makefile @@ -1,72 +1,15 @@ # Makefile for uClibc # -# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org> +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org> # -# 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. +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -# 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. -# -# You should have received a copy of the GNU Library General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA TOPDIR=../../../../ -include $(TOPDIR)Rules.mak - -CRT_SRC := crt1.S -CRT_OBJ := crt1.o -CTOR_TARGETS := $(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o - -SSRC := __longjmp.S brk.S bsd-_setjmp.S bsd-setjmp.S clone.S \ - setjmp.S divl.S reml.S remq.S divq.S -SOBJ := $(patsubst %.S,%.o, $(SSRC)) - -CSRC := sysdep.c #brk.c -COBJ := $(patsubst %.c,%.o, $(CSRC)) - -OBJS := $(SOBJ) $(COBJ) - -OBJ_LIST := ../../../obj.sysdeps.$(TARGET_ARCH) - -all: $(OBJ_LIST) $(CTOR_TARGETS) - -$(OBJ_LIST): $(OBJS) $(CRT_OBJ) - $(STRIPTOOL) -x -R .note -R .comment $^ - $(INSTALL) -d $(TOPDIR)lib/ - cp $(CRT_OBJ) $(TOPDIR)lib/ - echo $(patsubst %, sysdeps/linux/$(TARGET_ARCH)/%, $(OBJS)) > $@ - -$(CRT_OBJ): $(CRT_SRC) - $(CC) $(ASFLAGS) -DL_$* $< -c -o $*.o - -$(SOBJ): %.o : %.S - $(CC) $(ASFLAGS) -c $< -o $@ - -$(COBJ): %.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -ifeq ($(UCLIBC_CTOR_DTOR),y) -$(TOPDIR)lib/crti.o: crti.S - $(INSTALL) -d $(TOPDIR)lib/ - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c $< -o $@ - -$(TOPDIR)lib/crtn.o: crtn.S - $(INSTALL) -d $(TOPDIR)lib/ - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c $< -o $@ -else -$(CTOR_TARGETS): - $(INSTALL) -d $(TOPDIR)lib/ - $(AR) $(ARFLAGS) $@ -endif - -headers: - $(LN) -fs ../libc/sysdeps/linux/alpha/fpu_control.h $(TOPDIR)/include/ -clean: - $(RM) *.o *~ core +top_srcdir=$(TOPDIR) +top_builddir=../../../../ +all: objs +include $(top_builddir)Rules.mak +include Makefile.arch +include $(top_srcdir)Makerules diff --git a/libc/sysdeps/linux/arm/Makefile.arch b/libc/sysdeps/linux/arm/Makefile.arch index e44b145f9..c6edc12a1 100644 --- a/libc/sysdeps/linux/arm/Makefile.arch +++ b/libc/sysdeps/linux/arm/Makefile.arch @@ -5,28 +5,10 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC:=brk.c syscall.c ioperm.c iopl.c sigaction.c __syscall_error.c -SSRC:= __longjmp.S vfork.S clone.S setjmp.S bsd-setjmp.S \ - bsd-_setjmp.S sigrestorer.S mmap64.S - -ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/arm -ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/arm - -ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC)) -ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC)) -ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC)) -ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC)) - -ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ) +CSRC := brk.c syscall.c ioperm.c iopl.c sigaction.c __syscall_error.c -crt-y:=create -libc-a-y+=$(ARCH_OBJS) -libc-so-y+=$(ARCH_OBJS:.o=.os) - -#libc-multi-y+=$(ARCH_CSRC) -libc-nomulti-y+=$(ARCH_OBJS) - -objclean-y+=arch_objclean +SSRC := \ + __longjmp.S vfork.S clone.S setjmp.S bsd-setjmp.S \ + bsd-_setjmp.S sigrestorer.S mmap64.S -arch_objclean: - $(RM) $(ARCH_OUT)/*.{o,os} +include $(top_srcdir)libc/sysdeps/linux/Makefile.arch diff --git a/libc/sysdeps/linux/arm/__longjmp.S b/libc/sysdeps/linux/arm/__longjmp.S index 44837911b..822e15a69 100644 --- a/libc/sysdeps/linux/arm/__longjmp.S +++ b/libc/sysdeps/linux/arm/__longjmp.S @@ -33,9 +33,28 @@ __longjmp: moveq r0, #1 /* can't let setjmp() return zero! */ #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ +# ifdef __MAVERICK__ + cfldrd mvd4, [ip], #8 ; nop + cfldrd mvd5, [ip], #8 ; nop + cfldrd mvd6, [ip], #8 ; nop + cfldrd mvd7, [ip], #8 ; nop + cfldrd mvd8, [ip], #8 ; nop + cfldrd mvd9, [ip], #8 ; nop + cfldrd mvd10, [ip], #8 ; nop + cfldrd mvd11, [ip], #8 ; nop + cfldrd mvd12, [ip], #8 ; nop + cfldrd mvd13, [ip], #8 ; nop + cfldrd mvd14, [ip], #8 ; nop + cfldrd mvd15, [ip], #8 +# else lfmfd f4, 4, [ip] ! /* load the floating point regs */ +# endif #else +# ifdef __MAVERICK__ + add ip, ip, #96 /* skip the FP registers */ +# else add ip, ip, #48 /* skip the FP registers */ +# endif #endif ldmia ip , {v1-v6, sl, fp, sp, pc} diff --git a/libc/sysdeps/linux/arm/bits/endian.h b/libc/sysdeps/linux/arm/bits/endian.h index 1476881cb..27946cdee 100644 --- a/libc/sysdeps/linux/arm/bits/endian.h +++ b/libc/sysdeps/linux/arm/bits/endian.h @@ -1,19 +1,18 @@ -/* ARM is (usually) little-endian. - * Older FPU style (FPA) is always big-endian. - * Newer FPU style (VFP) is same as host byte-order. - */ - #ifndef _ENDIAN_H # error "Never use <bits/endian.h> directly; include <endian.h> instead." #endif +/* ARM can be either big or little endian. */ #ifdef __ARMEB__ # define __BYTE_ORDER __BIG_ENDIAN #else # define __BYTE_ORDER __LITTLE_ENDIAN #endif -#ifdef __VFP_FP__ +/* FPA floating point units are always big-endian, irrespective of the + CPU endianness. VFP floating point units use the same endianness + as the rest of the system. */ +#if defined __VFP_FP__ || defined __MAVERICK__ # define __FLOAT_WORD_ORDER __BYTE_ORDER #else # define __FLOAT_WORD_ORDER __BIG_ENDIAN diff --git a/libc/sysdeps/linux/arm/bits/fenv.h b/libc/sysdeps/linux/arm/bits/fenv.h index 7bd242385..3764d7749 100644 --- a/libc/sysdeps/linux/arm/bits/fenv.h +++ b/libc/sysdeps/linux/arm/bits/fenv.h @@ -20,6 +20,45 @@ # error "Never use <bits/fenv.h> directly; include <fenv.h> instead." #endif +#ifdef __MAVERICK__ + +/* Define bits representing exceptions in the FPU status word. */ +enum + { + FE_INVALID = 1, +#define FE_INVALID FE_INVALID + FE_OVERFLOW = 4, +#define FE_OVERFLOW FE_OVERFLOW + FE_UNDERFLOW = 8, +#define FE_UNDERFLOW FE_UNDERFLOW + FE_INEXACT = 16, +#define FE_INEXACT FE_INEXACT + }; + +/* Amount to shift by to convert an exception to a mask bit. */ +#define FE_EXCEPT_SHIFT 5 + +/* All supported exceptions. */ +#define FE_ALL_EXCEPT \ + (FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT) + +/* IEEE rounding modes. */ +enum + { + FE_TONEAREST = 0, +#define FE_TONEAREST FE_TONEAREST + FE_TOWARDZERO = 0x400, +#define FE_TOWARDZERO FE_TOWARDZERO + FE_DOWNWARD = 0x800, +#define FE_DOWNWARD FE_DOWNWARD + FE_UPWARD = 0xc00, +#define FE_UPWARD FE_UPWARD + }; + +#define FE_ROUND_MASK (FE_UPWARD) + +#else /* !__MAVERICK__ */ + /* Define bits representing exceptions in the FPU status word. */ enum { @@ -44,6 +83,8 @@ enum modes exist, but you have to encode them in the actual instruction. */ #define FE_TONEAREST 0 +#endif /* __MAVERICK__ */ + /* Type representing exception flags. */ typedef unsigned long int fexcept_t; diff --git a/libc/sysdeps/linux/arm/bits/setjmp.h b/libc/sysdeps/linux/arm/bits/setjmp.h index dd8524303..ad42f96cd 100644 --- a/libc/sysdeps/linux/arm/bits/setjmp.h +++ b/libc/sysdeps/linux/arm/bits/setjmp.h @@ -17,16 +17,22 @@ 02111-1307 USA. */ /* Define the machine-dependent type `jmp_buf'. ARM version. */ +#ifndef _BITS_SETJMP_H +#define _BITS_SETJMP_H 1 -#ifndef _SETJMP_H +#if !defined _SETJMP_H && !defined _PTHREAD_H # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." #endif #ifndef _ASM /* Jump buffer contains v1-v6, sl, fp, sp and pc. Other registers are not saved. */ +#ifdef __MAVERICK__ +typedef int __jmp_buf[34]; +#else typedef int __jmp_buf[22]; #endif +#endif #define __JMP_BUF_SP 20 @@ -34,3 +40,5 @@ typedef int __jmp_buf[22]; containing a local variable at ADDRESS. */ #define _JMPBUF_UNWINDS(jmpbuf, address) \ ((void *) (address) < (void *) (jmpbuf[__JMP_BUF_SP])) + +#endif /* bits/setjmp.h */ diff --git a/libc/sysdeps/linux/arm/crt1.S b/libc/sysdeps/linux/arm/crt1.S index 26146ba86..7470715a1 100644 --- a/libc/sysdeps/linux/arm/crt1.S +++ b/libc/sysdeps/linux/arm/crt1.S @@ -1,5 +1,6 @@ /* Startup code for ARM & ELF - Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002, 2005 + 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 @@ -148,10 +149,14 @@ _start: ldr a4, =_init /* __uClibc_main (main, argc, argv, init, fini, rtld_fini, stack_end) */ + /* Let the libc call main and exit with its return code. */ b __uClibc_main #endif + /* should never get here....*/ + bl abort + #ifdef __PIC__ .L_GOT: .word _GLOBAL_OFFSET_TABLE_-(.L_GOT_OFF+8) diff --git a/libc/sysdeps/linux/arm/fpu_control.h b/libc/sysdeps/linux/arm/fpu_control.h index 65912e496..8c13ca3a3 100644 --- a/libc/sysdeps/linux/arm/fpu_control.h +++ b/libc/sysdeps/linux/arm/fpu_control.h @@ -20,6 +20,76 @@ #ifndef _FPU_CONTROL_H #define _FPU_CONTROL_H +#ifdef __MAVERICK__ + +/* DSPSC register: (from EP9312 User's Guide) + * + * bits 31..29 - DAID + * bits 28..26 - HVID + * bits 25..24 - RSVD + * bit 23 - ISAT + * bit 22 - UI + * bit 21 - INT + * bit 20 - AEXC + * bits 19..18 - SAT + * bits 17..16 - FCC + * bit 15 - V + * bit 14 - FWDEN + * bit 13 - Invalid + * bit 12 - Denorm + * bits 11..10 - RM + * bits 9..5 - IXE, UFE, OFE, RSVD, IOE + * bits 4..0 - IX, UF, OF, RSVD, IO + */ + +/* masking of interrupts */ +#define _FPU_MASK_IM (1 << 5) /* invalid operation */ +#define _FPU_MASK_ZM 0 /* divide by zero */ +#define _FPU_MASK_OM (1 << 7) /* overflow */ +#define _FPU_MASK_UM (1 << 8) /* underflow */ +#define _FPU_MASK_PM (1 << 9) /* inexact */ +#define _FPU_MASK_DM 0 /* denormalized operation */ + +#define _FPU_RESERVED 0xfffff000 /* These bits are reserved. */ + +#define _FPU_DEFAULT 0x00b00000 /* Default value. */ +#define _FPU_IEEE 0x00b003a0 /* Default + exceptions enabled. */ + +/* Type of the control word. */ +typedef unsigned int fpu_control_t; + +/* Macros for accessing the hardware control word. */ +#define _FPU_GETCW(cw) ({ \ + register int __t1, __t2; \ + \ + __asm__ volatile ( \ + "cfmvr64l %1, mvdx0\n\t" \ + "cfmvr64h %2, mvdx0\n\t" \ + "cfmv32sc mvdx0, dspsc\n\t" \ + "cfmvr64l %0, mvdx0\n\t" \ + "cfmv64lr mvdx0, %1\n\t" \ + "cfmv64hr mvdx0, %2" \ + : "=r" (cw), "=r" (__t1), "=r" (__t2) \ + ); \ +}) + +#define _FPU_SETCW(cw) ({ \ + register int __t0, __t1, __t2; \ + \ + __asm__ volatile ( \ + "cfmvr64l %1, mvdx0\n\t" \ + "cfmvr64h %2, mvdx0\n\t" \ + "cfmv64lr mvdx0, %0\n\t" \ + "cfmvsc32 dspsc, mvdx0\n\t" \ + "cfmv64lr mvdx0, %1\n\t" \ + "cfmv64hr mvdx0, %2" \ + : "=r" (__t0), "=r" (__t1), "=r" (__t2) \ + : "0" (cw) \ + ); \ +}) + +#else /* !__MAVERICK__ */ + /* We have a slight terminology confusion here. On the ARM, the register * we're interested in is actually the FPU status word - the FPU control * word is something different (which is implementation-defined and only @@ -96,6 +166,8 @@ typedef unsigned int fpu_control_t; #define _FPU_GETCW(cw) __asm__ ("rfs %0" : "=r" (cw)) #define _FPU_SETCW(cw) __asm__ ("wfs %0" : : "r" (cw)) +#endif /* __MAVERICK__ */ + /* Default control word set at startup. */ extern fpu_control_t __fpu_control; diff --git a/libc/sysdeps/linux/arm/setjmp.S b/libc/sysdeps/linux/arm/setjmp.S index 62d038cc5..4048d7934 100644 --- a/libc/sysdeps/linux/arm/setjmp.S +++ b/libc/sysdeps/linux/arm/setjmp.S @@ -3,19 +3,19 @@ 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 Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + 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 - Library General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + 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. */ #include <features.h> #define _SETJMP_H @@ -28,14 +28,37 @@ __sigsetjmp: /* Save registers */ #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ +# ifdef __MAVERICK__ + cfstrd mvd4, [r0], #8 ; nop + cfstrd mvd5, [r0], #8 ; nop + cfstrd mvd6, [r0], #8 ; nop + cfstrd mvd7, [r0], #8 ; nop + cfstrd mvd8, [r0], #8 ; nop + cfstrd mvd9, [r0], #8 ; nop + cfstrd mvd10, [r0], #8 ; nop + cfstrd mvd11, [r0], #8 ; nop + cfstrd mvd12, [r0], #8 ; nop + cfstrd mvd13, [r0], #8 ; nop + cfstrd mvd14, [r0], #8 ; nop + cfstrd mvd15, [r0], #8 +# else sfmea f4, 4, [r0]! +# endif #else +# ifdef __MAVERICK__ + add r0, r0, #96 /* skip the FP registers */ +# else add r0, r0, #48 /* skip the FP registers */ +# endif #endif stmia r0, {v1-v6, sl, fp, sp, lr} /* Restore pointer to jmp_buf */ +#ifdef __MAVERICK__ + sub r0, r0, #96 +#else sub r0, r0, #48 +#endif /* Make a tail call to __sigjmp_save; it takes the same args. */ #ifdef __PIC__ diff --git a/libc/sysdeps/linux/arm/sigaction.c b/libc/sysdeps/linux/arm/sigaction.c index df9ea4c35..5fbb7fbf1 100644 --- a/libc/sysdeps/linux/arm/sigaction.c +++ b/libc/sysdeps/linux/arm/sigaction.c @@ -132,7 +132,5 @@ int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oa } #endif - -#ifndef LIBC_SIGACTION weak_alias(__libc_sigaction, sigaction) -#endir + diff --git a/libc/sysdeps/linux/arm/syscall.c b/libc/sysdeps/linux/arm/syscall.c index 195c31c74..33d9f5fea 100644 --- a/libc/sysdeps/linux/arm/syscall.c +++ b/libc/sysdeps/linux/arm/syscall.c @@ -3,19 +3,7 @@ * * Copyright (C) 2002 by Erik Andersen <andersen@uclibc.org> * - * 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. - * - * You should have received a copy of the GNU Library General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ #include <features.h> diff --git a/libc/sysdeps/linux/arm/vfork.S b/libc/sysdeps/linux/arm/vfork.S index cf9d3d8d6..530bba07c 100644 --- a/libc/sysdeps/linux/arm/vfork.S +++ b/libc/sysdeps/linux/arm/vfork.S @@ -5,19 +5,7 @@ * Copyright (C) 2000,2001 by Erik Andersen <andersen@uclibc.org> * Written by Erik Andersen <andersen@uclibc.org> * - * 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. - * - * You should have received a copy of the GNU Library General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ #define _ERRNO_H diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in index 2ddb9128a..b287d5de9 100644 --- a/libc/sysdeps/linux/common/Makefile.in +++ b/libc/sysdeps/linux/common/Makefile.in @@ -14,9 +14,19 @@ ifeq ($(EXCLUDE_BRK),y) CSRC:=$(filter-out sbrk.c,$(CSRC)) endif -CSRC:=$(filter-out ssp-local.c,$(CSRC)) +COMMON_SSP:=ssp.c ssp-local.c + +# full list +#COMMON_NO_MULTI:=getcwd.c getrlimit.c getrlimit64.c setrlimit.c setrlimit64.c getpriority.c getpriority64.c setpriority.c getrusage.c wait4.c getitimer.c setitimer.c open.c open64.c uname.c __syscall_fcntl.c __syscall_fcntl64.c +COMMON_NO_MULTI:=getrlimit.c getrlimit64.c setrlimit.c setrlimit64.c getpriority.c setpriority.c getrusage.c getitimer.c setitimer.c uname.c __syscall_rt_sigaction.c + ifneq ($(UCLIBC_HAS_SSP),y) -CSRC:=$(filter-out ssp.c,$(CSRC)) +CSRC:=$(filter-out $(COMMON_SSP),$(CSRC)) +endif + +ifneq ($(DOMULTI),n) +CSRC:=$(filter-out $(COMMON_NO_MULTI),$(CSRC)) +CSRC:=$(filter-out $(COMMON_SSP),$(CSRC)) endif # fails for some reason @@ -31,13 +41,12 @@ COMMON_SRC:=$(patsubst %.c,$(COMMON_DIR)/%.c,$(CSRC)) COMMON_OBJ:=$(patsubst %.c,$(COMMON_OUT)/%.o,$(CSRC)) libc-a-y+=$(COMMON_OBJ) -libc-a-static-$(UCLIBC_HAS_SSP)+=$(COMMON_OUT)/ssp-local.o libc-so-y+=$(COMMON_OBJ:.o=.os) libc-nonshared-$(UCLIBC_HAS_SSP)+=$(COMMON_OUT)/ssp-local.os -#libc-multi-y+=$(filter-out $(COMMON_DIR)/ssp.c,$(COMMON_SRC)) -#libc-nomulti-$(UCLIBC_HAS_SSP)+=$(COMMON_OUT)/ssp.o -libc-nomulti-y+=$(COMMON_OBJ) +libc-multi-y+=$(COMMON_SRC) +libc-nomulti-y+=$(patsubst %.c,$(COMMON_OUT)/%.o,$(COMMON_NO_MULTI)) +libc-nomulti-$(UCLIBC_HAS_SSP)+=$(patsubst %.c,$(COMMON_OUT)/%.o,$(COMMON_SSP)) objclean-y+=common_objclean diff --git a/libc/sysdeps/linux/cris/Makefile b/libc/sysdeps/linux/cris/Makefile index 3c60e01ca..b1bf1ef10 100644 --- a/libc/sysdeps/linux/cris/Makefile +++ b/libc/sysdeps/linux/cris/Makefile @@ -1,73 +1,15 @@ # Makefile for uClibc # -# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org> +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org> # -# 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. +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -# 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. -# -# You should have received a copy of the GNU Library General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA TOPDIR=../../../../ -include $(TOPDIR)Rules.mak - -CRT_SRC := crt0.c -CRT_OBJ := crt0.o crt1.o -CTOR_TARGETS := $(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o - -SSRC = setjmp.S __longjmp.S clone.S sysdep.S syscall.S -ifeq ($(UNIFIED_SYSCALL),y) -SSRC += __uClibc_syscall.S -endif -SOBJ := $(patsubst %.S,%.o, $(SSRC)) - -CSRC := __init_brk.c brk.c sbrk.c -COBJ := $(patsubst %.c,%.o, $(CSRC)) - -OBJS := $(SOBJ) $(COBJ) - -OBJ_LIST := ../../../obj.sysdeps.$(TARGET_ARCH) - -all: $(OBJ_LIST) $(CTOR_TARGETS) - -$(OBJ_LIST): $(OBJS) $(CRT_OBJ) - $(STRIPTOOL) -x -R .note -R .comment $^ - $(INSTALL) -d $(TOPDIR)lib/ - cp $(CRT_OBJ) $(TOPDIR)lib/ - echo $(patsubst %, sysdeps/linux/$(TARGET_ARCH)/%, $(OBJS)) > $@ - -$(CRT_OBJ): $(CRT_SRC) - $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o - -$(SOBJ): %.o : %.S - $(CC) $(ASFLAGS) -c $< -o $@ - -$(COBJ): %.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -ifeq ($(UCLIBC_CTOR_DTOR),y) -$(TOPDIR)lib/crti.o: crti.S - $(INSTALL) -d $(TOPDIR)lib/ - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c $< -o $@ - -$(TOPDIR)lib/crtn.o: crtn.S - $(INSTALL) -d $(TOPDIR)lib/ - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c $< -o $@ -else -$(CTOR_TARGETS): - $(INSTALL) -d $(TOPDIR)lib/ - $(AR) $(ARFLAGS) $@ -endif - -headers: -clean: - $(RM) *.o *~ core +top_srcdir=$(TOPDIR) +top_builddir=../../../../ +all: objs +include $(top_builddir)Rules.mak +include Makefile.arch +include $(top_srcdir)Makerules diff --git a/libc/sysdeps/linux/i386/Makefile.arch b/libc/sysdeps/linux/i386/Makefile.arch index 3ced8debd..c0f4f2f40 100644 --- a/libc/sysdeps/linux/i386/Makefile.arch +++ b/libc/sysdeps/linux/i386/Makefile.arch @@ -5,29 +5,10 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC:=brk.c sigaction.c __syscall_error.c +CSRC := brk.c sigaction.c __syscall_error.c -SSRC:= __longjmp.S vfork.S clone.S setjmp.S bsd-setjmp.S \ +SSRC := \ + __longjmp.S vfork.S clone.S setjmp.S bsd-setjmp.S \ bsd-_setjmp.S syscall.S mmap.S mmap64.S -ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/i386 -ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/i386 - -ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC)) -ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC)) -ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC)) -ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC)) - -ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ) - -crt-y:=create -libc-a-y+=$(ARCH_OBJS) -libc-so-y+=$(ARCH_OBJS:.o=.os) - -#libc-multi-y+=$(ARCH_CSRC) -libc-nomulti-y+=$(ARCH_OBJS) - -objclean-y+=arch_objclean - -arch_objclean: - $(RM) $(ARCH_OUT)/*.{o,os} +include $(top_srcdir)libc/sysdeps/linux/Makefile.arch diff --git a/libc/sysdeps/linux/i386/bits/syscalls.h b/libc/sysdeps/linux/i386/bits/syscalls.h index 944fb734a..df3b0b429 100644 --- a/libc/sysdeps/linux/i386/bits/syscalls.h +++ b/libc/sysdeps/linux/i386/bits/syscalls.h @@ -4,15 +4,13 @@ # error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead." #endif +#include <errno.h> + /* This includes the `__NR_<name>' syscall numbers taken from the Linux kernel * header files. It also defines the traditional `SYS_<name>' macros for older * programs. */ #include <bits/sysnum.h> -#ifndef __set_errno -# define __set_errno(val) (*__errno_location ()) = (val) -#endif - /* Some of the sneaky macros in the code were taken from glibc-2.2.5/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -30,6 +28,8 @@ asm (".L__X'%ebx = 1\n\t" ".L__X'%edi = 3\n\t" ".L__X'%ebp = 3\n\t" ".L__X'%esp = 3\n\t" + ".ifndef _BITS_SYSCALLS_ASM\n\t" + ".set _BITS_SYSCALLS_ASM,1\n\t" ".macro bpushl name reg\n\t" ".if 1 - \\name\n\t" ".if 2 - \\name\n\t" @@ -54,7 +54,8 @@ asm (".L__X'%ebx = 1\n\t" "movl \\reg, %ebx\n\t" ".endif\n\t" ".endif\n\t" - ".endm\n\t"); + ".endm\n\t" + ".endif\n\t"); #undef _syscall0 @@ -146,6 +147,5 @@ return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \ #define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \ , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5) - #endif /* __ASSEMBLER__ */ #endif /* _BITS_SYSCALLS_H */ diff --git a/libc/sysdeps/linux/mips/Makefile.arch b/libc/sysdeps/linux/mips/Makefile.arch index 5878aa708..f88e99686 100644 --- a/libc/sysdeps/linux/mips/Makefile.arch +++ b/libc/sysdeps/linux/mips/Makefile.arch @@ -5,42 +5,13 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC:= __longjmp.c brk.c setjmp_aux.c mmap.c __syscall_error.c \ +CSRC := \ + __longjmp.c brk.c setjmp_aux.c mmap.c __syscall_error.c \ cacheflush.c pread_write.c sysmips.c _test_and_set.c sigaction.c -SSRC:=bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S syscall.S pipe.S +SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S syscall.S pipe.S +ARCH_HEADERS := sgidefs.h +# regdef.h -ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/mips -ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/mips - -ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC)) -ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC)) -ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC)) -ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC)) - -ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ) - -crt-y:=create -libc-a-y+=$(ARCH_OBJS) -libc-so-y+=$(ARCH_OBJS:.o=.os) - -#libc-multi-y+=$(ARCH_CSRC) -libc-nomulti-y+=$(ARCH_OBJS) - -objclean-y+=arch_objclean - -arch_objclean: - $(RM) $(ARCH_OUT)/*.{o,os} - -headers_clean-y+=arch_headers_clean - -arch_headers_clean: - $(RM) $(top_builddir)include/sgidefs.h - #$(RM) $(top_builddir)include/regdef.h - -headers-y+=arch_headers - -arch_headers: - $(LN) -fs ../libc/sysdeps/linux/mips/sgidefs.h $(top_builddir)include/ -# $(LN) -fs ../libc/sysdeps/linux/mips/regdef.h $(top_builddir)include/ +include $(top_srcdir)libc/sysdeps/linux/Makefile.arch diff --git a/libc/sysdeps/linux/powerpc/Makefile.arch b/libc/sysdeps/linux/powerpc/Makefile.arch index f0c5d9f02..125ebc397 100644 --- a/libc/sysdeps/linux/powerpc/Makefile.arch +++ b/libc/sysdeps/linux/powerpc/Makefile.arch @@ -5,28 +5,10 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC:=mmap.c __syscall_error.c pread_write.c ioctl.c -SSRC:= __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \ - clone.S __uClibc_syscall.S syscall.S vfork.S - -ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/powerpc -ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/powerpc - -ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC)) -ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC)) -ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC)) -ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC)) - -ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ) +CSRC := mmap.c __syscall_error.c pread_write.c ioctl.c -crt-y:=create -libc-a-y+=$(ARCH_OBJS) -libc-so-y+=$(ARCH_OBJS:.o=.os) - -#libc-multi-y+=$(ARCH_CSRC) -libc-nomulti-y+=$(ARCH_OBJS) - -objclean-y+=arch_objclean +SSRC := \ + __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \ + clone.S __uClibc_syscall.S syscall.S vfork.S -arch_objclean: - $(RM) $(ARCH_OUT)/*.{o,os} +include $(top_srcdir)libc/sysdeps/linux/Makefile.arch diff --git a/libc/sysdeps/linux/sh/Makefile b/libc/sysdeps/linux/sh/Makefile index 00ccb06af..b1bf1ef10 100644 --- a/libc/sysdeps/linux/sh/Makefile +++ b/libc/sysdeps/linux/sh/Makefile @@ -1,76 +1,15 @@ # Makefile for uClibc # -# Copyright (C) 2001 by Hewlett-Packard Australia -# Copyright (C) 2000-2004 Erik Andersen <andersen@uclibc.org> +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org> # -# 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. +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -# 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. -# -# You should have received a copy of the GNU Library General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA TOPDIR=../../../../ -include $(TOPDIR)Rules.mak - -CRT_SRC := crt1.S -CRT_OBJ := crt1.o -SCRT_OBJ := Scrt1.o -CTOR_TARGETS := $(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o - -SSRC := setjmp.S __longjmp.S vfork.S clone.S ___fpscr_values.S -SOBJ := $(patsubst %.S,%.o, $(SSRC)) - -CSRC := mmap.c longjmp.c pipe.c __init_brk.c brk.c sbrk.c syscall.c pread_write.c -COBJ := $(patsubst %.c,%.o, $(CSRC)) - -OBJS := $(SOBJ) $(COBJ) - -OBJ_LIST := ../../../obj.sysdeps.$(TARGET_ARCH) - -all: $(OBJ_LIST) $(CTOR_TARGETS) - -$(OBJ_LIST): $(OBJS) $(CRT_OBJ) $(SCRT_OBJ) - $(STRIPTOOL) -x -R .note -R .comment $^ - $(INSTALL) -d $(TOPDIR)lib/ - cp $(CRT_OBJ) $(SCRT_OBJ) $(TOPDIR)lib/ - echo $(patsubst %, sysdeps/linux/$(TARGET_ARCH)/%, $(OBJS)) > $@ - -$(CRT_OBJ): $(CRT_SRC) - $(CC) $(ASFLAGS) -DL_$* $< -c -o $*.o - -$(SCRT_OBJ): $(CRT_SRC) - $(CC) $(ASFLAGS) $(PIEFLAG) -DL_$* $< -c -o $*.o - -$(SOBJ): %.o : %.S - $(CC) $(ASFLAGS) -c $< -o $@ - -$(COBJ): %.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -ifeq ($(UCLIBC_CTOR_DTOR),y) -$(TOPDIR)lib/crti.o: crti.S - $(INSTALL) -d $(TOPDIR)lib/ - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c $< -o $@ - -$(TOPDIR)lib/crtn.o: crtn.S - $(INSTALL) -d $(TOPDIR)lib/ - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c $< -o $@ -else -$(CTOR_TARGETS): - $(INSTALL) -d $(TOPDIR)lib/ - $(AR) $(ARFLAGS) $@ -endif - -headers: - $(LN) -fs ../libc/sysdeps/linux/sh/fpu_control.h $(TOPDIR)/include/ -clean: - $(RM) *.o *~ core +top_srcdir=$(TOPDIR) +top_builddir=../../../../ +all: objs +include $(top_builddir)Rules.mak +include Makefile.arch +include $(top_srcdir)Makerules diff --git a/libc/sysdeps/linux/sh/bits/setjmp.h b/libc/sysdeps/linux/sh/bits/setjmp.h index 5182300f3..c9d7d8fcd 100644 --- a/libc/sysdeps/linux/sh/bits/setjmp.h +++ b/libc/sysdeps/linux/sh/bits/setjmp.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2003 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 @@ -17,8 +17,10 @@ 02111-1307 USA. */ /* Define the machine-dependent type `jmp_buf'. SH version. */ +#ifndef _BITS_SETJMP_H +#define _BITS_SETJMP_H 1 -#ifndef _SETJMP_H +#if !defined _SETJMP_H && !defined _PTHREAD_H # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." #endif @@ -42,9 +44,13 @@ typedef struct } __jmp_buf[1]; #endif -#define JB_SIZE (4 * 15) +#if defined __USE_MISC || defined _ASM +# define JB_SIZE (4 * 15) +#endif /* Test if longjmp to JMPBUF would unwind the frame containing a local variable at ADDRESS. */ #define _JMPBUF_UNWINDS(jmpbuf, address) \ - ((void *) (address) < &(jmpbuf)[0].__regs[7]) + ((void *) (address) < (void *) &(jmpbuf)[0].__regs[7]) + +#endif /* bits/setjmp.h */ diff --git a/libc/sysdeps/linux/sparc/Makefile b/libc/sysdeps/linux/sparc/Makefile index 579140f08..b1bf1ef10 100644 --- a/libc/sysdeps/linux/sparc/Makefile +++ b/libc/sysdeps/linux/sparc/Makefile @@ -1,75 +1,15 @@ # Makefile for uClibc # -# Copyright (C) 2000-2003 Erik Andersen <andersen@uclibc.org> +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org> # -# 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. +# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -# 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. -# -# You should have received a copy of the GNU Library General Public License -# along with this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA TOPDIR=../../../../ -include $(TOPDIR)Rules.mak - -CRT_SRC := crt1.S -CRT_OBJ := crt1.o -CTOR_TARGETS := $(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o - -SSRC := __longjmp.S fork.S vfork.S clone.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \ - urem.S udiv.S umul.S sdiv.S rem.S -SOBJ := $(patsubst %.S,%.o, $(SSRC)) - -CSRC := brk.c __syscall_error.c -COBJ := $(patsubst %.c,%.o, $(CSRC)) - -OBJS := $(SOBJ) $(COBJ) - -OBJ_LIST := ../../../obj.sysdeps.$(TARGET_ARCH) - -all: $(OBJ_LIST) $(CTOR_TARGETS) - -$(OBJ_LIST): $(OBJS) $(CRT_OBJ) - $(STRIPTOOL) -x -R .note -R .comment $^ - $(INSTALL) -d $(TOPDIR)lib/ - cp $(CRT_OBJ) $(TOPDIR)lib/ - echo $(patsubst %, sysdeps/linux/$(TARGET_ARCH)/%, $(OBJS)) > $@ - -$(CRT_OBJ): $(CRT_SRC) - $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o - -$(SOBJ): %.o : %.S - $(CC) $(ASFLAGS) -c $< -o $@ - -$(COBJ): %.o : %.c - $(CC) $(CFLAGS) -c $< -o $@ - -ifeq ($(UCLIBC_CTOR_DTOR),y) -$(TOPDIR)lib/crti.o: crti.S - $(INSTALL) -d $(TOPDIR)lib/ - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c $< -o $@ - -crtn.o: crtn.S - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c crtn.S -o crtn.o - -$(TOPDIR)lib/crtn.o: crtn.S - $(INSTALL) -d $(TOPDIR)lib/ - $(CC) $(ASFLAGS) $(SSP_DISABLE_FLAGS) -c $< -o $@ -else -$(CTOR_TARGETS): - $(INSTALL) -d $(TOPDIR)lib/ - $(AR) $(ARFLAGS) $@ -endif - -headers: - $(LN) -fs ../libc/sysdeps/linux/sparc/fpu_control.h $(TOPDIR)/include/ -clean: - $(RM) *.o *~ core +top_srcdir=$(TOPDIR) +top_builddir=../../../../ +all: objs +include $(top_builddir)Rules.mak +include Makefile.arch +include $(top_srcdir)Makerules diff --git a/libc/sysdeps/linux/x86_64/Makefile.arch b/libc/sysdeps/linux/x86_64/Makefile.arch index 6752c275d..2cd9b2389 100644 --- a/libc/sysdeps/linux/x86_64/Makefile.arch +++ b/libc/sysdeps/linux/x86_64/Makefile.arch @@ -5,28 +5,9 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -CSRC:=brk.c sigaction.c __syscall_error.c mmap.c +CSRC := brk.c sigaction.c __syscall_error.c mmap.c -SSRC:=__longjmp.S vfork.S setjmp.S syscall.S bsd-setjmp.S bsd-_setjmp.S clone.S +SSRC := \ + __longjmp.S vfork.S setjmp.S syscall.S bsd-setjmp.S bsd-_setjmp.S clone.S -ARCH_DIR:=$(top_srcdir)libc/sysdeps/linux/x86_64 -ARCH_OUT:=$(top_builddir)libc/sysdeps/linux/x86_64 - -ARCH_CSRC:=$(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC)) -ARCH_COBJ:=$(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC)) -ARCH_SSRC:=$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC)) -ARCH_SOBJ:=$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC)) - -ARCH_OBJS:=$(ARCH_COBJ) $(ARCH_SOBJ) - -crt-y:=create -libc-a-y+=$(ARCH_OBJS) -libc-so-y+=$(ARCH_OBJS:.o=.os) - -#libc-multi-y+=$(ARCH_CSRC) -libc-nomulti-y+=$(ARCH_OBJS) - -objclean-y+=arch_objclean - -arch_objclean: - $(RM) $(ARCH_OUT)/*.{o,os} +include $(top_srcdir)libc/sysdeps/linux/Makefile.arch diff --git a/libc/termios/Makefile.in b/libc/termios/Makefile.in index 8e32e1ae6..415f32192 100644 --- a/libc/termios/Makefile.in +++ b/libc/termios/Makefile.in @@ -25,11 +25,13 @@ TERMIOS_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(TERMIOS_MOBJ)))) TERMIOS_OBJS:=$(TERMIOS_OBJ) $(TERMIOS_MOBJ) -$(TERMIOS_MOBJ) $(TERMIOS_MOBJ:.o=.os): $(TERMIOS_MSRC) +$(TERMIOS_MOBJ): $(TERMIOS_MSRC) + $(compile.m) + +$(TERMIOS_MOBJ:.o=.os): $(TERMIOS_MSRC) $(compile.m) libc-a-y+=$(TERMIOS_OBJS) -libc-a-pic-y+=$(TERMIOS_OBJS:.o=.os) libc-so-y+=$(TERMIOS_OBJS:.o=.os) CFLAGS-multi-y+=$(TERMIOS_DEF) diff --git a/libc/unistd/Makefile.in b/libc/unistd/Makefile.in index a72b2d9ed..1bc052749 100644 --- a/libc/unistd/Makefile.in +++ b/libc/unistd/Makefile.in @@ -35,11 +35,13 @@ UNISTD_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(UNISTD_MOBJ)))) UNISTD_OBJS:=$(UNISTD_OBJ) $(UNISTD_MOBJ) -$(UNISTD_MOBJ) $(UNISTD_MOBJ:.o=.os): $(UNISTD_MSRC) +$(UNISTD_MOBJ): $(UNISTD_MSRC) + $(compile.m) + +$(UNISTD_MOBJ:.o=.os): $(UNISTD_MSRC) $(compile.m) libc-a-y+=$(UNISTD_OBJS) -libc-a-pic-y+=$(UNISTD_OBJS:.o=.os) libc-so-y+=$(UNISTD_OBJS:.o=.os) CFLAGS-multi-y+=$(UNISTD_DEF) |
