diff --git a/urjtag/ChangeLog b/urjtag/ChangeLog index cbfb3a68..2ec93196 100644 --- a/urjtag/ChangeLog +++ b/urjtag/ChangeLog @@ -1,3 +1,18 @@ +2011-07-01 Jie Zhang + + * src/lib/ansidecl.h: Move to include. + * src/lib/filenames.h: Likewise. + * src/lib/libiberty.h: Likewise. + * src/lib/safe-ctype.h: Likewise. + * src/lib/hex.c: Import from GCC. + * src/lib/Makefile.am (libiberty_sources): Remove ansidecl.h, + filenames.h, libiberty.h and save-ctype.h. + (libjtaglib_la_SOURCES): Add hex.c. + * include/Makefile.am: New file. + * Makefile.am (SUBDIRS): Add include. + * src/global/data_dir.c (make_relative_prefix): Don't declare. + Include libiberty.h. + 2011-06-30 Mike Frysinger * cmd/cmd_initbus.c (cmd_initbus_complete): Complete bus parameters too. diff --git a/urjtag/Makefile.am b/urjtag/Makefile.am index 66c29769..abbe58d2 100644 --- a/urjtag/Makefile.am +++ b/urjtag/Makefile.am @@ -26,6 +26,7 @@ include $(top_srcdir)/Makefile.rules SUBDIRS = \ doc \ extra/fjmem \ + include \ include/urjtag \ data \ src \ diff --git a/urjtag/configure.ac b/urjtag/configure.ac index 45604315..f55456d6 100644 --- a/urjtag/configure.ac +++ b/urjtag/configure.ac @@ -69,6 +69,7 @@ AC_CONFIG_FILES( doc/Makefile data/Makefile extra/fjmem/Makefile + include/Makefile include/urjtag/Makefile src/Makefile src/urjtag.pc diff --git a/urjtag/include/Makefile.am b/urjtag/include/Makefile.am new file mode 100644 index 00000000..30e02966 --- /dev/null +++ b/urjtag/include/Makefile.am @@ -0,0 +1,26 @@ +# +# Copyright (C) 2011 Analog Devices, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# + +include $(top_srcdir)/Makefile.rules + +noinst_HEADERS = \ + ansidecl.h \ + filenames.h \ + libiberty.h \ + safe-ctype.h diff --git a/urjtag/src/lib/ansidecl.h b/urjtag/include/ansidecl.h similarity index 100% rename from urjtag/src/lib/ansidecl.h rename to urjtag/include/ansidecl.h diff --git a/urjtag/src/lib/filenames.h b/urjtag/include/filenames.h similarity index 100% rename from urjtag/src/lib/filenames.h rename to urjtag/include/filenames.h diff --git a/urjtag/src/lib/libiberty.h b/urjtag/include/libiberty.h similarity index 100% rename from urjtag/src/lib/libiberty.h rename to urjtag/include/libiberty.h diff --git a/urjtag/src/lib/safe-ctype.h b/urjtag/include/safe-ctype.h similarity index 100% rename from urjtag/src/lib/safe-ctype.h rename to urjtag/include/safe-ctype.h diff --git a/urjtag/src/global/data_dir.c b/urjtag/src/global/data_dir.c index 6d6fbd78..8e95ce64 100644 --- a/urjtag/src/global/data_dir.c +++ b/urjtag/src/global/data_dir.c @@ -20,10 +20,7 @@ urj_set_argv0(const char *argv0) #include #include - -extern char *make_relative_prefix (const char *progname, - const char *bin_prefix, - const char *prefix); +#include static char *jtag_data_dir = NULL; diff --git a/urjtag/src/lib/Makefile.am b/urjtag/src/lib/Makefile.am index ed32b1fd..b75d5ff6 100644 --- a/urjtag/src/lib/Makefile.am +++ b/urjtag/src/lib/Makefile.am @@ -27,20 +27,17 @@ noinst_LTLIBRARIES = libjtaglib.la if JTAG_RELOCATABLE libiberty_sources = \ - ansidecl.h \ - filenames.h \ lbasename.c \ - libiberty.h \ lrealpath.c \ make-relative-prefix.c \ - safe-ctype.c \ - safe-ctype.h + safe-ctype.c else libiberty_sources = endif libjtaglib_la_SOURCES = \ fclock.c \ + hex.c \ usleep.c \ $(libiberty_sources) diff --git a/urjtag/src/lib/hex.c b/urjtag/src/lib/hex.c new file mode 100644 index 00000000..5eeafdbd --- /dev/null +++ b/urjtag/src/lib/hex.c @@ -0,0 +1,192 @@ +/* Hex character manipulation support. + Copyright (C) 1995, 2001 Free Software Foundation, Inc. + +This file is part of the libiberty library. +Libiberty is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +Libiberty 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with libiberty; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, +Boston, MA 02110-1301, USA. */ + +#include /* for EOF */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include "libiberty.h" +#include "safe-ctype.h" /* for HOST_CHARSET_ASCII */ + +#if EOF != -1 + #error "hex.c requires EOF == -1" +#endif + +/* + +@deftypefn Extension void hex_init (void) + +Initializes the array mapping the current character set to +corresponding hex values. This function must be called before any +call to @code{hex_p} or @code{hex_value}. If you fail to call it, a +default ASCII-based table will normally be used on ASCII systems. + +@end deftypefn + +@deftypefn Extension int hex_p (int @var{c}) + +Evaluates to non-zero if the given character is a valid hex character, +or zero if it is not. Note that the value you pass will be cast to +@code{unsigned char} within the macro. + +@end deftypefn + +@deftypefn Extension {unsigned int} hex_value (int @var{c}) + +Returns the numeric equivalent of the given character when interpreted +as a hexadecimal digit. The result is undefined if you pass an +invalid hex digit. Note that the value you pass will be cast to +@code{unsigned char} within the macro. + +The @code{hex_value} macro returns @code{unsigned int}, rather than +signed @code{int}, to make it easier to use in parsing addresses from +hex dump files: a signed @code{int} would be sign-extended when +converted to a wider unsigned type --- like @code{bfd_vma}, on some +systems. + +@end deftypefn + +@undocumented _hex_array_size +@undocumented _hex_bad +@undocumented _hex_value + +*/ + + +/* Are we ASCII? */ +#if HOST_CHARSET == HOST_CHARSET_ASCII + +const unsigned char _hex_value[_hex_array_size] = +{ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* NUL SOH STX ETX */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* EOT ENQ ACK BEL */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* BS HT LF VT */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* FF CR SO SI */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* DLE DC1 DC2 DC3 */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* DC4 NAK SYN ETB */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* CAN EM SUB ESC */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* FS GS RS US */ + + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* SP ! " # */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* $ % & ' */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* ( ) * + */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* , - . / */ + 0, 1, 2, 3, /* 0 1 2 3 */ + 4, 5, 6, 7, /* 4 5 6 7 */ + 8, 9, _hex_bad, _hex_bad, /* 8 9 : ; */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* < = > ? */ + + _hex_bad, 10, 11, 12, /* @ A B C */ + 13, 14, 15, _hex_bad, /* D E F G */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* H I J K */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* L M N O */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* P Q R S */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* T U V W */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* X Y Z [ */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* \ ] ^ _ */ + + _hex_bad, 10, 11, 12, /* ` a b c */ + 13, 14, 15, _hex_bad, /* d e f g */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* h i j k */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* l m n o */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* p q r s */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* t u v w */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* x y z { */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, /* | } ~ DEL */ + + /* The high half of unsigned char, all values are _hex_bad. */ + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, + _hex_bad, _hex_bad, _hex_bad, _hex_bad, +}; +#define HEX_TABLE_INITIALIZED + +#else + +unsigned char _hex_value[_hex_array_size]; + +#endif /* not ASCII */ + +void +hex_init (void) +{ +#ifndef HEX_TABLE_INITIALIZED + int i; + + for (i=0; i<_hex_array_size; i++) + { + switch (i) + { + case '0': _hex_value[i] = 0; break; + case '1': _hex_value[i] = 1; break; + case '2': _hex_value[i] = 2; break; + case '3': _hex_value[i] = 3; break; + case '4': _hex_value[i] = 4; break; + case '5': _hex_value[i] = 5; break; + case '6': _hex_value[i] = 6; break; + case '7': _hex_value[i] = 7; break; + case '8': _hex_value[i] = 8; break; + case '9': _hex_value[i] = 9; break; + + case 'a': case 'A': _hex_value[i] = 10; break; + case 'b': case 'B': _hex_value[i] = 11; break; + case 'c': case 'C': _hex_value[i] = 12; break; + case 'd': case 'D': _hex_value[i] = 13; break; + case 'e': case 'E': _hex_value[i] = 14; break; + case 'f': case 'F': _hex_value[i] = 15; break; + + default: + _hex_value[i] = _hex_bad; + break; + } + } +#endif +}