bug fixes
authordrdani <drdani@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 27 Jul 2004 13:42:53 +0000 (13:42 +0000)
committerdrdani <drdani@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Tue, 27 Jul 2004 13:42:53 +0000 (13:42 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3403 4a8a32a2-be11-0410-ad9d-d568d2c75423

15 files changed:
sim/ucsim/.version
sim/ucsim/NEWS
sim/ucsim/cmd.src/cmdconf.cc
sim/ucsim/cmd.src/cmdutil.cc
sim/ucsim/cmd.src/cmdutil.h
sim/ucsim/cmd.src/newcmd.cc
sim/ucsim/cmd.src/newcmdcl.h
sim/ucsim/configure
sim/ucsim/configure.in
sim/ucsim/errorcl.h
sim/ucsim/libtool
sim/ucsim/s51.src/uc51.cc
sim/ucsim/sim.src/mem.cc
sim/ucsim/sim.src/stack.cc
sim/ucsim/sim.src/uc.cc

index cb0c939a936f142669d38cf1ece330266d730965..be14282b7fffb9ba95d51c6546ed9816dc8f3ff8 100644 (file)
@@ -1 +1 @@
-0.5.2
+0.5.3
index ce227235d15b0cfae2e3059f7e8b97b62c734f94..0fd259e76b926ea01959a09b261b70844af11782 100644 (file)
@@ -39,3 +39,9 @@ Bug fixes
 0.5.2
 
 Bug fixes to run sdcc regression tests
+
+
+0.5.3
+
+Eliminate need of flex (for compile)
+Fix of some includes
index a78cc7f75ecf6eda925eea851c16ef4bc5098d2c..6cd15ff6c724e2fdde758f8da4910810e33d3ff9 100644 (file)
@@ -94,7 +94,7 @@ COMMAND_DO_WORK_APP(cl_conf_objects_cmd)
                                 cmdline->param(1),
                                 cmdline->param(2),
                                 cmdline->param(3) };*/
-  conf_objects_cmd_print_node(con, 0, application);
+  conf_objects_cmd_print_node(con, 0, /*application*/&error_class_base);
   return(DD_FALSE);
 }
 
index aa831bf8c083feb07587cc36b7a0f8db3c0d38f5..831bfa0012c576efd3bccbb6b9b6ed04c3c01eab 100644 (file)
@@ -291,4 +291,50 @@ proc_escape(char *string, int *len)
 }
 
 
+int
+cmd_vfprintf(FILE *f, char *format, va_list ap)
+{
+  int ret;
+  if (!f)
+    return(0);
+#ifdef HAVE_VASPRINTF
+  char *msg= NULL;
+  vasprintf(&msg, format, ap);
+  ret= fprintf(f, "%s", msg);
+  free(msg);
+#else
+#  ifdef HAVE_VSNPRINTF
+  char msg[80*25];
+  vsnprintf(msg, 80*25, format, ap);
+  ret= fprintf(f, "%s", msg);
+#  else
+#    ifdef HAVE_VPRINTF
+  char msg[80*25];
+  vsprintf(msg, format, ap); /* Dangerous */
+  ret= fprintf(f, "%s", msg);
+#    else
+#      ifdef HAVE_DOPRNT
+  /* ??? */
+  /*strcpy(msg, "Unimplemented printf has called.\n");*/
+#      else
+  /*strcpy(msg, "printf can not be implemented, upgrade your libc.\n");*/
+#      endif
+#    endif
+#  endif
+#endif
+  fflush(f);
+  return(ret);
+}
+
+int
+cmd_fprintf(FILE *f, char *format, ...)
+{
+  va_list ap;
+  va_start(ap, format);
+  int ret= cmd_vfprintf(f, format, ap);
+  va_end(ap);
+  return(ret);
+}
+
+
 /* End of cmd.src/cmdutil.cc */
index 0e630d9d59a42e2aeebba153ac737afeef468855..229bdc35d749e0d26d9069208c8901026e82dfed 100644 (file)
@@ -43,6 +43,8 @@ extern struct name_entry *get_name_entry(struct name_entry tabl[],
                              uchar *bitaddr, uchar *bitmask,
                              char **symname);*/
 extern char *proc_escape(char *string, int *len);
