This is an automated email from Gerrit.

Andreas Fritiofson (andreas.fritiof...@gmail.com) just uploaded a new patch set 
to Gerrit, which you can find at http://openocd.zylin.com/2176

-- gerrit

commit a22e706dcf92a77196b643bbd8aa7b8eb930c2a4
Author: Andreas Fritiofson <andreas.fritiof...@gmail.com>
Date:   Mon Jun 16 20:34:22 2014 +0200

    Fix some problems with the bin2char utility
    
    Don't hardcode the type for the array, just output the array initializer
    so the includer can choose the type and storage class, zero-terminate at
    will and so on.
    
    Change-Id: I6d5e0710eaaba0a218b3eb32f6569177356f4462
    Signed-off-by: Andreas Fritiofson <andreas.fritiof...@gmail.com>

diff --git a/.gitignore b/.gitignore
index bfb22ed..3e6e1e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,8 +30,8 @@ src/jtag/drivers/OpenULINK/*.rst
 *.swp
 
 src/startup.tcl
-startup_tcl.c
-xscale_debug.h
+startup_tcl.inc
+xscale_debug.inc
 
 bin2char
 bin2char.exe
diff --git a/src/Makefile.am b/src/Makefile.am
index b539ec4..eaa0ee5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,8 +32,7 @@ endif
 
 libopenocd_la_SOURCES = \
        hello.c \
-       openocd.c \
-       startup_tcl.c
+       openocd.c
 
 noinst_HEADERS = \
        hello.h \
@@ -86,23 +85,23 @@ STARTUP_TCL_SRCS = \
 
 EXTRA_DIST = $(STARTUP_TCL_SRCS)
 
-BUILT_SOURCES = startup.tcl
+BUILT_SOURCES = startup_tcl.inc
 
 startup.tcl: $(STARTUP_TCL_SRCS)
        cat $^ > $@
 
 BIN2C = $(top_srcdir)/src/helper/bin2char.sh
 
-# Convert .tcl to cfile
-startup_tcl.c: startup.tcl $(BIN2C)
-       $(BIN2C) openocd_startup_tcl < $< > $@ || rm -f $@
+# Convert .tcl to c-array
+startup_tcl.inc: startup.tcl $(BIN2C)
+       $(BIN2C) < $< > $@ || rm -f $@
 
-# add startup_tcl.c to make clean list
-CLEANFILES = startup.tcl startup_tcl.c
+# add generated files to make clean list
+CLEANFILES = startup.tcl startup_tcl.inc
 
 # we do not want generated file in the dist
 dist-hook:
-       rm -f $(distdir)/startup_tcl.c
+       rm -f $(distdir)/startup_tcl.inc
 
 MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
 
diff --git a/src/helper/bin2char.sh b/src/helper/bin2char.sh
index f9da309..85a0fd6 100755
--- a/src/helper/bin2char.sh
+++ b/src/helper/bin2char.sh
@@ -1,14 +1,14 @@
 #!/bin/sh
 
-[ $# = 0 ] && {
-    echo "Usage: $0 <varname>"
+[ $# != 0 ] && {
+    echo "Usage: $0"
     echo
-    echo "Read binary data from standard input and write it as a C character"
-    echo "array <varname> to standard output. Add a final NULL for 
terminating."
+    echo "Read binary data from standard input and write it as a comma 
separated"
+    echo "list of hexadecimal byte values to standard ouput. The output is 
usable"
+    echo "as a C array initializer. It is terminated with a comma so it can be"
+    echo "continued e.g. for zero termination."
     exit 1
 }
 
 echo "/* Autogenerated with $0 */"
-echo "unsigned const char $1[] = {"
 od -v -A n -t x1 | sed 's/ *\(..\) */0x\1,/g'
-echo "0 /* NULL-terminated */ };"
diff --git a/src/openocd.c b/src/openocd.c
index 71e047f..758febb 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -50,6 +50,11 @@
 #define OPENOCD_VERSION        \
        "Open On-Chip Debugger " VERSION RELSTR " (" PKGBLDDATE ")"
 
