diff --git a/.cvsignore b/.cvsignore index 6b7c423..063a6ef 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -sdcc-src-2.8.0.tar.bz2 +sdcc-src-2.9.0.tar.bz2 diff --git a/sdcc-2.9.0-configure.diff b/sdcc-2.9.0-configure.diff new file mode 100644 index 0000000..3cd0cab --- /dev/null +++ b/sdcc-2.9.0-configure.diff @@ -0,0 +1,67 @@ +diff -urN sdcc.orig/configure.in sdcc/configure.in +--- sdcc.orig/configure.in 2009-01-19 13:06:40.000000000 -0800 ++++ sdcc/configure.in 2009-05-11 14:55:54.000000000 -0700 +@@ -332,12 +332,12 @@ + # This is the first time when CFLAGS are set/modified!! + adl_DD_COPT(CC, ggdb) + if test "$sdcc_cv_CCggdb" = "yes"; then +- CFLAGS="-ggdb ${CFLAGS}" ++: CFLAGS="-ggdb ${CFLAGS}" + fi + + adl_DD_COPT(CC, pipe) + if test "$sdcc_cv_CCpipe" = "yes"; then +- CFLAGS="-pipe $CFLAGS" ++: CFLAGS="-pipe $CFLAGS" + fi + + +diff -urN sdcc.orig/debugger/mcs51/configure.in sdcc/debugger/mcs51/configure.in +--- sdcc.orig/debugger/mcs51/configure.in 2007-01-03 13:19:58.000000000 -0800 ++++ sdcc/debugger/mcs51/configure.in 2009-05-11 15:00:54.000000000 -0700 +@@ -151,12 +151,12 @@ + # This is the first time when CFLAGS are set/modified!! + adl_DD_COPT(CC, ggdb) + if test "$sdcc_cv_CCggdb" = "yes"; then +- CFLAGS="-ggdb ${CFLAGS}" ++: CFLAGS="-ggdb ${CFLAGS}" + fi + + adl_DD_COPT(CC, pipe) + if test "$sdcc_cv_CCpipe" = "yes"; then +- CFLAGS="-pipe $CFLAGS" ++: CFLAGS="-pipe $CFLAGS" + fi + + +diff -urN sdcc.orig/sim/ucsim/configure.in sdcc/sim/ucsim/configure.in +--- sdcc.orig/sim/ucsim/configure.in 2007-06-28 02:06:31.000000000 -0700 ++++ sdcc/sim/ucsim/configure.in 2009-05-11 14:57:45.000000000 -0700 +@@ -519,21 +519,21 @@ + DD_COPT(CXX, ggdb) + DD_COPT(CXX, gstabs) + if test "$ucsim_cv_CXXgstabs" = "yes"; then +- gopt="-gstabs+ -g3" ++: gopt="-gstabs+ -g3" + elif test "$ucsim_cv_CXXggdb" = "yes"; then +- gopt="-ggdb -g3" ++: gopt="-ggdb -g3" + else +- gopt="-g" ++: gopt="-g" + fi + if test "$CXXFLAGS"x = x ;then +- CXXFLAGS="$gopt" ++: CXXFLAGS="$gopt" + else +- CXXFLAGS="$CXXFLAGS $gopt" ++: CXXFLAGS="$CXXFLAGS $gopt" + fi + + DD_COPT(CXX, pipe) + if test "$ucsim_cv_CXXpipe" = "yes"; then +- CXXFLAGS="$CXXFLAGS -pipe" ++: CXXFLAGS="$CXXFLAGS -pipe" + fi + + PICOPT="" diff --git a/sdcc-2.9.0-patch-out-getline.diff b/sdcc-2.9.0-patch-out-getline.diff new file mode 100644 index 0000000..fa7db11 --- /dev/null +++ b/sdcc-2.9.0-patch-out-getline.diff @@ -0,0 +1,879 @@ +Only in sdcc_2.9.0/as/link: getline.c +Only in sdcc_2.9.0/as/link: getline.h +diff -ruP sdcc_2.9.0/as/link/hc08/Makefile.in sdcc_2.9.0_new/as/link/hc08/Makefile.in +--- sdcc_2.9.0/as/link/hc08/Makefile.in 2009-01-10 00:04:14.000000000 +0100 ++++ sdcc_2.9.0_new/as/link/hc08/Makefile.in 2009-05-03 09:33:59.920935155 +0200 +@@ -46,7 +46,7 @@ + + ASXXLIBSRC = strcmpi.c + +-LKLIBSRC = getline.c lkaomf51.c lkar.c lkdata.c lkeval.c \ ++LKLIBSRC = lk_readnl.c lkaomf51.c lkar.c lkdata.c lkeval.c \ + lkhead.c lklex.c lklib.c lklibr.c lklist.c \ + lknoice.c lkrel.c lksdcclib.c lkstore.c lksym.c + +diff -ruP sdcc_2.9.0/as/link/lklib.c sdcc_2.9.0_new/as/link/lklib.c +--- sdcc_2.9.0/as/link/lklib.c 2009-02-05 23:15:19.000000000 +0100 ++++ sdcc_2.9.0_new/as/link/lklib.c 2009-05-03 09:33:53.032847214 +0200 +@@ -31,7 +31,7 @@ + + #include + +-#include "getline.h" ++#include "lk_readnl.h" + #include "aslink.h" + #include "lklibr.h" + #include "lkrel.h" +@@ -51,7 +51,7 @@ + { + char relfil[NINPUT]; + +- while (getline (relfil, sizeof (relfil), libfp) != NULL) ++ while (lk_readnl (relfil, sizeof (relfil), libfp) != NULL) + { + FILE *fp; + char str[PATH_MAX]; +@@ -126,7 +126,7 @@ + + D ("Searching symbol: %s\n", name); + +- while (getline (relfil, sizeof (relfil), libfp) != NULL) ++ while (lk_readnl (relfil, sizeof (relfil), libfp) != NULL) + { + char str[PATH_MAX]; + FILE *fp; +@@ -206,7 +206,7 @@ + * + * functions called: + * int fclose() c_library +- * char *getline() getline.c ++ * char *lk_readnl() lk_readnl.c + * FILE * fopen() c_library + * VOID link_main() lkmain.c + * int strlen() c_library +diff -ruP sdcc_2.9.0/as/link/lk_readnl.c sdcc_2.9.0_new/as/link/lk_readnl.c +--- sdcc_2.9.0/as/link/lk_readnl.c 1970-01-01 01:00:00.000000000 +0100 ++++ sdcc_2.9.0_new/as/link/lk_readnl.c 2009-05-03 09:31:37.874839633 +0200 +@@ -0,0 +1,93 @@ ++/* ++ lk_readnl.c - read a line from file into a buffer ++ version 1.0.0, April 25th, 2008 ++ ++ Copyright (c) 2008 Borut Razem ++ ++ This software is provided 'as-is', without any express or implied ++ warranty. In no event will the authors be held liable for any damages ++ arising from the use of this software. ++ ++ Permission is granted to anyone to use this software for any purpose, ++ including commercial applications, and to alter it and redistribute it ++ freely, subject to the following restrictions: ++ ++ 1. The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++ 2. Altered source versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. ++ 3. This notice may not be removed or altered from any source distribution. ++ ++ Borut Razem ++ borut.razem@siol.net ++*/ ++ ++#include "lk_readnl.h" ++ ++/******************************************************************************* ++ ++ lk_readnl ++ ++lk_readnl() reads in at most one less than size characters from stream and stores ++them into the buffer pointed to by s. Reading stops after an EOF or a newline. ++The newline character is not stored into the buffer. A '\0' is stored after the ++last character in the buffer. All the characters between size and the newline or ++EOF are skipped. ++ ++lk_readnl() return s on success, and NULL on error or when end of file occurs ++while no characters have been read. ++ ++*******************************************************************************/ ++ ++char * ++lk_readnl (char *s, int size, FILE * stream) ++{ ++ static char eof_f = 0; ++ int c = '\0'; ++ char *s_o; ++ char prev_c; ++ ++ if (eof_f) ++ { ++ eof_f = 0; ++ return NULL; ++ } ++ ++ s_o = s; ++ --size; /* for null terminator */ ++ while (size > 0) ++ { ++ prev_c = c; ++ if ((c = getc (stream)) == '\n' || c == EOF) ++ break; ++ ++ if (prev_c == '\r') ++ { ++ *s++ = prev_c; ++ if (--size <= 0) ++ break; ++ } ++ ++ if (c != '\r') ++ { ++ *s++ = c; ++ --size; ++ } ++ } ++ *s = '\0'; ++ ++ while (c != '\n' && c != EOF) ++ c = getc (stream); ++ ++ if (c == EOF) ++ { ++ if (s == s_o) ++ return NULL; ++ ++ eof_f = 1; ++ } ++ ++ return s_o; ++} +diff -ruP sdcc_2.9.0/as/link/lk_readnl.h sdcc_2.9.0_new/as/link/lk_readnl.h +--- sdcc_2.9.0/as/link/lk_readnl.h 1970-01-01 01:00:00.000000000 +0100 ++++ sdcc_2.9.0_new/as/link/lk_readnl.h 2009-05-03 09:31:32.383875928 +0200 +@@ -0,0 +1,44 @@ ++/* ++ lk_readnl.h - read a line from file into a buffer ++ version 1.0.0, Aprile 25th, 2008 ++ ++ Copyright (c) 2008 Borut Razem ++ ++ This software is provided 'as-is', without any express or implied ++ warranty. In no event will the authors be held liable for any damages ++ arising from the use of this software. ++ ++ Permission is granted to anyone to use this software for any purpose, ++ including commercial applications, and to alter it and redistribute it ++ freely, subject to the following restrictions: ++ ++ 1. The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++ 2. Altered source versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. ++ 3. This notice may not be removed or altered from any source distribution. ++ ++ Borut Razem ++ borut.razem@siol.net ++*/ ++ ++ ++#ifndef __LK_READNL_H ++#define __LK_READNL_H ++ ++#include ++ ++#ifdef __cplusplus ++extern "C" ++{ ++#endif ++ ++ char *lk_readnl (char *s, int size, FILE * stream); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __LK_READNL_H */ +diff -ruP sdcc_2.9.0/as/link/lkrel.c sdcc_2.9.0_new/as/link/lkrel.c +--- sdcc_2.9.0/as/link/lkrel.c 2009-02-05 23:15:19.000000000 +0100 ++++ sdcc_2.9.0_new/as/link/lkrel.c 2009-05-03 09:34:27.455805185 +0200 +@@ -32,7 +32,7 @@ + #include + #include + +-#include "getline.h" ++#include "lk_readnl.h" + #include "aslink.h" + #include "lkrel.h" + +@@ -79,7 +79,7 @@ + + end = (size >= 0) ? ftell (libfp) + size : -1; + +- while ((end < 0 || ftell (libfp) < end) && getline (str, sizeof (str), libfp) != NULL) ++ while ((end < 0 || ftell (libfp) < end) && lk_readnl (str, sizeof (str), libfp) != NULL) + { + if (0 == strcmp (str, "")) + return 1; +@@ -110,7 +110,7 @@ + * our object file and don't go into the next one. + */ + +- while ((end < 0 || ftell (fp) < end) && getline (buf, sizeof (buf), fp) != NULL) ++ while ((end < 0 || ftell (fp) < end) && lk_readnl (buf, sizeof (buf), fp) != NULL) + { + char symname[NINPUT]; + char c; +diff -ruP sdcc_2.9.0/as/link/lksdcclib.c sdcc_2.9.0_new/as/link/lksdcclib.c +--- sdcc_2.9.0/as/link/lksdcclib.c 2009-02-05 23:15:19.000000000 +0100 ++++ sdcc_2.9.0_new/as/link/lksdcclib.c 2009-05-03 09:35:29.888085514 +0200 +@@ -32,13 +32,13 @@ + #include + #include + +-#include "getline.h" ++#include "lk_readnl.h" + #include "aslink.h" + #include "lklibr.h" + #include "lkrel.h" + + #define EQ(A,B) !strcmp((A),(B)) +-#define MAXLINE 254 /*when using getline */ ++#define MAXLINE 254 /* when using lk_readnl */ + + + static int +@@ -72,14 +72,14 @@ + char str[NINPUT]; + int state = 0; + +- while (getline (str, sizeof (str), libfp) != NULL) ++ while (lk_readnl (str, sizeof (str), libfp) != NULL) + { + switch (state) + { + case 0: + if (EQ (str, "")) + { +- if (NULL != getline (str, sizeof (str), libfp) && EQ (str, ModName)) ++ if (NULL != lk_readnl (str, sizeof (str), libfp) && EQ (str, ModName)) + state = 1; + else + return 0; +@@ -105,7 +105,7 @@ + long IndexOffset = 0; + pmlibrarysymbol ThisSym = NULL; + +- while (getline (FLine, sizeof (FLine), libfp)) ++ while (lk_readnl (FLine, sizeof (FLine), libfp)) + { + switch (state) + { +@@ -113,7 +113,7 @@ + if (EQ (FLine, "")) + { + /*The next line has the size of the index */ +- getline (FLine, sizeof (FLine), libfp); ++ lk_readnl (FLine, sizeof (FLine), libfp); + IndexOffset = atol (FLine); + state = 1; + } +@@ -128,7 +128,7 @@ + + /* The next line has the name of the module and the offset + of the corresponding embedded file in the library */ +- getline (FLine, sizeof (FLine), libfp); ++ lk_readnl (FLine, sizeof (FLine), libfp); + sscanf (FLine, "%s %ld", ModName, &FileOffset); + state = 2; + +@@ -205,7 +205,7 @@ + int state = 0; + int ret = 0; + +- while (getline (str, sizeof (str), libfp) != NULL) ++ while (lk_readnl (str, sizeof (str), libfp) != NULL) + { + switch (state) + { +@@ -239,7 +239,7 @@ + int state = 0; + long IndexOffset = 0, FileOffset; + +- while (getline (FLine, sizeof (FLine), libfp)) ++ while (lk_readnl (FLine, sizeof (FLine), libfp)) + { + char filspc[PATH_MAX]; + +@@ -260,7 +260,7 @@ + if (EQ (FLine, "")) + { + /* The next line has the size of the index */ +- getline (FLine, sizeof (FLine), libfp); ++ lk_readnl (FLine, sizeof (FLine), libfp); + IndexOffset = atol (FLine); + state = 1; + } +@@ -271,7 +271,7 @@ + { + /* The next line has the name of the module and the offset + of the corresponding embedded file in the library */ +- getline (FLine, sizeof (FLine), libfp); ++ lk_readnl (FLine, sizeof (FLine), libfp); + sscanf (FLine, "%s %ld", ModName, &FileOffset); + state = 2; + } +diff -ruP sdcc_2.9.0/as/link/mcs51/Makefile.in sdcc_2.9.0_new/as/link/mcs51/Makefile.in +--- sdcc_2.9.0/as/link/mcs51/Makefile.in 2009-01-10 00:04:14.000000000 +0100 ++++ sdcc_2.9.0_new/as/link/mcs51/Makefile.in 2009-05-03 09:33:58.180806351 +0200 +@@ -46,7 +46,7 @@ + + ASXXLIBSRC = strcmpi.c + +-LKLIBSRC = getline.c lkaomf51.c lkar.c lkdata.c lkeval.c \ ++LKLIBSRC = lk_readnl.c lkaomf51.c lkar.c lkdata.c lkeval.c \ + lkhead.c lklex.c lklib.c lklibr.c lklist.c \ + lknoice.c lkrel.c lksdcclib.c lkstore.c lksym.c + +diff -ruP sdcc_2.9.0/as/link/z80/Makefile.in sdcc_2.9.0_new/as/link/z80/Makefile.in +--- sdcc_2.9.0/as/link/z80/Makefile.in 2009-01-10 00:04:14.000000000 +0100 ++++ sdcc_2.9.0_new/as/link/z80/Makefile.in 2009-05-03 09:33:56.000806236 +0200 +@@ -13,7 +13,7 @@ + + LKLIB = $(srcdir)/.. + +-LKLIBSRC = getline.c lkaomf51.c lkar.c lkdata.c lkeval.c \ ++LKLIBSRC = lk_readnl.c lkaomf51.c lkar.c lkdata.c lkeval.c \ + lkhead.c lklex.c lklib.c lklibr.c lklist.c \ + lknoice.c lkrel.c lksdcclib.c lkstore.c lksym.c + +diff -ruP sdcc_2.9.0/ChangeLog sdcc_2.9.0_new/ChangeLog +--- sdcc_2.9.0/ChangeLog 2009-03-15 14:30:34.000000000 +0100 ++++ sdcc_2.9.0_new/ChangeLog 2009-05-03 14:22:47.139942135 +0200 +@@ -1,3 +1,35 @@ ++2009-05-03 Borut Razem ++ ++ * as/link/hc08/Makefile.in, as/link/mcs51/Makefile.in, ++ as/link/z80/Makefile.in, as/link/lk_readnl.c, as/link/lklib.c, ++ as/link/lk_readnl.h, as/link/lk_readnl.h, as/link/lkrel.c, ++ as/link/lksdcclib.c: getline renamed to lk_readln to prevent ++ conflicts with Fedora 11 glibc-2.9.90-19 getline ++ ++2009-04-28 Borut Razem ++ ++ * fixed GCC 4.4.0 mingw compilation: ++ sim/ucsim/cmd.src/cmdlex.cc: regenerated - added #include ++ * src/SDCCsymt.c: fixed warning: ++ suggest parentheses around operand of '!' or change '&' to '&&' or ++ '!' to '~' ++ * support/scripts/sdcc_mingw32: sync with sdcc-build ++ ++2009-04-27 Borut Razem ++ ++ * fixed GCC 4.4.0 mingw compilation: ++ * sim/ucsim/cmd.src/cmdlex.l: added #include ++ * support/cpp/sdcpp-opts.c: fixed warning: ++ unknown conversion type character 'm' in format, ++ use strerror(errno) instead of %m glibc extension format specifier ++ * src/SDCCsymt.c: fixed warning: ++ suggest parentheses around operand of '!' or change '&' to '&&' or ++ '!' to '~' ++ * src/pic16/pcode.c, src/pic16/glue.c: fixed warning: ++ unknown conversion type character 'h' in format, ++ replaced hh printf format specifier with parameter casting to ++ unsigned char ++ + 2009-03-15 Borut Razem + + * support/scripts/repack_release.sh: added +diff -ruP sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.cc sdcc_2.9.0_new/sim/ucsim/cmd.src/cmdlex.cc +--- sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.cc 2004-07-16 18:32:30.000000000 +0200 ++++ sdcc_2.9.0_new/sim/ucsim/cmd.src/cmdlex.cc 2009-05-03 09:56:34.837824283 +0200 +@@ -1,6 +1,6 @@ +-#line 2 "cmdlex.cc" ++#line 2 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.cc" + +-#line 4 "cmdlex.cc" ++#line 4 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.cc" + + #define YY_INT_ALIGNED short int + +@@ -9,13 +9,16 @@ + #define FLEX_SCANNER + #define YY_FLEX_MAJOR_VERSION 2 + #define YY_FLEX_MINOR_VERSION 5 +-#define YY_FLEX_SUBMINOR_VERSION 31 ++#define YY_FLEX_SUBMINOR_VERSION 35 + #if YY_FLEX_SUBMINOR_VERSION > 0 + #define FLEX_BETA + #endif + + /* The c++ scanner is a mess. The FlexLexer.h header file relies on the +- * following macro. ++ * following macro. This is required in order to pass the c++-multiple-scanners ++ * test in the regression suite. We get reports that it breaks inheritance. ++ * We will address this in a future release of flex, or omit the C++ scanner ++ * altogether. + */ + #define yyFlexLexer yyFlexLexer + +@@ -32,7 +35,15 @@ + + /* C99 systems have . Non-C99 systems may or may not. */ + +-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L ++#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L ++ ++/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, ++ * if you want the limit (max/min) macros for int types. ++ */ ++#ifndef __STDC_LIMIT_MACROS ++#define __STDC_LIMIT_MACROS 1 ++#endif ++ + #include + typedef int8_t flex_int8_t; + typedef uint8_t flex_uint8_t; +@@ -83,6 +94,7 @@ + /* begin standard C++ headers. */ + #include + #include ++#include + #include + #include + /* end standard C++ headers. */ +@@ -94,11 +106,12 @@ + + #else /* ! __cplusplus */ + +-#if __STDC__ ++/* C99 requires __STDC__ to be defined as 1. */ ++#if defined (__STDC__) + + #define YY_USE_CONST + +-#endif /* __STDC__ */ ++#endif /* defined (__STDC__) */ + #endif /* ! __cplusplus */ + + #ifdef YY_USE_CONST +@@ -143,6 +156,10 @@ + #define YY_BUF_SIZE 16384 + #endif + ++/* The state buf must be large enough to hold one state per character in the main buffer. ++ */ ++#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) ++ + #ifndef YY_TYPEDEF_YY_BUFFER_STATE + #define YY_TYPEDEF_YY_BUFFER_STATE + typedef struct yy_buffer_state *YY_BUFFER_STATE; +@@ -172,14 +189,9 @@ + + #define unput(c) yyunput( c, (yytext_ptr) ) + +-/* The following is because we cannot portably get our hands on size_t +- * (without autoconf's help, which isn't available because we want +- * flex-generated scanners to compile on their own). +- */ +- + #ifndef YY_TYPEDEF_YY_SIZE_T + #define YY_TYPEDEF_YY_SIZE_T +-typedef unsigned int yy_size_t; ++typedef size_t yy_size_t; + #endif + + #ifndef YY_STRUCT_YY_BUFFER_STATE +@@ -405,8 +417,9 @@ + #define yymore() yymore_used_but_not_detected + #define YY_MORE_ADJ 0 + #define YY_RESTORE_YY_MORE_OFFSET +-#line 1 "cmdlex.l" +-#line 2 "cmdlex.l" ++#line 1 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" ++#line 2 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" ++#include + #include "cmdlexcl.h" + #include "cmdpars.h" + +@@ -417,7 +430,7 @@ + #define tok(x) (YY_cl_ucsim_parser_CLASS::x) + #define lexer_obj (dynamic_cast(this)) + +-#line 421 "cmdlex.cc" ++#line 434 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.cc" + + #define INITIAL 0 + +@@ -517,14 +530,14 @@ + register char *yy_cp, *yy_bp; + register int yy_act; + +-#line 14 "cmdlex.l" ++#line 15 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + + +-#line 524 "cmdlex.cc" ++#line 537 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.cc" + +- if ( (yy_init) ) ++ if ( !(yy_init) ) + { +- (yy_init) = 0; ++ (yy_init) = 1; + + #ifdef YY_USER_INIT + YY_USER_INIT; +@@ -605,67 +618,67 @@ + + case 1: + YY_RULE_SETUP +-#line 16 "cmdlex.l" ++#line 17 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + ; + YY_BREAK + case 2: + YY_RULE_SETUP +-#line 18 "cmdlex.l" ++#line 19 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_PLUS)); + YY_BREAK + case 3: + YY_RULE_SETUP +-#line 19 "cmdlex.l" ++#line 20 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_MINUS)); + YY_BREAK + case 4: + YY_RULE_SETUP +-#line 20 "cmdlex.l" ++#line 21 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_ASTERIX)); + YY_BREAK + case 5: + YY_RULE_SETUP +-#line 21 "cmdlex.l" ++#line 22 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_SLASH)); + YY_BREAK + case 6: + YY_RULE_SETUP +-#line 22 "cmdlex.l" ++#line 23 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_LEFT_PAREN)); + YY_BREAK + case 7: + YY_RULE_SETUP +-#line 23 "cmdlex.l" ++#line 24 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_RIGHT_PAREN)); + YY_BREAK + case 8: + YY_RULE_SETUP +-#line 24 "cmdlex.l" ++#line 25 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_LEFT_BRACKET)); + YY_BREAK + case 9: + YY_RULE_SETUP +-#line 25 "cmdlex.l" ++#line 26 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_RIGHT_BRACKET)); + YY_BREAK + case 10: + YY_RULE_SETUP +-#line 26 "cmdlex.l" ++#line 27 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_EQUAL)); + YY_BREAK + case 11: + YY_RULE_SETUP +-#line 27 "cmdlex.l" ++#line 28 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_DOT)); + YY_BREAK + case 12: + YY_RULE_SETUP +-#line 28 "cmdlex.l" ++#line 29 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(tok(PTOK_AMPERSAND)); + YY_BREAK + case 13: + YY_RULE_SETUP +-#line 30 "cmdlex.l" ++#line 31 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + { + yylval->number= strtol(yytext, 0, 0); + return(YY_cl_ucsim_parser_CLASS::PTOK_NUMBER); +@@ -673,20 +686,20 @@ + YY_BREAK + case 14: + YY_RULE_SETUP +-#line 35 "cmdlex.l" ++#line 36 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + return(lexer_obj->check_id(yytext)); + YY_BREAK + case 15: + YY_RULE_SETUP +-#line 37 "cmdlex.l" ++#line 38 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + ; + YY_BREAK + case 16: + YY_RULE_SETUP +-#line 39 "cmdlex.l" ++#line 40 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + ECHO; + YY_BREAK +-#line 690 "cmdlex.cc" ++#line 703 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.cc" + case YY_STATE_EOF(INITIAL): + yyterminate(); + +@@ -819,12 +832,14 @@ + } /* end of scanning one token */ + } /* end of yylex */ + ++/* The contents of this function are C++ specific, so the () macro is not used. ++ */ + yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ) + { + yyin = arg_yyin; + yyout = arg_yyout; + yy_c_buf_p = 0; +- yy_init = 1; ++ yy_init = 0; + yy_start = 0; + yy_flex_debug = 0; + yylineno = 1; // this will only get updated if %option yylineno +@@ -837,23 +852,28 @@ + yy_more_offset = yy_prev_more_offset = 0; + + yy_start_stack_ptr = yy_start_stack_depth = 0; +- yy_start_stack = 0; ++ yy_start_stack = NULL; + +- (yy_buffer_stack) = 0; +- (yy_buffer_stack_top) = 0; +- (yy_buffer_stack_max) = 0; ++ yy_buffer_stack = 0; ++ yy_buffer_stack_top = 0; ++ yy_buffer_stack_max = 0; + + yy_state_buf = 0; + + } + ++/* The contents of this function are C++ specific, so the () macro is not used. ++ */ + yyFlexLexer::~yyFlexLexer() + { + delete [] yy_state_buf; + yyfree(yy_start_stack ); + yy_delete_buffer( YY_CURRENT_BUFFER ); ++ yyfree(yy_buffer_stack ); + } + ++/* The contents of this function are C++ specific, so the () macro is not used. ++ */ + void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out ) + { + if ( new_in ) +@@ -954,7 +974,7 @@ + + else + { +- size_t num_to_read = ++ int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) +@@ -999,7 +1019,7 @@ + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +- (yy_n_chars), num_to_read ); ++ (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } +@@ -1023,6 +1043,14 @@ + else + ret_val = EOB_ACT_CONTINUE_SCAN; + ++ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { ++ /* Extend the array by 50%, plus the number we really need. */ ++ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); ++ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); ++ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) ++ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); ++ } ++ + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; +@@ -1428,7 +1456,9 @@ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); +- ++ if ( ! (yy_buffer_stack) ) ++ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); ++ + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; +@@ -1446,6 +1476,8 @@ + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); ++ if ( ! (yy_buffer_stack) ) ++ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); +@@ -1469,8 +1501,7 @@ + (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size ); + + if ( ! (yy_start_stack) ) +- YY_FATAL_ERROR( +- "out of memory expanding start-condition stack" ); ++ YY_FATAL_ERROR( "out of memory expanding start-condition stack" ); + } + + (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; +@@ -1528,7 +1559,7 @@ + static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) + { + register int i; +- for ( i = 0; i < n; ++i ) ++ for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } + #endif +@@ -1537,7 +1568,7 @@ + static int yy_flex_strlen (yyconst char * s ) + { + register int n; +- for ( n = 0; s[n]; ++n ) ++ for ( n = 0; s[n]; ++n ) + ; + + return n; +@@ -1568,19 +1599,7 @@ + + #define YYTABLES_NAME "yytables" + +-#undef YY_NEW_FILE +-#undef YY_FLUSH_BUFFER +-#undef yy_set_bol +-#undef yy_new_buffer +-#undef yy_set_interactive +-#undef yytext_ptr +-#undef YY_DO_BEFORE_ACTION +- +-#ifdef YY_DECL_IS_OURS +-#undef YY_DECL_IS_OURS +-#undef YY_DECL +-#endif +-#line 39 "cmdlex.l" ++#line 40 "../../../../sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l" + + + +diff -ruP sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l sdcc_2.9.0_new/sim/ucsim/cmd.src/cmdlex.l +--- sdcc_2.9.0/sim/ucsim/cmd.src/cmdlex.l 2004-07-16 18:32:30.000000000 +0200 ++++ sdcc_2.9.0_new/sim/ucsim/cmd.src/cmdlex.l 2009-05-03 09:48:14.354802912 +0200 +@@ -1,4 +1,5 @@ + %{ ++#include + #include "cmdlexcl.h" + #include "cmdpars.h" + +diff -ruP sdcc_2.9.0/src/pic16/glue.c sdcc_2.9.0_new/src/pic16/glue.c +--- sdcc_2.9.0/src/pic16/glue.c 2008-12-07 00:31:13.000000000 +0100 ++++ sdcc_2.9.0_new/src/pic16/glue.c 2009-05-03 13:50:18.000000000 +0200 +@@ -1399,9 +1399,9 @@ + + for(i=0;i<=(pic16->cwInfo.confAddrEnd-pic16->cwInfo.confAddrStart);i++) + if(pic16->cwInfo.crInfo[i].emit) //mask != -1) +- fprintf (of, "\t__config 0x%x, 0x%hhx\n", ++ fprintf (of, "\t__config 0x%x, 0x%02x\n", + pic16->cwInfo.confAddrStart+i, +- pic16->cwInfo.crInfo[i].value); ++ (unsigned char) pic16->cwInfo.crInfo[i].value); + } + + void pic16_emitIDRegs(FILE *of) +@@ -1410,9 +1410,9 @@ + + for(i=0;i<=(pic16->idInfo.idAddrEnd-pic16->idInfo.idAddrStart);i++) + if(pic16->idInfo.irInfo[i].emit) +- fprintf (of, "\t__idlocs 0x%06x, 0x%hhx\n", ++ fprintf (of, "\t__idlocs 0x%06x, 0x%02x\n", + pic16->idInfo.idAddrStart+i, +- pic16->idInfo.irInfo[i].value); ++ (unsigned char) pic16->idInfo.irInfo[i].value); + } + + +diff -ruP sdcc_2.9.0/src/pic16/pcode.c sdcc_2.9.0_new/src/pic16/pcode.c +--- sdcc_2.9.0/src/pic16/pcode.c 2009-03-10 02:29:02.000000000 +0100 ++++ sdcc_2.9.0_new/src/pic16/pcode.c 2009-05-03 13:50:18.000000000 +0200 +@@ -3977,7 +3977,7 @@ + + pcop->name = NULL; + //if(lit>=0) +- sprintf(s,"0x%02hhx", (unsigned char)lit); ++ sprintf(s,"0x%02x", (unsigned char) lit); + //else + // sprintf(s, "%i", lit); + +diff -ruP sdcc_2.9.0/src/SDCCsymt.c sdcc_2.9.0_new/src/SDCCsymt.c +--- sdcc_2.9.0/src/SDCCsymt.c 2008-11-15 15:13:47.000000000 +0100 ++++ sdcc_2.9.0_new/src/SDCCsymt.c 2009-05-03 13:50:32.000000000 +0200 +@@ -2324,7 +2324,7 @@ + srcScls = SPEC_SCLS (src); + + /* Compensate for const to const code change in checkSClass() */ +- if (!level & port->mem.code_ro && SPEC_CONST (dest)) ++ if (((!level) & port->mem.code_ro) && SPEC_CONST (dest)) + { + if (srcScls == S_CODE && destScls == S_FIXED) + destScls = S_CODE; +diff -ruP sdcc_2.9.0/support/cpp/sdcpp-opts.c sdcc_2.9.0_new/support/cpp/sdcpp-opts.c +--- sdcc_2.9.0/support/cpp/sdcpp-opts.c 2008-03-31 20:10:22.000000000 +0200 ++++ sdcc_2.9.0_new/support/cpp/sdcpp-opts.c 2009-05-03 13:57:25.445053848 +0200 +@@ -564,7 +564,7 @@ + + if (out_stream == NULL) + { +- fatal_error ("opening output file %s: %m", out_fname); ++ fatal_error ("opening output file %s: %s", out_fname, strerror(errno)); + return false; + } + +@@ -641,7 +641,7 @@ + { + deps_stream = fopen (deps_file, deps_append ? "a": "w"); + if (!deps_stream) +- fatal_error ("opening dependency file %s: %m", deps_file); ++ fatal_error ("opening dependency file %s: %s", deps_file, strerror(errno)); + } + } + +@@ -651,10 +651,10 @@ + + if (deps_stream && deps_stream != out_stream + && (ferror (deps_stream) || fclose (deps_stream))) +- fatal_error ("closing dependency file %s: %m", deps_file); ++ fatal_error ("closing dependency file %s: %s", deps_file, strerror(errno)); + + if (out_stream && (ferror (out_stream) || fclose (out_stream))) +- fatal_error ("when writing output to %s: %m", out_fname); ++ fatal_error ("when writing output to %s: %s", out_fname, strerror(errno)); + } + + /* Either of two environment variables can specify output of diff --git a/sdcc.spec b/sdcc.spec index b43e22f..be6dab0 100644 --- a/sdcc.spec +++ b/sdcc.spec @@ -1,22 +1,24 @@ Name: sdcc -Version: 2.8.0 -Release: 5%{?dist} +Version: 2.9.0 +Release: 1%{?dist} Summary: Small Device C Compiler Group: Applications/Engineering License: GPLv2+ URL: http://sdcc.sourceforge.net/ -Source0: http://downloads.sourceforge.net/%{name}/%{name}-src-%{version}.tar.bz2 +Source0: http://downloads.sourceforge.net/sdcc/sdcc-src-%{version}.tar.bz2 Source1: README.fedora -Patch0: sdcc-2.8.0-configure.diff -Patch1: sdcc-2.8.0-debugger-makefile.diff -Patch2: sdcc-2.8.0-doc-lyx.diff +Patch0: sdcc-2.9.0-patch-out-getline.diff +Patch1: sdcc-2.9.0-configure.diff +#Patch1: sdcc-2.8.0-debugger-makefile.diff +#Patch2: sdcc-2.8.0-doc-lyx.diff BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: flex +BuildRequires: autoconf BuildRequires: bison +BuildRequires: flex +BuildRequires: gc-devel BuildRequires: lyx BuildRequires: latex2html -BuildRequires: gc-devel %description @@ -31,7 +33,6 @@ Summary: Small Device C Compiler Group: Applications/Engineering License: GPLv2+ Requires: sdcc = %{version}-%{release} -BuildArch: noarch %description libc-sources SDCC is a C compiler for 8051 class and similar microcontrollers. @@ -45,7 +46,6 @@ Group: Applications/Editors License: GPLv2+ Requires: sdcc = %{version}-%{release} Requires: emacs(bin) -BuildArch: noarch %description -n emacs-sdcc Emacs extensions for SDCC. @@ -54,12 +54,18 @@ Emacs extensions for SDCC. %prep %setup -q -n sdcc %patch0 -p1 -%patch1 -p0 -%patch2 -p1 +%patch1 -p1 +#%%patch1 -p0 +#%%patch2 -p1 find -name '*.[ch]' -exec chmod -x '{}' \; %build +# Rebuild configure scripts (patched configure.in s in patch0). +autoconf +cd debugger/mcs51 ; autoconf ; cd ../.. +cd sim/ucsim ; autoconf ; cd ../.. + %configure --enable-doc --enable-libgc STRIP=: make Q= @@ -97,13 +103,11 @@ rm -rf $RPM_BUILD_ROOT %{_libexecdir}/%{name} %{_datadir}/%{name} %exclude %{_datadir}/%{name}/lib/src -%exclude %{_datadir}/%{name}/lib/*/*.asm %files libc-sources %defattr(-,root,root,-) %{_datadir}/%{name}/lib/src -%{_datadir}/%{name}/lib/*/*.asm %files -n emacs-sdcc @@ -112,6 +116,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Thu Apr 30 2009 Conrad Meyer - 2.9.0-1 +- Bump to 2.9.0. + * Thu Feb 26 2009 Conrad Meyer - 2.8.0-5 - Make subpackages noarch. diff --git a/sources b/sources index dcc23af..aac2711 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -1b9c2e581b92d5e3f13bca37c5784080 sdcc-src-2.8.0.tar.bz2 +a6151ed328fd3bc48305ffbc628dc122 sdcc-src-2.9.0.tar.bz2