Index: Makefile =================================================================== RCS file: /cvsroot/uclinux-h8/uClibc/Makefile,v retrieving revision 1.1.1.5 diff -u -r1.1.1.5 Makefile --- Makefile 9 Mar 2005 14:16:49 -0000 1.1.1.5 +++ Makefile 14 Mar 2005 13:49:51 -0000 @@ -63,11 +63,32 @@ @echo endif +ifeq ($(CONFIG_BINFMT_SHARED_FLAT),y) + +lib/main.o: $(ROOTDIR)libc/main.c + $(CC) $(CFLAGS) $(ARCH_CFLAGS) -c -o $@ $(ROOTDIR)libc/main.c + +bogus $(SHARED_TARGET): lib/libc.a lib/main.o Makefile + $(CC) -nostartfiles -o $(SHARED_TARGET) $(CPU_CFLAGS) -Wl,-elf2flt -nostdlib \ + -Wl,-shared-lib-id,${LIBID} \ + lib/main.o \ + -Wl,--whole-archive,lib/libc.a,-lgcc,--no-whole-archive + $(OBJCOPY) -L _GLOBAL_OFFSET_TABLE_ -L $(C_SYMBOL_PREFIX)main \ + -L $(C_SYMBOL_PREFIX)__main -L $(C_SYMBOL_PREFIX)_start \ + -L $(C_SYMBOL_PREFIX)__uClibc_main -L $(C_SYMBOL_PREFIX)__uClibc_start_main \ + -L $(C_SYMBOL_PREFIX)lib_main -L $(C_SYMBOL_PREFIX)_exit_dummy_ref \ + -L $(C_SYMBOL_PREFIX)__do_global_dtors -L $(C_SYMBOL_PREFIX)__do_global_ctors \ + -L $(C_SYMBOL_PREFIX)__CTOR_LIST__ -L $(C_SYMBOL_PREFIX)__DTOR_LIST__ \ + -L $(GOT_OFFSET_SYMBOL) \ + $(SHARED_TARGET).gdb + $(LN) -sf $(SHARED_TARGET).gdb . +endif + finished: shared @echo @echo Finally finished compiling ... @echo include/bits/uClibc_config.h: .config @if [ ! -x ./extra/config/conf ] ; then \ $(MAKE) -C extra/config conf; \ Index: Rules.mak =================================================================== RCS file: /cvsroot/uclinux-h8/uClibc/Rules.mak,v retrieving revision 1.1.1.5 retrieving revision 1.5.2.5 diff -u -r1.1.1.5 -r1.5.2.5 --- Rules.mak 9 Mar 2005 14:16:49 -0000 1.1.1.5 +++ Rules.mak 9 Mar 2005 14:28:32 -0000 1.5.2.5 @@ -45,6 +45,7 @@ NM = $(CROSS)nm RANLIB = $(CROSS)ranlib STRIPTOOL = $(CROSS)strip +OBJCOPY = $(CROSS)objcopy INSTALL = install LN = ln @@ -176,10 +177,16 @@ endif ifeq ($(strip $(TARGET_ARCH)),h8300) - CPU_LDFLAGS-$(CONFIG_H8300H)+= -ms8300h - CPU_LDFLAGS-$(CONFIG_H8S) += -ms8300s +ifeq ($(strip $(HAVE_ELF)),y) + CPU_LDFLAGS-$(CONFIG_H8300H)+= -mh8300helf + CPU_LDFLAGS-$(CONFIG_H8S) += -mh8300self +else + CPU_LDFLAGS-$(CONFIG_H8300H)+= -mh8300h + CPU_LDFLAGS-$(CONFIG_H8S) += -mh8300s +endif CPU_CFLAGS-$(CONFIG_H8300H) += -mh -mint32 -fsigned-char CPU_CFLAGS-$(CONFIG_H8S) += -ms -mint32 -fsigned-char + CPU_CFLAGS-$(strip $(CONFIG_BINFMT_SHARED_FLAT)) += -mid-shared-library endif ifeq ($(strip $(TARGET_ARCH)),cris) @@ -222,6 +229,8 @@ CPU_CFLAGS=$(subst ",, $(strip $(CPU_CFLAGS-y))) LDADD_LIBFLOAT= +# h8300-*-gcc is msoft-flot not support +ifneq ($(strip $(TARGET_ARCH)),h8300) ifeq ($(strip $(UCLIBC_HAS_SOFT_FLOAT)),y) # Add -msoft-float to the CPU_FLAGS since ldso and libdl ignore CFLAGS. # If -msoft-float isn't supported, we want an error anyway. @@ -248,6 +257,7 @@ else SSP_CFLAGS=$(SSP_DISABLE_FLAGS) endif +endif # Some nice CFLAGS to work with CFLAGS=$(XWARNINGS) $(OPTIMIZATION) $(XARCH_CFLAGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \ Index: extra/Configs/Config.h8300 =================================================================== RCS file: /cvsroot/uclinux-h8/uClibc/extra/Configs/Config.h8300,v retrieving revision 1.1.1.4 retrieving revision 1.7.2.3 diff -u -r1.1.1.4 -r1.7.2.3 --- extra/Configs/Config.h8300 14 Apr 2004 09:30:29 -0000 1.1.1.4 +++ extra/Configs/Config.h8300 3 May 2004 17:02:33 -0000 1.7.2.3 @@ -7,7 +7,6 @@ bool select ARCH_HAS_NO_MMU select ARCH_HAS_C_SYMBOL_PREFIX - select HAVE_NO_SHARED select ARCH_HAS_NO_LDSO default y @@ -17,7 +16,7 @@ config ARCH_SUPPORTS_LITTLE_ENDIAN bool - default y + default n config TARGET_ARCH default "h8300" @@ -36,6 +35,10 @@ endchoice +config CONFIG_BINFMT_SHARED_FLAT + bool "Build Shared Library" + default n + config ARCH_CFLAGS string @@ -45,3 +48,6 @@ config LIBGCC_CFLAGS string +config GOT_OFFSET_SYMBOL + string + default "__current_shared_library_er5_offset_" Index: extra/Configs/Config.in =================================================================== RCS file: /cvsroot/uclinux-h8/uClibc/extra/Configs/Config.in,v retrieving revision 1.1.1.3 retrieving revision 1.1.1.2.2.2 diff -u -r1.1.1.3 -r1.1.1.2.2.2 --- extra/Configs/Config.in 9 Mar 2005 14:16:56 -0000 1.1.1.3 +++ extra/Configs/Config.in 9 Mar 2005 14:28:32 -0000 1.1.1.2.2.2 @@ -175,7 +175,7 @@ config HAVE_SHARED bool "Enable support for shared libraries" - depends on DOPIC && !HAVE_NO_SHARED + depends on DOPIC && !HAVE_NO_SHARED && !ARCH_HAS_NO_MMU default y help If you wish to build uClibc with support for shared libraries then Index: extra/Configs/Config.m68k =================================================================== RCS file: /cvsroot/uclinux-h8/uClibc/extra/Configs/Config.m68k,v retrieving revision 1.1.1.5 retrieving revision 1.1.1.4.2.2 diff -u -r1.1.1.5 -r1.1.1.4.2.2 --- extra/Configs/Config.m68k 9 Mar 2005 14:16:56 -0000 1.1.1.5 +++ extra/Configs/Config.m68k 9 Mar 2005 14:28:32 -0000 1.1.1.4.2.2 @@ -31,3 +31,6 @@ bool default y +config GOT_OFFSET_SYMBOL + string + default "_current_shared_library_a5_offset_" Index: include/stdint.h =================================================================== RCS file: /cvsroot/uclinux-h8/uClibc/include/stdint.h,v retrieving revision 1.1.1.2 retrieving revision 1.2.2.3 diff -u -r1.1.1.2 -r1.2.2.3 --- include/stdint.h 2 Nov 2002 16:30:29 -0000 1.1.1.2 +++ include/stdint.h 16 Apr 2004 16:28:25 -0000 1.2.2.3 @@ -238,7 +238,7 @@ # define UINTPTR_MAX (4294967295U) # endif -#if !defined(__H8300H__) && !defined(__H8300S__) +#if (__LONG_MAX__ != __LONG_LONG_MAX__) /* long long check */ /* Minimum for largest signed integral type. */ # define INTMAX_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum for largest signed integral type. */ Index: libc/sysdeps/linux/h8300/Makefile =================================================================== RCS file: /cvsroot/uclinux-h8/uClibc/libc/sysdeps/linux/h8300/Makefile,v retrieving revision 1.1.1.4 retrieving revision 1.2.2.3 diff -u -r1.1.1.4 -r1.2.2.3 --- libc/sysdeps/linux/h8300/Makefile 9 Mar 2005 14:17:03 -0000 1.1.1.4 +++ libc/sysdeps/linux/h8300/Makefile 9 Mar 2005 14:28:33 -0000 1.2.2.3 @@ -18,6 +18,7 @@ TOPDIR=../../../../ include $(TOPDIR)Rules.mak +ASFLAGS=$(CFLAGS) ifeq ($(DOPIC),y) ASFLAGS+=-D__PIC__ endif Index: libc/sysdeps/linux/h8300/clone.S =================================================================== RCS file: /cvsroot/uclinux-h8/uClibc/libc/sysdeps/linux/h8300/Attic/clone.S,v retrieving revision 1.1.1.1 retrieving revision 1.1.2.3 diff -u -r1.1.1.1 -r1.1.2.3 --- libc/sysdeps/linux/h8300/clone.S 9 Mar 2005 14:17:03 -0000 1.1.1.1 +++ libc/sysdeps/linux/h8300/clone.S 24 Apr 2004 11:07:33 -0000 1.1.2.3 @@ -50,9 +50,9 @@ neg.l er0 mov.l er0,@-sp #if !defined(__PIC__) - jsr @__errno_location + jsr @___errno_location #else - mov.l @(__errno_location@GOTOFF,er5),er1 + mov.l @(___errno_location@GOTOFF,er5),er1 jsr @er1 #endif mov.l @sp,er1