+extern int cmd_vfprintf(FILE *f, char *format, va_list ap);
+extern int cmd_fprintf(FILE *f, char *format, ...);
 
 
 #endif
index cf32c05c4f610af5932f7eb0d0be499334679f8e..8aedf819bb357b4d0f69d998f97a2d5492577397 100644 (file)
@@ -953,6 +953,16 @@ cl_commander::all_print(char *string, int length)
  * Printing to actual_console
  */
 
+FILE *
+cl_commander::get_out(void)
+{
+  if (actual_console)
+    return(actual_console->get_out());
+  else if (frozen_console)
+    return(frozen_console->get_out());
+  return(0);
+}
+
 int
 cl_commander::dd_printf(char *format, ...)
 {
index 6e3af3e443cd988e48e14c997e3ef4dbf757224b..bbdad5c8cf9aa52b916fd865e4c935e31fb11455 100644 (file)
@@ -212,6 +212,7 @@ public:
   void set_fd_set(void);
 
   void prompt(void);
+  FILE *get_out(void);
   int all_printf(char *format, ...);   // print to all consoles
   int all_print(char *string, int length);
   int dd_printf(char *format, ...);    // print to actual_console
index 721ac7308d92709f7341862279bdee182795b0b1..3c63d5f41f675ab94e863981e1a7f0aca475d6f4 100755 (executable)
@@ -11635,7 +11635,7 @@ if test "${ucsim_cv_CXXggdb+set}" = set; then
 else
   cat >_test_.c <<EOF
 #include <stdio.h>
-void main(void) {}
+int main(void) {return(0);}
 EOF
 $CXX -v -ggdb -c _test_.c 1>&5 2>&5
 if test "$?" = "0"; then
 echo "$as_me:$LINENO: result: $ucsim_cv_CXXggdb" >&5
 echo "${ECHO_T}$ucsim_cv_CXXggdb" >&6
 
-if test "$ucsim_cv_CXXggdb" = "yes"; then
-       gopt="-ggdb"
+
+echo "$as_me:$LINENO: checking whether $CXX accepts -gstabs" >&5
+echo $ECHO_N "checking whether $CXX accepts -gstabs... $ECHO_C" >&6
+if test "${ucsim_cv_CXXgstabs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >_test_.c <<EOF
+#include <stdio.h>
+int main(void) {return(0);}
+EOF
+$CXX -v -gstabs -c _test_.c 1>&5 2>&5
+if test "$?" = "0"; then
+  ucsim_cv_CXXgstabs="yes"
+else
+  ucsim_cv_CXXgstabs="no"
+fi
+rm -f _test_.* a.out
+fi
+echo "$as_me:$LINENO: result: $ucsim_cv_CXXgstabs" >&5
+echo "${ECHO_T}$ucsim_cv_CXXgstabs" >&6
+
+if test "$ucsim_cv_CXXgstabs" = "yes"; then
+   gopt="-gstabs+ -g3"
+elif test "$ucsim_cv_CXXggdb" = "yes"; then
+     gopt="-ggdb -g3"
 else
-       gopt="-g"
+     gopt="-g"
 fi
 if test "$CXXFLAGS"x = x ;then
        CXXFLAGS="$gopt"
@@ -11667,7 +11690,7 @@ if test "${ucsim_cv_CXXpipe+set}" = set; then
 else
   cat >_test_.c <<EOF
 #include <stdio.h>
-void main(void) {}
+int main(void) {return(0);}
 EOF
 $CXX -v -pipe -c _test_.c 1>&5 2>&5
 if test "$?" = "0"; then
@@ -11694,7 +11717,7 @@ if test "${ucsim_cv_CXXfPIC+set}" = set; then
 else
   cat >_test_.c <<EOF
 #include <stdio.h>
-void main(void) {}
+int main(void) {return(0);}
 EOF
 $CXX -v -fPIC -c _test_.c 1>&5 2>&5
 if test "$?" = "0"; then
@@ -11718,7 +11741,7 @@ if test "${ucsim_cv_CXXfpic+set}" = set; then
 else
   cat >_test_.c <<EOF
 #include <stdio.h>
-void main(void) {}
+int main(void) {return(0);}
 EOF
 $CXX -v -fpic -c _test_.c 1>&5 2>&5
 if test "$?" = "0"; then
index 600d53cb28ab7f0956442462fe6dddfaffe8abda..1c9e059299a83df2a3f4ff4688785e890b7edbb4 100644 (file)
@@ -306,7 +306,7 @@ AC_DEFUN(DD_COPT, [
 AC_CACHE_CHECK(whether $$1 accepts -$2,ucsim_cv_$1$2,
 cat >_test_.c <<EOF
 #include <stdio.h>
-void main(void) {}
+int main(void) {return(0);}
 EOF
 $$1 -v -$2 -c _test_.c 1>&5 2>&5
 if test "$?" = "0"; then
@@ -361,10 +361,13 @@ AC_SUBST(M_OR_MM)
 # This is the first time when CFLAGS are set/modified!!
 
 DD_COPT(CXX, ggdb)
-if test "$ucsim_cv_CXXggdb" = "yes"; then
-       gopt="-ggdb"
-else
-       gopt="-g"
+DD_COPT(CXX, gstabs)
+if test "$ucsim_cv_CXXgstabs" = "yes"; then
+   gopt="-gstabs+ -g3"
+elif test "$ucsim_cv_CXXggdb" = "yes"; then
+     gopt="-ggdb -g3"
+else 
+     gopt="-g"
 fi
 if test "$CXXFLAGS"x = x ;then
        CXXFLAGS="$gopt"
index 8e0461f7fa2b663bc08b23185c6f450ba3fca76d..c4075bd4a6433bc465dd46415e9eceeb949d70f4 100644 (file)
@@ -44,38 +44,15 @@ enum error_on_off {
 
 const int err_stop= (err_unknown|err_error);
 
-/*
-#define ERROR_METHODS(NAME) \
-enum error_type \
-cl_error_##NAME ::get_type(void)\
-{\
-  return(err_##NAME##_class.get_type());\
-}\
-bool \
-cl_error_##NAME ::is_on(void)\
-{\
-  return(err_##NAME##_class.is_on());\
-}
-*/
-
 #define ERROR_CLASS_DECL(NAME) \
 extern class cl_error_class error_##NAME##_class;\
 class cl_error_##NAME
 
-/*
-#define ERROR_CLASS_DEF(TYPE,NAME,CLASS_NAME) \
-class cl_error_class error_##NAME##_class(TYPE, CLASS_NAME);
-*/
-/*
-#define ERROR_CLASS_DEF_ON(TYPE,NAME,CLASS_NAME,ON) \
-class cl_error_class error_##NAME##_class(TYPE, CLASS_NAME, ON);
-*/
-
 #define ERROR_CLASS_DEF_PARENT(TYPE,NAME,CLASS_NAME,PARENT) \
-class cl_error_class error_##NAME##_class(TYPE, CLASS_NAME, &(PARENT));
+class cl_error_class error_##NAME##_class(TYPE, CLASS_NAME, &(PARENT))
 
 #define ERROR_CLASS_DEF_PARENT_ON(TYPE,NAME,CLASS_NAME,PARENT,ON) \
-class cl_error_class error_##NAME##_class(TYPE, CLASS_NAME, &(PARENT), ON);
+class cl_error_class error_##NAME##_class(TYPE, CLASS_NAME, &(PARENT), ON)
 
 
 extern class cl_list *registered_errors;
index 4f5a90190435d25c55787ee2adb2f6495106c557..fe1e5a3da49b9bfb0e7e58c4040be7c193e032ff 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # libtool - Provide generalized library-building support services.
-# Generated automatically by  (GNU  0.5.2)
+# Generated automatically by  (GNU  0.5.3)
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 # Copyright (C) 1996-2000 Free Software Foundation, Inc.
index a5f8dc999374edac5c7f967c281963369f155fda..815b34c8f1c472f3cf661404337b109ce2c24a29 100644 (file)
@@ -227,7 +227,7 @@ cl_51core::make_memories(void)
   class cl_address_decoder *ad;
   class cl_memory_chip *chip;
 
-  chip= new cl_memory_chip("rom_chip", 0x10000, 8, 0xff);
+  chip= new cl_memory_chip("rom_chip", 0x10000, 8/*, 0xff*/);
   chip->init();
   memchips->add(chip);
   ad= new cl_address_decoder(as= rom/*address_space(MEM_ROM_ID)*/,
index 7d9a780fdc15ff321c9e40a6e739a28eeca0aa30..e5a32c93ced7b0fb5597b39bb78d421d5e3d52ef 100644 (file)
@@ -41,6 +41,7 @@
 
 // cmd
 #include "newcmdcl.h"
+#include "cmdutil.h"
 
 // local
 #include "memcl.h"
@@ -1401,12 +1402,10 @@ cl_error_mem_invalid_address(class cl_memory *amem, t_addr aaddr):
 void
 cl_error_mem_invalid_address::print(class cl_commander *c)
 {
-  c->dd_printf(get_type_name());
-  c->dd_printf(": invalid address ", get_type_name());
-  c->dd_printf(mem->addr_format, addr);
-  c->dd_printf(" in memory ");
-  c->dd_printf(mem->get_name());
-  c->dd_printf(".\n");
+  FILE *f= c->get_out();
+  cmd_fprintf(f, "%s: invalid address ", get_type_name());
+  cmd_fprintf(f, mem->addr_format, addr);
+  cmd_fprintf(f, " in memory %s.\n", mem->get_name());
 }
 
 /* Non-decoded address space access */
@@ -1425,12 +1424,10 @@ cl_error_mem_non_decoded(class cl_memory *amem, t_addr aaddr):
 void
 cl_error_mem_non_decoded::print(class cl_commander *c)
 {
-  c->dd_printf(get_type_name());
-  c->dd_printf(": access of non-decoded address ");
-  c->dd_printf(mem->addr_format, addr);
-  c->dd_printf(" in memory ");
-  c->dd_printf(mem->get_name());
-  c->dd_printf(".\n");
+  FILE *f= c->get_out();
+  cmd_fprintf(f, "%s: access of non-decoded address ", get_type_name());
+  cmd_fprintf(f, mem->addr_format, addr);
+  cmd_fprintf(f, " in memory %s.\n", mem->get_name());
 }
 
 
index d9c5fe8d1296610c6b75ac3d8f25cdd69f57719a..d27f91be371a59ab77865b27c40a0f5db68e3f71 100644 (file)
@@ -431,7 +431,7 @@ ERROR_CLASS_DEF_PARENT(err_error, stack_tracker, "stack_tracker",
 ERROR_CLASS_DEF_PARENT(err_error,
                       stack_tracker_wrong_handle,
                       "stack_tracker_wrong_handle",
-                      error_stack_tracker_class)
+                      error_stack_tracker_class);
 
 cl_error_stack_tracker_wrong_handle::cl_error_stack_tracker_wrong_handle(bool write_op):
   cl_error_stack_tracker()
index 600e9d1a3aad1947e206d332529400f254fd3b11..caef99df040913f9c616c8ed3992328fde4fc27f 100644 (file)
@@ -47,6 +47,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "timercl.h"
 #include "cmdstatcl.h"
 #include "cmdmemcl.h"
+#include "cmdutil.h"
 
 // local, sim.src
 #include "uccl.h"
@@ -1866,18 +1867,18 @@ cl_error_unknown_code::cl_error_unknown_code(class cl_uc *the_uc)
 void
 cl_error_unknown_code::print(class cl_commander *c)
 {
-  c->dd_printf(get_type_name());
-  c->dd_printf(": unknown instruction code at ");
+  FILE *f= c->get_out();
+  cmd_fprintf(f, "%s: unknown instruction code at ", get_type_name());
   if (uc->rom)
     {
-      c->dd_printf(uc->rom->addr_format, PC);
-      c->dd_printf(" (");
-      c->dd_printf(uc->rom->data_format, uc->rom->get(PC));
-      c->dd_printf(")");
+      cmd_fprintf(f, uc->rom->addr_format, PC);
+      cmd_fprintf(f, " (");
+      cmd_fprintf(f, uc->rom->data_format, uc->rom->get(PC));
+      cmd_fprintf(f, ")");
     }
   else
-    c->dd_printf("0x%06x", PC);
-  c->dd_printf("\n");
+    cmd_fprintf(f, "0x%06x", PC);
+  cmd_fprintf(f, "\n");
 }