Hello, I just went through compiling eCos for Falcom x35-xxl-si on SuSE Linux 10, and I thought to share the experience in the hopes to save some time for someone else. SuSE Linux 10 has gcc 4.x as the native compiler, which apparently was a major source of trouble in compiling the toolchain. I used the eCos online documentation as the primary reference for building the toolchain: http://ecos.sourceware.org/build-toolchain.html Differing slightly from the documentation, below is the package list I used for the toolchain: binutils-2.16.tar.bz2 gcc-core-3.2.3.tar.bz2 gcc-g++-3.2.3.tar.bz2 newlib-1.13.0.tar.gz insight-6.1.tar.bz2 Directory structure for the build process was: $BASE/gnu/pkg - containing the above packages $BASE/gnu/src - the above packages exploded $BASE/gnu/build - build area Preparation steps, starting in $BASE directory; patches are described later: BASE=$PWD cd gnu/src for f in ../pkg/*gz; do gzip -dc < $f | tar xf -; done for f in ../pkg/*bz2; do bzip2 -dc < $f | tar xf -; done mv newlib-1.13.0/newlib/ gcc-3.2.3/ mv newlib-1.13.0/libgloss/ gcc-3.2.3/ patch -p0 < gcc.patch patch -p0 < insight-6.1.patch TARGET=v850-elf PREFIX=/usr/local/ecostools cd $PREFIX mkdir bin lib libexec man man/man1 man/man3 man/man5 info share $TARGET PATH=$PREFIX/bin:$PATH ... this leaves us with all the sources exploded underneath the gnu/src directory, and two patches applied to make it possible for the things to compile under gcc-4. Also the destination directory structure is prepared. Building the toolchain: binutils: cd $BASE/gnu/build mkdir binutils; cd binutils ../../src/binutils-2.16/configure --target=$TARGET --prefix=$PREFIX \ -v 2>&1 | tee configure.out make -w all install 2>&1 | tee make.out GCC: cd .. mkdir gcc cd gcc ../../src/gcc-3.2.3/configure --target=$TARGET --prefix=$PREFIX \ --enable-languages=c,c++ --with-gnu-as --with--gnu-ld --with--newlib \ --with-gxx-include-dir=$PREFIX/$TARGET/include \ -v 2>&1 | tee configure.out make -w all install 2>&1 | tee make.out insight: cd .. mkdir gdb cd gdb ../../src/insight-5.3/configure --target=$TARGET --prefix=$PREFIX \ -v 2>&1 | tee configure.out make -w all install 2>&1 | tee make.out Now this all looks simple; what wasn't so simple was to find out the proper ways to modigy gcc (and insight) sources to get them to compile with gcc-4. What still remained to do was to see whether insight-6.4 would be less complicated to compile. After these, I started to build the ecosconfig tool, from the repository-0.991p01.tgz package provided by Falcom; preparation: repository-0.991p01.tgz exists in $BASE/x35/pkg; directories $BASE/x35/src and $BASE/x35/build are created PREFIX=/usr/local/ecos cd $BASE/x35/src tar xvf ../pkg/repository-0.991p01.tgz patch -p0 < ../pkg/repository.patch (so, also a small patch for the eCos repository contents were needed) Then to compile the ecosconfig and the infra parts required for it: cd ../build mkdir ecos cd ecos ../../src/repository-0.991/host/configure --prefix=$PREFIX --with-tcl=/usr/local/ecostools --with-tcl-version=8.4 2>&1 | tee configure.out make 2>&1 | tee make.out make install 2>&1 | tee make-install.out After this I set out to copy parts of the repository contents into a newly created directory /usr/local/ecos/repository; from the repository contents (x35/src/repository-0.991) subdirectories packages, examples and demos_xxl. Finished! With this, it is possible to create ecos working directories: ECOS_REPOSITORY=/usr/local/ecos/repository/packages export ECOS_REPOSITORY ecosconfig new x35xxlsi ecosconfig tree make Patches: gcc.ecos.patch; practically, the obstack.h is copied from GCC 4.0.2 sources; in addition to this, definition of current_binding_level is reworked. diff -cr gcc-3.2.3.orig/gcc/cp/decl.c gcc-3.2.3/gcc/cp/decl.c *** gcc-3.2.3.orig/gcc/cp/decl.c Tue Mar 18 01:16:55 2003 --- gcc-3.2.3/gcc/cp/decl.c Thu Jan 12 13:47:57 2006 *************** *** 454,462 **** /* The binding level currently in effect. */ #define current_binding_level \ ! (cfun && cp_function_chain->bindings \ ! ? cp_function_chain->bindings \ ! : scope_chain->bindings) /* The binding level of the current class, if any. */ --- 454,462 ---- /* The binding level currently in effect. */ #define current_binding_level \ ! (*(struct binding_level **)(cfun && cp_function_chain->bindings \ ! ? &(cp_function_chain->bindings) \ ! : &(scope_chain->bindings))) /* The binding level of the current class, if any. */ diff -cr gcc-3.2.3.orig/include/obstack.h gcc-3.2.3/include/obstack.h *** gcc-3.2.3.orig/include/obstack.h Wed Mar 14 21:44:38 2001 --- gcc-3.2.3/include/obstack.h Tue Jul 13 23:54:38 2004 *************** *** 343,349 **** #endif ! #define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar) #define obstack_blank_fast(h,n) ((h)->next_free += (n)) --- 343,349 ---- #endif ! #define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = (achar)) #define obstack_blank_fast(h,n) ((h)->next_free += (n)) *************** *** 411,417 **** ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + 1 > __o->chunk_limit) \ _obstack_newchunk (__o, 1); \ ! *(__o->next_free)++ = (datum); \ (void) 0; }) /* These assume that the obstack alignment is good enough for pointers or ints, --- 411,417 ---- ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + 1 > __o->chunk_limit) \ _obstack_newchunk (__o, 1); \ ! obstack_1grow_fast (__o, datum); \ (void) 0; }) /* These assume that the obstack alignment is good enough for pointers or ints, *************** *** 423,441 **** ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + sizeof (void *) > __o->chunk_limit) \ _obstack_newchunk (__o, sizeof (void *)); \ ! *((void **)__o->next_free)++ = ((void *)datum); \ ! (void) 0; }) # define obstack_int_grow(OBSTACK,datum) \ __extension__ \ ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + sizeof (int) > __o->chunk_limit) \ _obstack_newchunk (__o, sizeof (int)); \ ! *((int *)__o->next_free)++ = ((int)datum); \ (void) 0; }) ! # define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr) ! # define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint) # define obstack_blank(OBSTACK,length) \ __extension__ \ --- 423,450 ---- ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + sizeof (void *) > __o->chunk_limit) \ _obstack_newchunk (__o, sizeof (void *)); \ ! obstack_ptr_grow_fast (__o, datum); }) # define obstack_int_grow(OBSTACK,datum) \ __extension__ \ ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + sizeof (int) > __o->chunk_limit) \ _obstack_newchunk (__o, sizeof (int)); \ ! obstack_int_grow_fast (__o, datum); }) ! ! # define obstack_ptr_grow_fast(OBSTACK,aptr) \ ! __extension__ \ ! ({ struct obstack *__o1 = (OBSTACK); \ ! *(const void **) __o1->next_free = (aptr); \ ! __o1->next_free += sizeof (const void *); \ (void) 0; }) ! # define obstack_int_grow_fast(OBSTACK,aint) \ ! __extension__ \ ! ({ struct obstack *__o1 = (OBSTACK); \ ! *(int *) __o1->next_free = (aint); \ ! __o1->next_free += sizeof (int); \ ! (void) 0; }) # define obstack_blank(OBSTACK,length) \ __extension__ \ *************** *** 443,449 **** int __len = (length); \ if (__o->chunk_limit - __o->next_free < __len) \ _obstack_newchunk (__o, __len); \ ! __o->next_free += __len; \ (void) 0; }) # define obstack_alloc(OBSTACK,length) \ --- 452,458 ---- int __len = (length); \ if (__o->chunk_limit - __o->next_free < __len) \ _obstack_newchunk (__o, __len); \ ! obstack_blank_fast (__o, __len); \ (void) 0; }) # define obstack_alloc(OBSTACK,length) \ *************** *** 485,493 **** # define obstack_free(OBSTACK, OBJ) \ __extension__ \ ({ struct obstack *__o = (OBSTACK); \ ! void *__obj = (OBJ); \ if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) \ ! __o->next_free = __o->object_base = __obj; \ else (obstack_free) (__o, __obj); }) #else /* not __GNUC__ or not __STDC__ */ --- 494,502 ---- # define obstack_free(OBSTACK, OBJ) \ __extension__ \ ({ struct obstack *__o = (OBSTACK); \ ! void *__obj = (void *) (OBJ); \ if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) \ ! __o->next_free = __o->object_base = (char *) __obj; \ else (obstack_free) (__o, __obj); }) #else /* not __GNUC__ or not __STDC__ */ *************** *** 530,555 **** # define obstack_1grow(h,datum) \ ( (((h)->next_free + 1 > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), 1), 0) : 0), \ ! (*((h)->next_free)++ = (datum))) # define obstack_ptr_grow(h,datum) \ ( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \ ! (*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum))) # define obstack_int_grow(h,datum) \ ( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \ ! (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum))) ! # define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr) ! # define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint) # define obstack_blank(h,length) \ ( (h)->temp = (length), \ (((h)->chunk_limit - (h)->next_free < (h)->temp) \ ? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \ ! ((h)->next_free += (h)->temp)) # define obstack_alloc(h,length) \ (obstack_blank ((h), (length)), obstack_finish ((h))) --- 539,567 ---- # define obstack_1grow(h,datum) \ ( (((h)->next_free + 1 > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), 1), 0) : 0), \ ! obstack_1grow_fast (h, datum)) # define obstack_ptr_grow(h,datum) \ ( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \ ! obstack_ptr_grow_fast (h, datum)) # define obstack_int_grow(h,datum) \ ( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \ ! obstack_int_grow_fast (h, datum)) ! ! # define obstack_ptr_grow_fast(h,aptr) \ ! (((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr)) ! # define obstack_int_grow_fast(h,aint) \ ! (((int *) ((h)->next_free += sizeof (int)))[-1] = (aptr)) # define obstack_blank(h,length) \ ( (h)->temp = (length), \ (((h)->chunk_limit - (h)->next_free < (h)->temp) \ ? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \ ! obstack_blank_fast (h, (h)->temp)) # define obstack_alloc(h,length) \ (obstack_blank ((h), (length)), obstack_finish ((h))) insight-6.1.ecos.patch; removed -fwritable-strings gcc flags (no longer supported by gcc, no longer needed by tcl/tk): diff -cr insight-6.1.orig/gdb/configure insight-6.1/gdb/configure *** insight-6.1.orig/gdb/configure Thu Feb 26 02:41:46 2004 --- insight-6.1/gdb/configure Thu Jan 12 14:47:43 2006 *************** *** 10187,10197 **** # know whether 8.2 will or not, but I bet it will. # I don't have to worry about 7.x since we don't support it. GDBTK_CFLAGS="" - if test "$GCC" = "yes"; then - if test "$TCL_VERSION" != "8.0" ; then - GDBTK_CFLAGS="-fwritable-strings" - fi - fi # Include some libraries that Tcl and Tk want. TCL_LIBS='$(LIBGUI) $(ITCL) $(ITK) $(TK) $(TCL) $(X11_LDFLAGS) $(X11_LIBS)' --- 10187,10192 ---- diff -cr insight-6.1.orig/libgui/configure insight-6.1/libgui/configure *** insight-6.1.orig/libgui/configure Wed Feb 12 06:18:53 2003 --- insight-6.1/libgui/configure Thu Jan 12 14:48:04 2006 *************** *** 1920,1933 **** rm -f conftest* - # Tcl8.1 requires writable strings for gcc - - if test "$GCC" = "yes"; then - LIBGUI_CFLAGS=-fwritable-strings - else - LIBGUI_CFLAGS= - fi - echo $ac_n "checking for cygwin32""... $ac_c" 1>&6 echo "configure:1933: checking for cygwin32" >&5 if eval "test \"`echo '$''{'ide_cv_os_cygwin32'+set}'`\" = set"; then --- 1920,1925 ---- repository.patch; ugly work to get the const - non-const -definitions to match across source; so far looks like I got these correct; also couple of minor changes in actual eCos code for x35 (the dos-newlines embedded in file v85x_v850_falxxl_i2c.h were truly nasty; the -fpermissive -flag could be restricted to perhaps just a couple of modules, but out of laziness I put it into global cflags). WATCH OUT for the two sequences of ^M in the patch section for v85x_v850_falxxl_i2c.h; you'll need to change these by hand into 'CR' control characters before running the patch: diff -cr repository-0.991.orig/host/libcdl/cdlcore.hxx repository-0.991/host/libcdl/cdlcore.hxx *** repository-0.991.orig/host/libcdl/cdlcore.hxx 2001-09-14 13:37:28.000000000 +0300 --- repository-0.991/host/libcdl/cdlcore.hxx 2006-02-11 23:03:19.000000000 +0200 *************** *** 1322,1328 **** private: // This is the Tcl command proc that gets registered for all // CdlInterpreterCommand instances. ! static int tcl_command_proc(ClientData, Tcl_Interp*, int, char*[]); // This key is used to access the CdlInterpreter assoc data. static char* cdlinterpreter_assoc_data_key; --- 1322,1328 ---- private: // This is the Tcl command proc that gets registered for all // CdlInterpreterCommand instances. ! static int tcl_command_proc(ClientData, Tcl_Interp*, int, const char*[]); // This key is used to access the CdlInterpreter assoc data. static char* cdlinterpreter_assoc_data_key; diff -cr repository-0.991.orig/host/libcdl/database.cxx repository-0.991/host/libcdl/database.cxx *** repository-0.991.orig/host/libcdl/database.cxx 2001-09-14 13:37:29.000000000 +0300 --- repository-0.991/host/libcdl/database.cxx 2006-02-11 23:03:19.000000000 +0200 *************** *** 312,318 **** int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, &list_entries)) { CdlParse::report_error(interp, diag_package + name, Tcl_GetStringResult(tcl_interp)); } else { if (0 == list_count) { --- 312,318 ---- int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, (const char ***)&list_entries)) { CdlParse::report_error(interp, diag_package + name, Tcl_GetStringResult(tcl_interp)); } else { if (0 == list_count) { *************** *** 542,548 **** int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, &list_entries)) { CdlParse::report_error(interp, diag_target + name, Tcl_GetStringResult(tcl_interp)); } else { if (0 == list_count) { --- 542,548 ---- int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, (const char ***)&list_entries)) { CdlParse::report_error(interp, diag_target + name, Tcl_GetStringResult(tcl_interp)); } else { if (0 == list_count) { *************** *** 584,590 **** int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, &list_entries)) { CdlParse::report_error(interp, diag_target + name, Tcl_GetStringResult(tcl_interp)); } else { // Allow for a dummy target spec, just in case it proves useful. --- 584,590 ---- int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, (const char ***)&list_entries)) { CdlParse::report_error(interp, diag_target + name, Tcl_GetStringResult(tcl_interp)); } else { // Allow for a dummy target spec, just in case it proves useful. *************** *** 622,628 **** int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, &list_entries)) { CdlParse::report_error(interp, diag_target + name, Tcl_GetStringResult(tcl_interp)); } else { for (int i = 0; i < list_count; i++) { --- 622,628 ---- int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, (const char ***)&list_entries)) { CdlParse::report_error(interp, diag_target + name, Tcl_GetStringResult(tcl_interp)); } else { for (int i = 0; i < list_count; i++) { *************** *** 658,664 **** int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, &list_entries)) { CdlParse::report_error(interp, diag_target + name, Tcl_GetStringResult(tcl_interp)); } else { for (int i = 0; i < list_count; i++) { --- 658,664 ---- int list_count = 0; char** list_entries = 0; Tcl_Interp* tcl_interp = interp->get_tcl_interpreter(); ! if (TCL_OK != Tcl_SplitList(tcl_interp, argv[1], &list_count, (const char ***)&list_entries)) { CdlParse::report_error(interp, diag_target + name, Tcl_GetStringResult(tcl_interp)); } else { for (int i = 0; i < list_count; i++) { diff -cr repository-0.991.orig/host/libcdl/interp.cxx repository-0.991/host/libcdl/interp.cxx *** repository-0.991.orig/host/libcdl/interp.cxx 2001-09-14 13:37:29.000000000 +0300 --- repository-0.991/host/libcdl/interp.cxx 2006-02-11 23:03:19.000000000 +0200 *************** *** 690,696 **** // raised up to the library level. That way the error count // etc. are kept accurate. if ((TCL_OK != result) && !cdl_result) { ! char* tcl_result = Tcl_GetStringResult(tcl_interp); if ((0 == tcl_result) || ('\0' == tcl_result[0])) { tcl_result = "Internal error, no additional information available."; } --- 690,696 ---- // raised up to the library level. That way the error count // etc. are kept accurate. if ((TCL_OK != result) && !cdl_result) { ! const char* tcl_result = Tcl_GetStringResult(tcl_interp); if ((0 == tcl_result) || ('\0' == tcl_result[0])) { tcl_result = "Internal error, no additional information available."; } *************** *** 746,752 **** // raised up to the library level. That way the error count // etc. are kept accurate. if ((TCL_OK != result) && !cdl_result) { ! char* tcl_result = Tcl_GetStringResult(tcl_interp); if ((0 == tcl_result) || ('\0' == tcl_result[0])) { tcl_result = "Internal error, no additional information available."; } --- 746,752 ---- // raised up to the library level. That way the error count // etc. are kept accurate. if ((TCL_OK != result) && !cdl_result) { ! const char* tcl_result = Tcl_GetStringResult(tcl_interp); if ((0 == tcl_result) || ('\0' == tcl_result[0])) { tcl_result = "Internal error, no additional information available."; } *************** *** 783,789 **** // raised up to the library level. That way the error count // etc. are kept accurate. if ((TCL_OK != result) && !cdl_result) { ! char* tcl_result = Tcl_GetStringResult(tcl_interp); if ((0 == tcl_result) || ('\0' == tcl_result[0])) { tcl_result = "Internal error, no additional information available."; } --- 783,789 ---- // raised up to the library level. That way the error count // etc. are kept accurate. if ((TCL_OK != result) && !cdl_result) { ! const char* tcl_result = Tcl_GetStringResult(tcl_interp); if ((0 == tcl_result) || ('\0' == tcl_result[0])) { tcl_result = "Internal error, no additional information available."; } *************** *** 870,876 **** // i.e. a function pointer. That function needs a pointer to the // CdlInterpreter object, which can be accessed via AssocData. int ! CdlInterpreterBody::tcl_command_proc(ClientData data, Tcl_Interp* tcl_interp, int argc, char* argv[]) { CYG_REPORT_FUNCNAMETYPE("CdlInterpreter::tcl_command_proc", "result %d"); CYG_REPORT_FUNCARG3XV(data, tcl_interp, argc); --- 870,876 ---- // i.e. a function pointer. That function needs a pointer to the // CdlInterpreter object, which can be accessed via AssocData. int ! CdlInterpreterBody::tcl_command_proc(ClientData data, Tcl_Interp* tcl_interp, int argc, const char* argv[]) { CYG_REPORT_FUNCNAMETYPE("CdlInterpreter::tcl_command_proc", "result %d"); CYG_REPORT_FUNCARG3XV(data, tcl_interp, argc); *************** *** 890,896 **** CYG_ASSERT_CLASSC(interp); try { ! result = (*command)(interp, argc, argv); } catch(std::bad_alloc e) { interp->set_result(CdlParse::construct_diagnostic(interp, "internal error", "", "Out of memory.")); result = TCL_ERROR; --- 890,896 ---- CYG_ASSERT_CLASSC(interp); try { ! result = (*command)(interp, argc, (char **)argv); } catch(std::bad_alloc e) { interp->set_result(CdlParse::construct_diagnostic(interp, "internal error", "", "Out of memory.")); result = TCL_ERROR; *************** *** 923,929 **** } x; x.command = command; ! if (0 == Tcl_CreateCommand(tcl_interp, const_cast<char*>(name.c_str()), &tcl_command_proc, x.data, 0)) { throw std::bad_alloc(); } CYG_REPORT_RETURN(); --- 923,929 ---- } x; x.command = command; ! if (0 == Tcl_CreateCommand(tcl_interp, const_cast<char*>(name.c_str()), &tcl_command_proc, x.data, NULL)) { throw std::bad_alloc(); } CYG_REPORT_RETURN(); *************** *** 1054,1060 **** CYG_PRECONDITIONC("" != name); std::string result = ""; ! char *tmp = Tcl_GetVar(tcl_interp, const_cast<char*>(name.c_str()), TCL_GLOBAL_ONLY); if (0 != tmp) { result = tmp; } --- 1054,1060 ---- CYG_PRECONDITIONC("" != name); std::string result = ""; ! const char *tmp = Tcl_GetVar(tcl_interp, const_cast<char*>(name.c_str()), TCL_GLOBAL_ONLY); if (0 != tmp) { result = tmp; } *************** *** 1184,1190 **** int count; char** array; ! if (TCL_OK != Tcl_SplitList(tcl_interp, const_cast<char*>(tcl_result.c_str()), &count, &array)) { throw std::bad_alloc(); } for (int i = 0; i < count; i++) { --- 1184,1190 ---- int count; char** array; ! if (TCL_OK != Tcl_SplitList(tcl_interp, const_cast<char*>(tcl_result.c_str()), &count, (const char ***)&array)) { throw std::bad_alloc(); } for (int i = 0; i < count; i++) { *************** *** 1251,1257 **** } int count; char** array; ! if (TCL_OK != Tcl_SplitList(tcl_interp, const_cast<char*>(tcl_result.c_str()), &count, &array)) { throw std::bad_alloc(); } for (int i = 0; i < count; i++) { --- 1251,1257 ---- } int count; char** array; ! if (TCL_OK != Tcl_SplitList(tcl_interp, const_cast<char*>(tcl_result.c_str()), &count, (const char ***)&array)) { throw std::bad_alloc(); } for (int i = 0; i < count; i++) { diff -cr repository-0.991.orig/packages/devs/wallclock/v85x/falxxl/current/include/v85x_v850_falxxl_i2c.h repository-0.991/packages/devs/wallclock/v85x/falxxl/current/include/v85x_v850_falxxl_i2c.h *** repository-0.991.orig/packages/devs/wallclock/v85x/falxxl/current/include/v85x_v850_falxxl_i2c.h 2002-06-19 17:04:17.000000000 +0300 --- repository-0.991/packages/devs/wallclock/v85x/falxxl/current/include/v85x_v850_falxxl_i2c.h 2006-02-11 23:04:21.000000000 +0200 *************** *** 54,60 **** #define FALSE 0 #endif ! #define ERROR 1 ^M #ifndef CYGDAT_IO_I2CBUS_DEVICE #define CYGDAT_IO_I2CBUS_DEVICE "/dev/i2c" --- 54,60 ---- #define FALSE 0 #endif ! #define ERROR 1 #ifndef CYGDAT_IO_I2CBUS_DEVICE #define CYGDAT_IO_I2CBUS_DEVICE "/dev/i2c" *************** *** 68,74 **** } i2c_device_t; #define IIC_WORD_ADDRESS 0x8000 ! #define IIC_MAX_ERROR ^M 100 extern size_t iic_cpy(i2c_device_t *cfg,cyg_uint8 *buf,size_t num); --- 68,74 ---- } i2c_device_t; #define IIC_WORD_ADDRESS 0x8000 ! #define IIC_MAX_ERROR 100 extern size_t iic_cpy(i2c_device_t *cfg,cyg_uint8 *buf,size_t num); diff -cr repository-0.991.orig/packages/hal/v85x/falxxl/current/cdl/hal_v85x_f35xxlsi.cdl repository-0.991/packages/hal/v85x/falxxl/current/cdl/hal_v85x_f35xxlsi.cdl *** repository-0.991.orig/packages/hal/v85x/falxxl/current/cdl/hal_v85x_f35xxlsi.cdl 2003-01-14 10:33:41.000000000 +0200 --- repository-0.991/packages/hal/v85x/falxxl/current/cdl/hal_v85x_f35xxlsi.cdl 2006-02-11 23:06:31.000000000 +0200 *************** *** 369,375 **** display "Global compiler flags" flavor data no_define ! default_value { "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" } description " This option controls the global compiler flags which are used to compile all packages by --- 369,375 ---- display "Global compiler flags" flavor data no_define ! default_value { "-Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority -fpermissive" } description " This option controls the global compiler flags which are used to compile all packages by ---- END of patches.
Compiling eCos on Suse Linux 10
Started by ●February 11, 2006