summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--klibc/MCONFIG2
-rw-r--r--klibc/Makefile2
-rw-r--r--klibc/include/klibc/compiler.h6
-rw-r--r--klibc/klcc.in16
-rw-r--r--klibc/klibc/arch/sparc/MCONFIG2
-rw-r--r--klibc/klibc/arch/sparc/Makefile.inc7
-rw-r--r--klibc/klibc/arch/sparc/crt0.S2
-rw-r--r--klibc/version2
8 files changed, 28 insertions, 11 deletions
diff --git a/klibc/MCONFIG b/klibc/MCONFIG
index c833499483..7a24b821ad 100644
--- a/klibc/MCONFIG
+++ b/klibc/MCONFIG
@@ -59,7 +59,7 @@ HOST_LIBS =
# Static library paths
CRT0 = $(KLIBOBJ)/crt0.o
KLIBC = $(KLIBOBJ)/libc.a
-LIBGCC = $(shell $(CC) --print-libgcc)
+LIBGCC = $(shell $(CC) $(REQFLAGS) $(OPTFLAGS) --print-libgcc)
# Shared library paths
CRTSHARED = $(KLIBOBJ)/interp.o
diff --git a/klibc/Makefile b/klibc/Makefile
index 812ea92f47..a512aa308a 100644
--- a/klibc/Makefile
+++ b/klibc/Makefile
@@ -54,7 +54,7 @@ local-install: $(CROSS)klcc
mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
- set -xe ; for d in linux asm-$(ARCH) asm-generic $(ASMARCH); do \
+ set -xe ; for d in linux scsi asm-$(ARCH) asm-generic $(ASMARCH); do \
mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(CROSS)include/$$d ; \
for r in $(KRNLSRC)/include $(KRNLOBJ)/include $(KRNLOBJ)/include2 ; do \
[ ! -d $$r/$$d ] || \
diff --git a/klibc/include/klibc/compiler.h b/klibc/include/klibc/compiler.h
index 823996e777..ee697adf08 100644
--- a/klibc/include/klibc/compiler.h
+++ b/klibc/include/klibc/compiler.h
@@ -22,7 +22,7 @@
/* How to declare a function that *must* be inlined */
#ifdef __GNUC__
-# if __GNUC_MAJOR__ >= 3
+# if __GNUC__ >= 3
# define __must_inline static __inline__ __attribute__((always_inline))
# else
# define __must_inline extern __inline__
@@ -84,14 +84,14 @@
#endif
/* malloc() function (returns unaliased pointer) */
-#if defined(__GNUC__) && (__GNUC_MAJOR__ >= 3)
+#if defined(__GNUC__) && (__GNUC__ >= 3)
# define __mallocfunc __attribute__((malloc))
#else
# define __mallocfunc
#endif
/* likely/unlikely */
-#if defined(__GNUC__) && (__GNUC_MAJOR__ > 2 || (__GNUC_MAJOR__ == 2 && __GNUC_MINOR__ >= 95))
+#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
# define __likely(x) __builtin_expect((x), 1)
# define __unlikely(x) __builtin_expect((x), 0)
#else
diff --git a/klibc/klcc.in b/klibc/klcc.in
index bdd03e73b3..d8721c9a6b 100644
--- a/klibc/klcc.in
+++ b/klibc/klcc.in
@@ -78,6 +78,11 @@ sub mysystem(@) {
}
#
+# Initialization
+#
+open(NULL, '+<', '/dev/null') or die "$0: cannot open /dev/null\n";
+
+#
# Begin parsing options.
#
@@ -191,10 +196,17 @@ if ( $operation ne '' ) {
}
}
+ # Get the libgcc pathname for the *current* gcc
+ open(LIBGCC, '-|', $CC, @ccopt, '-print-libgcc-file-name')
+ or die "$0: cannot get libgcc filename\n";
+ $libgcc = <LIBGCC>;
+ chomp $libgcc;
+ close(LIBGCC);
+
if ( $shared ) {
- $rv = mysystem($LD, @LDFLAGS, @sharedopt, @ldopt, @outopt, @objs, @sharedlib);
+ $rv = mysystem($LD, @LDFLAGS, @sharedopt, @ldopt, @outopt, @objs, @sharedlib, $libgcc);
} else {
- $rv = mysystem($LD, @LDFLAGS, @staticopt, @ldopt, @outopt, @objs, @staticlib);
+ $rv = mysystem($LD, @LDFLAGS, @staticopt, @ldopt, @outopt, @objs, @staticlib, $libgcc);
}
unlink(@rmobjs);
diff --git a/klibc/klibc/arch/sparc/MCONFIG b/klibc/klibc/arch/sparc/MCONFIG
index 55f8b198c2..3a5cbaa2e7 100644
--- a/klibc/klibc/arch/sparc/MCONFIG
+++ b/klibc/klibc/arch/sparc/MCONFIG
@@ -7,7 +7,7 @@
# accordingly.
#
-OPTFLAGS = -Os
+OPTFLAGS = -Os -m32 -mptr32
BITSIZE = 32
# Extra linkflags when building the shared version of the library
diff --git a/klibc/klibc/arch/sparc/Makefile.inc b/klibc/klibc/arch/sparc/Makefile.inc
index 6ea66114fa..bea1dbc94e 100644
--- a/klibc/klibc/arch/sparc/Makefile.inc
+++ b/klibc/klibc/arch/sparc/Makefile.inc
@@ -16,7 +16,12 @@ ARCHOBJS = \
arch/$(ARCH)/umul.o \
arch/$(ARCH)/setjmp.o \
arch/$(ARCH)/syscall.o \
- arch/$(ARCH)/sysfork.o
+ arch/$(ARCH)/sysfork.o \
+ libgcc/__divdi3.o \
+ libgcc/__moddi3.o \
+ libgcc/__udivdi3.o \
+ libgcc/__umoddi3.o \
+ libgcc/__udivmoddi4.o
arch/$(ARCH)/sdiv.S: arch/$(ARCH)/divrem.m4
@echo 'building $@ from $^'
diff --git a/klibc/klibc/arch/sparc/crt0.S b/klibc/klibc/arch/sparc/crt0.S
index 148cb4b4e9..63db188961 100644
--- a/klibc/klibc/arch/sparc/crt0.S
+++ b/klibc/klibc/arch/sparc/crt0.S
@@ -1,2 +1,2 @@
#define TARGET_PTR_SIZE 32
-#include "arch/sparc/crt0i.S"
+#include "crt0i.S"
diff --git a/klibc/version b/klibc/version
index 1f39702100..136a629e2d 100644
--- a/klibc/version
+++ b/klibc/version
@@ -1 +1 @@
-0.211
+0.214