[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] cvs update on uClinux-dev break almost all
Hi Claudio,
Claudio Lanconelli wrote:
> I accidentally updated my uClinux-dev directory and now stops when
> builds almost every user application (busybox, file utils, network, ...).
> I suppose you have some patch to correct these errors, can you send me?
> Or is better to delete all and checkout again the dist with a particular
> date/or tag?
You've snagged the middle of SnapGear doing an update to the
uClinux-dist. You could try a date tag of "3 weeks ago" then apply the
libcrpyt patch that's on the website.
Alternatively, the attached patches (applied at -p0 from the
uClinux-dist directory) should get you going again with the latest and
greatest.
You may get some conflicts on applying the vendors patch - most
important is the file vendors/config/microblaze/config.arch. If you get
stuck, let me know and I will post the entire file for you to copy in.
The uClinux-dist CVS should be finalised (and fixed) early next week
hopefully.
Regards,
John
diff -Naur -x '.*' -x '*CVS*' -x '*.o' -x '*.a' /opt/src/uClinux-dist-test-20050808/include/Makefile include/Makefile
--- /opt/src/uClinux-dist-test-20050808/include/Makefile 2005-07-29 10:45:31.000000000 +1000
+++ include/Makefile 2005-08-10 13:23:16.000000000 +1000
@@ -98,8 +98,10 @@
ln -s $$i $$dst/.; \
done ; \
done
+ @rm -f gcc
@ln -s `$(CC) -print-file-name=include` gcc
@echo "Making include/c++ symlink to compiler c++ includes"
+ @rm -f c++
@ln -s /usr/local/include/g++-v3 c++
@for i in `$(CXX) -v -xc++ /dev/null 2>&1 | sed -e '/^Reading specs/,/^#include <\.\.\.>/d' -e '/End of search list/Q'`; do \
if [ -f $$i/new ]; then rm -f c++; ln -s $$i c++; break; fi; \
diff -Naur -x '.*' -x '*CVS*' -x '*.o' -x '*.a' /opt/src/uClinux-dist-test-20050808/tools/ucfront/ucfront.c tools/ucfront/ucfront.c
--- /opt/src/uClinux-dist-test-20050808/tools/ucfront/ucfront.c 2005-07-13 21:09:44.000000000 +1000
+++ tools/ucfront/ucfront.c 2005-08-10 17:01:11.000000000 +1000
@@ -114,7 +114,7 @@
}
args_add_prefix(orig_args, p);
}
-
+
if (ucfront_debug) {
cc_log("Bypass: ");
log_args(orig_args);
@@ -718,6 +718,14 @@
}
args_add_prefix(stripped_args, p);
}
+
+ /* Hack by JW to allow forcing specific args right at the
+ end of the stripped arg list. This works around cruftiness
+ in mb-gcc-2.95.x, however it may be useful somewhere else */
+ if((e=getenv("UCFRONT_LINK_SUFFIX")) && (mode==MODE_LINK) ) {
+ args_add(stripped_args,e);
+ }
+
}
/* the main ucfront driver function */
diff -Naur -x '.*' -x '*CVS*' -x '*.o' -x '*.a' /opt/src/uClinux-dist-test-20050808/uClibc/libc/sysdeps/linux/microblaze/initfini.awk uClibc/libc/sysdeps/linux/microblaze/initfini.awk
--- /opt/src/uClinux-dist-test-20050808/uClibc/libc/sysdeps/linux/microblaze/initfini.awk 1970-01-01 10:00:00.000000000 +1000
+++ uClibc/libc/sysdeps/linux/microblaze/initfini.awk 2005-08-10 15:52:31.000000000 +1000
@@ -0,0 +1,121 @@
+#! /usr/bin/awk -f
+# Contributed by Christian MICHON <christian_michon@yahoo.fr> to
+# eliminate the compile time dependancy on perl introduced by
+# Erik's older initfini.pl
+# vim:ai:sw=2:
+
+BEGIN \
+{ alignval="";
+ endp=0;
+ end=0;
+ system("touch crt[in].S");
+ system("/bin/rm -f crt[in].S");
+ omitcrti=0;
+ omitcrtn=0;
+ glb_idx = 0;
+ while(getline < "initfini.S")
+ { if(/\.endp/) {endp=1}
+ if(/\.end/) {end=1}
+ if(/\.align/) {alignval=$2}
+# here comes some special stuff for the SuperH targets
+# We search for all labels, which uses the _GLOBAL_OFFSET_TABLE_
+# or a call_gmon_start function reference, and store
+# them in the glb_label array.
+ if(/_init_EPILOG_BEGINS/) {glb_idx=1;glb_idx_arr[glb_idx]=0}
+ if(/_fini_EPILOG_BEGINS/) {glb_idx=2;glb_idx_arr[glb_idx]=0}
+ if(/EPILOG_ENDS/) {glb_idx=0}
+ if(/_GLOBAL_OFFSET_TABLE_/||/call_gmon_start/) {
+ glb_label[glb_idx,glb_idx_arr[glb_idx]] = last;
+ glb_idx_arr[glb_idx] += 1;
+ glb_label[glb_idx,glb_idx_arr[glb_idx]] = $0;
+ glb_idx_arr[glb_idx] += 1;
+ }
+ last = $1;
+ }
+ close("initfini.S");
+}
+# special rules for the SuperH targets (They do nothing on other targets)
+/SH_GLB_BEGINS/ && glb_idx_arr[1]==0 && glb_idx_arr[2]==0 {omitcrti +=1}
+/_init_SH_GLB/ {glb_idx=1}
+/_fini_SH_GLB/ {glb_idx=2}
+/SH_GLB_ENDS/ {omitcrti -=1}
+/SH_GLB/ \
+{
+ if (glb_idx>0)
+ {
+ for (i=0;i<glb_idx_arr[glb_idx];i+=1) {
+ print glb_label[glb_idx,i] >> "crti.S";
+ }
+ glb_idx = 0;
+ }
+ next;
+}
+# special rules for H8/300 (sorry quick hack)
+/.h8300h/ {end=0}
+
+# rules for all targets
+/HEADER_ENDS/{omitcrti=1;omitcrtn=1;getline}
+/PROLOG_BEGINS/{omitcrti=0;omitcrtn=0;getline}
+/i_am_not_a_leaf/{getline}
+/_init:/||/_fini:/{omitcrtn=1}
+/PROLOG_PAUSES/{omitcrti=1;getline}
+/PROLOG_UNPAUSES/{omitcrti=0;getline}
+/PROLOG_ENDS/{omitcrti=1;getline}
+/EPILOG_BEGINS/{omitcrtn=0;getline}
+/EPILOG_ENDS/{omitcrtn=1;getline}
+/TRAILER_BEGINS/{omitcrti=0;omitcrtn=0;getline}
+/GMON_STUFF_BEGINS/{omitcrtn=1;getline}
+/GMON_STUFF_PAUSES/{omitcrtn=0;getline}
+/GMON_STUFF_UNPAUSES/{omitcrtn=1;getline}
+/GMON_STUFF_ENDS/{omitcrtn=0;getline}
+
+/_GLOBAL_OFFSET_TABLE_/||/gmon_start/ \
+{
+ if(omitcrti==0) {print >> "crti.S";}
+ next; # no gmon_start or GLOBAL_OFFSET_TABLE references in crtn.S
+}
+
+/END_INIT/ \
+{ if(endp)
+ { gsub("END_INIT",".endp _init",$0)
+ }
+ else
+ { if(end)
+ { gsub("END_INIT",".end _init",$0)
+ }
+ else
+ { gsub("END_INIT","",$0)
+ }
+ }
+}
+
+/END_FINI/ \
+{ if(endp)
+ { gsub("END_FINI",".endp _fini",$0)
+ }
+ else
+ { if(end)
+ { gsub("END_FINI",".end _fini",$0)
+ }
+ else
+ { gsub("END_FINI","",$0)
+ }
+ }
+}
+
+/ALIGN/ \
+{ if(alignval!="")
+ { gsub("ALIGN",sprintf(".align %s",alignval),$0)
+ }
+ else
+ { gsub("ALIGN","",$0)
+ }
+}
+
+omitcrti==0 {print >> "crti.S"}
+omitcrtn==0 {print >> "crtn.S"}
+
+END \
+{ close("crti.S");
+ close("crtn.S");
+}
diff -Naur -x '.*' -x '*CVS*' -x '*.o' -x '*.a' /opt/src/uClinux-dist-test-20050808/uClibc/libc/sysdeps/linux/microblaze/initfini.c uClibc/libc/sysdeps/linux/microblaze/initfini.c
--- /opt/src/uClinux-dist-test-20050808/uClibc/libc/sysdeps/linux/microblaze/initfini.c 1970-01-01 10:00:00.000000000 +1000
+++ uClibc/libc/sysdeps/linux/microblaze/initfini.c 2005-08-10 15:51:41.000000000 +1000
@@ -0,0 +1,172 @@
+/* Special .init and .fini section support.
+ Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ In addition to the permissions in the GNU Lesser General Public
+ License, the Free Software Foundation gives you unlimited
+ permission to link the compiled version of this file with other
+ programs, and to distribute those programs without any restriction
+ coming from the use of this file. (The GNU Lesser General Public
+ License restrictions do apply in other respects; for example, they
+ cover modification of the file, and distribution when not linked
+ into another program.)
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* This file is compiled into assembly code which is then munged by a sed
+ script into two files: crti.s and crtn.s.
+
+ * crti.s puts a function prologue at the beginning of the
+ .init and .fini sections and defines global symbols for
+ those addresses, so they can be called as functions.
+
+ * crtn.s puts the corresponding function epilogues
+ in the .init and .fini sections. */
+
+#include <features.h>
+
+
+/* We use embedded asm for .section unconditionally, as this makes it
+ easier to insert the necessary directives into crtn.S. */
+#define SECTION(x) asm (".section " x );
+
+/* Declare symbols as hidden. Hidden symbols are only seen by
+ * the link editor and not by the dynamic loader. */
+#ifdef __HAVE_DOT_HIDDEN__
+# define HIDDEN(func) asm (".hidden " #func );
+#else
+# define HIDDEN(func)
+#endif
+
+#if defined(__sh__) && !defined(__SH5__)
+ /* The macro insert this sh specific stuff:
+ @_SH_GLB_BEGINS
+ bra 1f
+ nop
+ ALIGN
+ @func_SH_GLB_LABEL
+ 1:
+ @_SH_GLB_ENDS
+ */
+#define GLB_STUFF(func) asm ("\n/*@_SH_GLB_BEGINS*/"); \
+ asm ("\n\tbra\t1f\n\tnop\n\tALIGN\n/*@" #func"_SH_GLB_LABEL*/\n1:"); \
+ asm ("\n/*@_SH_GLB_ENDS*/");
+#else
+#define GLB_STUFF(func)
+#endif
+
+/* The initial common code ends here. */
+asm ("\n/*@HEADER_ENDS*/");
+
+/* To determine whether we need .end and .align: */
+//asm ("\n/*@TESTS_BEGIN*/");
+extern void dummy (void (*foo) (void));
+void
+dummy (void (*foo) (void))
+{
+ if (foo)
+ (*foo) ();
+}
+//asm ("\n/*@TESTS_END*/");
+
+/* The beginning of _init: */
+asm ("\n/*@_init_PROLOG_BEGINS*/");
+
+#ifdef GMON_SUPPORT
+asm ("\n/*@_init_GMON_STUFF_BEGINS*/");
+static void
+call_gmon_start(void)
+{
+ extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
+ void (*gmon_start) (void) = __gmon_start__;
+
+ if (gmon_start)
+ gmon_start ();
+}
+asm ("\n/*@_init_GMON_STUFF_PAUSES*/");
+#endif
+
+SECTION (".init")
+HIDDEN(_init)
+
+extern void i_am_not_a_leaf (void);
+extern void _init (void);
+void _init (void)
+{
+#ifdef GMON_SUPPORT
+asm ("\n/*@_init_GMON_STUFF_UNPAUSES*/");
+ /* We cannot use the normal constructor mechanism in gcrt1.o because it
+ appears before crtbegin.o in the link, so the header elt of .ctors
+ would come after the elt for __gmon_start__. One approach is for
+ gcrt1.o to reference a symbol which would be defined by some library
+ module which has a constructor; but then user code's constructors
+ would come first, and not be profiled. */
+ call_gmon_start ();
+asm ("\n/*@_init_GMON_STUFF_ENDS*/");
+#else
+ asm ("\n/*@_init_PROLOG_PAUSES*/");
+ {
+ /* Let GCC know that _init is not a leaf function by having a dummy
+ * function call here. We arrange for this call to be omitted from
+ * either crt file. */
+ i_am_not_a_leaf ();
+ }
+ asm ("\n/*@_init_PROLOG_UNPAUSES*/");
+#endif
+
+ GLB_STUFF(_init)
+ asm ("ALIGN");
+ asm("END_INIT");
+ /* Now the epilog. */
+ asm ("\n/*@_init_PROLOG_ENDS*/");
+ asm ("\n/*@_init_EPILOG_BEGINS*/");
+}
+
+/* End of the _init epilog, beginning of the _fini prolog. */
+asm ("\n/*@_init_EPILOG_ENDS*/");
+asm ("\n/*@_fini_PROLOG_BEGINS*/");
+
+SECTION (".fini")
+HIDDEN(_fini)
+
+extern void i_am_not_a_leaf2 (void);
+extern void _fini (void);
+void _fini (void)
+{
+
+ /* End of the _fini prolog. */
+ GLB_STUFF(_fini)
+ asm ("ALIGN");
+ asm ("END_FINI");
+ asm ("\n/*@_fini_PROLOG_ENDS*/");
+
+ {
+ /* Let GCC know that _fini is not a leaf function by having a dummy
+ function call here. We arrange for this call to be omitted from
+ either crt file. */
+ i_am_not_a_leaf2 ();
+ }
+
+ /* Beginning of the _fini epilog. */
+ asm ("\n/*@_fini_EPILOG_BEGINS*/");
+}
+
+/* End of the _fini epilog. Any further generated assembly (e.g. .ident)
+ is shared between both crt files. */
+asm ("\n/*@_fini_EPILOG_ENDS*/");
+asm ("\n/*@TRAILER_BEGINS*/");
+
+/* End of file. */
diff -Naur -x '.*' -x '*CVS*' -x '*.o' -x '*.a' /opt/src/uClinux-dist-test-20050808/uClibc/libc/sysdeps/linux/microblaze/Makefile uClibc/libc/sysdeps/linux/microblaze/Makefile
--- /opt/src/uClinux-dist-test-20050808/uClibc/libc/sysdeps/linux/microblaze/Makefile 2005-01-26 16:37:25.000000000 +1000
+++ uClibc/libc/sysdeps/linux/microblaze/Makefile 2005-08-10 16:08:42.000000000 +1000
@@ -21,7 +21,7 @@
include $(TOPDIR)Rules.mak
#FIXME -- this arch should include its own crti.S and crtn.S
-UCLIBC_CTOR_DTOR=n
+UCLIBC_CTOR_DTOR=y
CFLAGS+=-I..
ASFLAGS+=-I.. -D__ASSEMBLER -DASM_GLOBAL_DIRECTIVE=.globl
@@ -30,7 +30,7 @@
CRT0_SRC = crt0.S
CRT0_OBJ = crt0.o crt1.o
-#CTOR_TARGETS=$(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o
+CTOR_TARGETS=$(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o
SSRC = setjmp.S __longjmp.S vfork.S
SOBJS = $(patsubst %.S,%.o, $(SSRC))
@@ -62,25 +62,18 @@
$(STRIPTOOL) -x -R .note -R .comment $*.o
ifeq ($(strip $(UCLIBC_CTOR_DTOR)),y)
-crti.o: crti.S
- $(CC) $(ASFLAGS) -c crti.S -o crti.o
+initfini.S: initfini.c
+ $(CC) $(SAFECFLAGS) -I$(TOPDIR)include -c initfini.c -S -o initfini.S
+
+crti.S crtn.S: initfini.S initfini.awk
+ awk -f initfini.awk initfini.S
$(TOPDIR)lib/crti.o: crti.o
$(INSTALL) -d $(TOPDIR)lib/
- cp crti.o $(TOPDIR)lib/
-
-crtn.o: crtn.S
- $(CC) $(ASFLAGS) -c crtn.S -o crtn.o
+ $(AR) $(ARFLAGS) $(TOPDIR)lib/crti.o
$(TOPDIR)lib/crtn.o: crtn.o
$(INSTALL) -d $(TOPDIR)lib/
- cp crtn.o $(TOPDIR)lib/
-else
-$(TOPDIR)lib/crti.o:
- $(INSTALL) -d $(TOPDIR)lib/
- $(AR) $(ARFLAGS) $(TOPDIR)lib/crti.o
-$(TOPDIR)lib/crtn.o:
- $(INSTALL) -d $(TOPDIR)lib/
$(AR) $(ARFLAGS) $(TOPDIR)lib/crtn.o
endif
@@ -90,4 +83,10 @@
clean:
$(RM) *.[oa] *~ core
$(RM) bits/sysnum.h
+ ifeq ($(strip $(UCLIBC_CTOR_DTOR)),y)
+ $(RM) initfini.S
+ $(RM) crti.S
+ $(RM) crto.S
+ endif
+
diff -Naur -x '.*' -x '*CVS*' -x '*.o' -x '*.a' /opt/src/uClinux-dist/vendors/config/microblaze/config.arch vendors/config/microblaze/config.arch
--- /opt/src/uClinux-dist/vendors/config/microblaze/config.arch 2005-08-11 14:19:17.000000000 +1000
+++ vendors/config/microblaze/config.arch 2005-08-11 16:47:14.000000000 +1000
@@ -55,14 +55,14 @@
CROSS_COMPILE = mb-
CROSS = $(CROSS_COMPILE)
-CC = $(CROSS_COMPILE)gcc $(CPUFLAGS)
+CC = ucfront-gcc $(CROSS_COMPILE)gcc $(CPUFLAGS)
AS = $(CROSS_COMPILE)as $(CPUFLAGS)
-CXX = $(CROSS_COMPILE)g++ $(CPUFLAGS)
+CXX = ucfront-g++ $(CROSS_COMPILE)g++ $(CPUFLAGS)
AR = $(CROSS_COMPILE)ar
LD = $(CROSS_COMPILE)ld
OBJCOPY = $(CROSS_COMPILE)objcopy
RANLIB = $(CROSS_COMPILE)ranlib
-ELF2FLT = mb-elf2flt
+ELF2FLT = $(CROSS_COMPILE)elf2flt
STRIPTOOL = $(CROSS_COMPILE)strip
STRIP = $(STRIPTOOL)
@@ -81,6 +81,13 @@
# compiler flags
# this is common to both apps and libs
+# work out which gcc version we are using
+GCC_VER = $(shell $(CC) -v 2>&1|grep version|cut -d " " -f 3)
+
+# split into major and minor numbers
+GCC_MAJOR = $(shell echo $(GCC_VER) | cut -d '.' -f 1)
+GCC_MINOR = $(shell echo $(GCC_VER) | cut -d '.' -f 2)
+
# old style CONFIG defines...
ifdef CONFIG_MICROBLAZE_HARD_MULT
HAS_HARD_MULT := y
@@ -153,12 +160,8 @@
else
CFLAGS := $(if $(LOPT),$(LOPT),-O2) -g -fomit-frame-pointer
endif
- CFLAGS += -Wall
- #CFLAGS += $(CPUFLAGS)
- CFLAGS += $(VENDOR_CFLAGS)
- CFLAGS += $(ARCH_CPUFLAGS)
- CFLAGS += -fno-builtin
- CFLAGS += -DEMBED
+ CFLAGS += -fno-common -fno-builtin -Wall #-Werror
+ CFLAGS += $(ARCH_CPUFLAGS) $(VENDOR_CFLAGS) -DEMBED
ifdef BUILD_SHARED
CFLAGS += -mid-shared-library
@@ -168,12 +171,13 @@
endif
endif
- CFLAGS += -nostdinc -I$(ROOTDIR)/include -I$(ROOTDIR)/include/include
# don't want all the CFLAGS for uClibc/Config
- ARCH_CFLAGS = $(CFLAGS)
- CFLAGS += -Dlinux -D__linux__ -D__uClinux__ -Dunix
- CXXFLAGS = $(CFALGS) $(INCCXX) -fno-exceptions
- LDFLAGS = $(CFLAGS) -Wl,-elf2flt
+ ARCH_CFLAGS := $(CPUFLAGS) $(CFLAGS)
+
+ CFLAGS += -Dlinux -D__linux__ -Dunix
+ CFLAGS += -D__uClinux__
+ LDFLAGS += -Wl,-elf2flt
+
# CFLAGS += -I$(GCCDIR)/include
ifndef DISABLE_MOVE_RODATA
@@ -190,62 +194,55 @@
ifdef UCLINUX_BUILD_USER
+ # Clear the XILINX_EDK variable - it confuses mb-gcc.. ugh
+ XILINX_EDK=
+
# find where $(CROSS)gcc is living
GCC_DIR = $(shell $(CC) -v 2>&1|grep specs|sed -e 's/.* \(.*\)specs/\1\./')
- # find the compiler's libc.a Note that for microblaze there are four
- # different versions, depending on the combination of hardware barrel
- # shift and multiplier. Config options are used top pick out the right one
+ # mb-gcc 2.95.x requires linking against compiler's libc.a - yuck.
+ # There are four different versions, depending on the combination of
+ # hardware barrel shift and multiplier.
+ # Config options are used top pick out the right one
GCC_LIB = $(GCC_DIR)/libgcc.a $(GCC_DIR)/../../../../microblaze/lib/libc$(LIBC_SUFFIX).a
- # use -lc (from uClibc) and also the compiler's libc.a as well
- # I know this is hideous, but we need to relink against libc
- # after the $GCC_LIB, to avoid some dependency issues
- # Don't hate me, just fix it! :-) JW
-
- SLIBC = -lc $(GCC_LIB) -lc
+ # Set the UCFRONT_LINK_SUFFIX variable to have this tacked onto the
+ # end of the ucfront command line. This is such a hack.
+ ifeq ($(GCC_MAJOR),2)
+ UCFRONT_LINK_SUFFIX = -lc $(GCC_LIB) -lc
+ endif
ifdef BUILD_SHARED
LIBC = -Wl,-R,$(ROOTDIR)/lib/libc.gdb $(SLIBC)
endif
-
- LDPATH = -L$(ROOTDIR)/lib
-
ifdef CONFIG_USER_DEBUG
CFLAGS := $(if $(UOPT),$(UOPT),-O1) -g
else
CFLAGS := $(if $(UOPT),$(UOPT),-Os) -g -fomit-frame-pointer
endif
- #CFLAGS += $(CPUFLAGS)
- CFLAGS += -fno-common -Wall
- CFLAGS += $(VENDOR_CFLAGS)
- CFLAGS += $(ARCH_CPUFLAGS)
- CFLAGS += -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED
- CFLAGS += -nostdinc -I$(ROOTDIR)/include -I$(ROOTDIR)/include/include
- CFLAGS += -fno-builtin
+ CFLAGS += -fno-common -fno-builtin -Wall #-Werror
+ CFLAGS += $(ARCH_CPUFLAGS) $(VENDOR_CFLAGS) -DEMBED
- CXXFLAGS = $(CFLAGS) $(INCCXX) -fno-exceptions
- LDFLAGS = $(CFLAGS) -Wl,-elf2flt
+ # don't want all the CFLAGS for uClibc/Config
+ ARCH_CFLAGS := $(CFLAGS)
- ifneq ($(LIBCDIR),libc)
- LDFLAGS += -nostartfiles $(ROOTDIR)/lib/crt0.o
- endif
+ CFLAGS += -Dlinux -D__linux__ -Dunix
+ CFLAGS += -D__uClinux__
- LDFLAGS +=$(LDPATH)
+ CXXFLAGS = $(CFLAGS) -nostdinc++ -fno-exceptions
+ CXXSUP =
- LDLIBS = $(LIBC)
- LDLIBS_static = $(SLIBC)
- CXXLIBS = $(LIBSTDCPP) $(LIBIBERTY) $(LIBC) $(LIBGCC)
+# LDFLAGS += -nostartfiles $(ROOTDIR)/$(LIBCDIR)/lib/crt0.o
+ LDFLAGS += -Wl,-elf2flt
ifndef FLTFLAGS
FLTFLAGS :=
endif
export FLTFLAGS
-
# for anyone still using it
CONVERT = /bin/true
@@ -258,6 +255,11 @@
#
ifeq ($(UCLINUX_BUILD_SET),1)
+ EXTRA_CFLAGS := $(CPUFLAGS)
+
+ CXXLIBS = $(LIBSTDCPP) $(CXXSUP)
+
+ LDLIBS = $(LIBBIND)
endif
############################################################################
diff -Naur -x '.*' -x '*CVS*' -x '*.o' -x '*.a' /opt/src/uClinux-dist/vendors/Xilinx/uclinux-auto/config.linux-2.4.x vendors/Xilinx/uclinux-auto/config.linux-2.4.x
--- /opt/src/uClinux-dist/vendors/Xilinx/uclinux-auto/config.linux-2.4.x 2005-08-11 14:19:16.000000000 +1000
+++ vendors/Xilinx/uclinux-auto/config.linux-2.4.x 2005-08-11 14:10:42.000000000 +1000
@@ -427,7 +427,7 @@
# CONFIG_MTD_SNAPGEODE is not set
# CONFIG_MTD_NETteluC is not set
# CONFIG_MTD_MBVANILLA is not set
-# CONFIG_MTD_MB_AUTO is not set
+CONFIG_MTD_MB_AUTO=y
# CONFIG_MTD_ML401 is not set
# CONFIG_MTD_SUZAKU is not set
# CONFIG_MTD_KeyTechnology is not set
@@ -435,6 +435,7 @@
# CONFIG_MTD_UCLINUX is not set
# CONFIG_MTD_PCI is not set
# CONFIG_MTD_PCMCIA is not set
+CONFIG_FLASH_8MB=y
#
# Self-contained MTD device drivers