+static const char openocd_startup_tcl[] = {
+#include "startup_tcl.inc"
+0 /* Terminate with zero */
+};
+
 /* Give scripts and TELNET a way to find out what version this is */
 static int jim_version_command(Jim_Interp *interp, int argc,
        Jim_Obj * const *argv)
@@ -228,8 +233,7 @@ struct command_context *setup_command_handler(Jim_Interp 
*interp)
        log_init();
        LOG_DEBUG("log_init: complete");
 
-       const char *startup = openocd_startup_tcl;
-       struct command_context *cmd_ctx = command_init(startup, interp);
+       struct command_context *cmd_ctx = command_init(openocd_startup_tcl, 
interp);
 
        /* register subsystem commands */
        typedef int (*command_registrant_t)(struct command_context 
*cmd_ctx_value);
diff --git a/src/openocd.h b/src/openocd.h
index 57bf455..6d87c2a 100644
--- a/src/openocd.h
+++ b/src/openocd.h
@@ -31,7 +31,4 @@
  */
 int openocd_main(int argc, char *argv[]);
 
-/** provides a hard-coded command environment setup */
-extern const char openocd_startup_tcl[];
-
 #endif
diff --git a/src/target/Makefile.am b/src/target/Makefile.am
index efbeb33..4432a70 100644
--- a/src/target/Makefile.am
+++ b/src/target/Makefile.am
@@ -16,12 +16,12 @@ EXTRA_DIST = \
        startup.tcl \
        $(wildcard $(srcdir)/xscale/*)
 
-DEBUG_HEADER   = xscale_debug.h
+DEBUG_HEADER   = xscale_debug.inc
 BUILT_SOURCES = $(DEBUG_HEADER)
 CLEANFILES = $(DEBUG_HEADER)
 
-$(DEBUG_HEADER): $(BIN2C) $(DEBUG_HANDLER)
-       $(BIN2C) < $(DEBUG_HANDLER) xscale_debug_handler > xscale_debug.h
+$(DEBUG_HEADER): $(DEBUG_HANDLER) $(BIN2C)
+       $(BIN2C) < $< > $@ || rm -f $@
 
 METASOURCES = AUTO
 noinst_LTLIBRARIES = libtarget.la
diff --git a/src/target/xscale.c b/src/target/xscale.c
index e88a231..04189a1 100644
--- a/src/target/xscale.c
+++ b/src/target/xscale.c
@@ -73,14 +73,10 @@ static int xscale_read_trace(struct target *);
 
 /* This XScale "debug handler" is loaded into the processor's
  * mini-ICache, which is 2K of code writable only via JTAG.
- *
- * FIXME  the OpenOCD "bin2char" utility currently doesn't handle
- * binary files cleanly.  It's string oriented, and terminates them
- * with a NUL character.  Better would be to generate the constants
- * and let other code decide names, scoping, and other housekeeping.
  */
-static /* unsigned const char xscale_debug_handler[] = ... */
-#include "xscale_debug.h"
+static const uint8_t xscale_debug_handler[] = {
+#include "xscale_debug.inc"
+};
 
 static char *const xscale_reg_list[] = {
        "XSCALE_MAINID",                /* 0 */
@@ -1549,7 +1545,7 @@ static int xscale_deassert_reset(struct target *target)
                 * coprocessors, trace data, etc.
                 */
                address = xscale->handler_address;
-               for (unsigned binary_size = sizeof xscale_debug_handler - 1;
+               for (unsigned binary_size = sizeof xscale_debug_handler;
                        binary_size > 0;
                        binary_size -= buf_cnt, buffer += buf_cnt) {
                        uint32_t cache_line[8];
@@ -3028,7 +3024,7 @@ static int xscale_target_create(struct target *target, 
Jim_Interp *interp)
 {
        struct xscale_common *xscale;
 
-       if (sizeof xscale_debug_handler - 1 > 0x800) {
+       if (sizeof xscale_debug_handler > 0x800) {
                LOG_ERROR("debug_handler.bin: larger than 2kb");
                return ERROR_FAIL;
        }

-- 

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to