From: openocd-gerrit <ope...@us...> - 2023-02-03 22:47:55
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via ea6a99208e1bc41a878234f7220501e26ec4a7f1 (commit) via 18bafdce615132311fd34f2e1bdf57c193d14097 (commit) from da76ba610b8e6b05de3a837926d06f8e7d964b97 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ea6a99208e1bc41a878234f7220501e26ec4a7f1 Author: Antonio Borneo <bor...@gm...> Date: Mon Dec 26 21:59:56 2022 +0100 helper: nvp: add openocd nvp files Long ago jim_nvp was part of jimtcl. When jimtcl dropped it, OpenOCD kept copy of it in its code base. Current code of jim_nvp is still related with jimtcl data types and functions. With the target of better isolating OpenOCD code from jimtcl, create a new file nvp.c that re-proposes only the core of the old jim_nvp, dropping any link with jimtcl and removing the string 'jim' either from the filename and from the code. Keep the same license from the old code, as the new files are clearly derived from it. Change-Id: I273448cf1f1484b10f6b6113ed7bb0fcf946482b Signed-off-by: Antonio Borneo <bor...@gm...> Reviewed-on: https://review.openocd.org/c/openocd/+/7423 Tested-by: jenkins Reviewed-by: Evgeniy Didin <di...@sy...> diff --git a/src/helper/Makefile.am b/src/helper/Makefile.am index c4c60d96b..e9c05cfc5 100644 --- a/src/helper/Makefile.am +++ b/src/helper/Makefile.am @@ -16,6 +16,7 @@ noinst_LTLIBRARIES += %D%/libhelper.la %D%/util.c \ %D%/jep106.c \ %D%/jim-nvp.c \ + %D%/nvp.c \ %D%/align.h \ %D%/binarybuffer.h \ %D%/bits.h \ @@ -32,7 +33,8 @@ noinst_LTLIBRARIES += %D%/libhelper.la %D%/system.h \ %D%/jep106.h \ %D%/jep106.inc \ - %D%/jim-nvp.h + %D%/jim-nvp.h \ + %D%/nvp.h STARTUP_TCL_SRCS += %D%/startup.tcl EXTRA_DIST += \ diff --git a/src/helper/nvp.c b/src/helper/nvp.c new file mode 100644 index 000000000..7a8abc2e2 --- /dev/null +++ b/src/helper/nvp.c @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: BSD-2-Clause-Views + +/* + * Copyright 2005 Salvatore Sanfilippo <an...@in...> + * Copyright 2005 Clemens Hintze <c.h...@gm...> + * Copyright 2005 patthoyts - Pat Thoyts <pat...@us...> + * Copyright 2008 oharboe - Ãyvind Harboe - oyv...@zy... + * Copyright 2008 Andrew Lunn <an...@lu...> + * Copyright 2008 Duane Ellis <op...@du...> + * Copyright 2008 Uwe Klein <uk...@kl...> + * Copyright 2008 Steve Bennett <st...@wo...> + * Copyright 2009 Nico Coesel <nc...@de...> + * Copyright 2009 Zachary T Welch zw...@su... + * Copyright 2009 David Brownell + * Copyright (c) 2005-2011 Jim Tcl Project. All rights reserved. + * + * This file is extracted from jim_nvp.c, originally part of jim TCL code. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <string.h> + +#include <helper/command.h> +#include <helper/nvp.h> + +const struct nvp *nvp_name2value(const struct nvp *p, const char *name) +{ + while (p->name) { + if (strcmp(name, p->name) == 0) + break; + p++; + } + return p; +} + +const struct nvp *nvp_value2name(const struct nvp *p, int value) +{ + while (p->name) { + if (value == p->value) + break; + p++; + } + return p; +} + +void nvp_unknown_command_print(struct command_invocation *cmd, const struct nvp *nvp, + const char *param_name, const char *param_value) +{ + if (param_name) + command_print_sameline(cmd, "%s: Unknown: %s, try one of: ", param_name, param_value); + else + command_print_sameline(cmd, "Unknown param: %s, try one of: ", param_value); + + while (nvp->name) { + if ((nvp + 1)->name) + command_print_sameline(cmd, "%s, ", nvp->name); + else + command_print(cmd, "or %s", nvp->name); + + nvp++; + } + + /* We assume nvp to be not empty and loop has been taken; no need to add a '\n' */ +} diff --git a/src/helper/nvp.h b/src/helper/nvp.h new file mode 100644 index 000000000..125164e4e --- /dev/null +++ b/src/helper/nvp.h @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: BSD-2-Clause-Views */ + +/* + * Copyright 2005 Salvatore Sanfilippo <an...@in...> + * Copyright 2005 Clemens Hintze <c.h...@gm...> + * Copyright 2005 patthoyts - Pat Thoyts <pat...@us...> + * Copyright 2008 oharboe - Ãyvind Harboe - oyv...@zy... + * Copyright 2008 Andrew Lunn <an...@lu...> + * Copyright 2008 Duane Ellis <op...@du...> + * Copyright 2008 Uwe Klein <uk...@kl...> + * Copyright 2008 Steve Bennett <st...@wo...> + * Copyright 2009 Nico Coesel <nc...@de...> + * Copyright 2009 Zachary T Welch zw...@su... + * Copyright 2009 David Brownell + * Copyright (c) 2005-2011 Jim Tcl Project. All rights reserved. + * + * This file is extracted from jim_nvp.h, originally part of jim TCL code. + */ + +#ifndef OPENOCD_HELPER_NVP_H +#define OPENOCD_HELPER_NVP_H + +/** Name Value Pairs, aka: NVP + * - Given a string - return the associated int. + * - Given a number - return the associated string. + * . + * + * Very useful when the number is not a simple index into an array of + * known string, or there may be multiple strings (aliases) that mean then same + * thing. + * + * An NVP Table is terminated with ".name = NULL". + * + * During the 'name2value' operation, if no matching string is found + * the pointer to the terminal element (with p->name == NULL) is returned. + * + * Example: + * \code + * const struct nvp yn[] = { + * { "yes", 1 }, + * { "no" , 0 }, + * { "yep", 1 }, + * { "nope", 0 }, + * { NULL, -1 }, + * }; + * + * struct nvp *result; + * result = nvp_name2value(yn, "yes"); + * returns &yn[0]; + * result = nvp_name2value(yn, "no"); + * returns &yn[1]; + * result = jim_nvp_name2value(yn, "Blah"); + * returns &yn[4]; + * \endcode + * + * During the number2name operation, the first matching value is returned. + */ + +struct nvp { + const char *name; + int value; +}; + +struct command_invocation; + +/* Name Value Pairs Operations */ +const struct nvp *nvp_name2value(const struct nvp *nvp_table, const char *name) + __attribute__((returns_nonnull, nonnull(1))); +const struct nvp *nvp_value2name(const struct nvp *nvp_table, int v) + __attribute__((returns_nonnull, nonnull(1))); + +void nvp_unknown_command_print(struct command_invocation *cmd, const struct nvp *nvp, + const char *param_name, const char *param_value); + +#endif /* OPENOCD_HELPER_NVP_H */ commit 18bafdce615132311fd34f2e1bdf57c193d14097 Author: Antonio Borneo <bor...@gm...> Date: Mon Dec 19 17:20:06 2022 +0100 target: arc: fix error handling in command 'arc set-reg-exists' The command is specified through COMMAND_HANDLER. It should not return JIM_OK / JIM_ERR. Change-Id: I56666414d49b0298ecc23ec7ef30c77e1e27afa8 Signed-off-by: Antonio Borneo <bor...@gm...> Reviewed-on: https://review.openocd.org/c/openocd/+/7413 Tested-by: jenkins Reviewed-by: Evgeniy Didin <di...@sy...> diff --git a/src/target/arc_cmd.c b/src/target/arc_cmd.c index e7c54446e..fb1817de6 100644 --- a/src/target/arc_cmd.c +++ b/src/target/arc_cmd.c @@ -763,7 +763,7 @@ COMMAND_HANDLER(arc_set_reg_exists) struct target * const target = get_current_target(CMD_CTX); if (!target) { command_print(CMD, "Unable to get current target."); - return JIM_ERR; + return ERROR_FAIL; } if (!CMD_ARGC) { @@ -783,7 +783,7 @@ COMMAND_HANDLER(arc_set_reg_exists) r->exist = true; } - return JIM_OK; + return ERROR_OK; } /* arc reg-field ($reg_name) ($reg_field) ----------------------------------------------------------------------- Summary of changes: src/helper/Makefile.am | 4 ++- src/helper/nvp.c | 67 ++++++++++++++++++++++++++++++++++++++++++++ src/helper/nvp.h | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/target/arc_cmd.c | 4 +-- 4 files changed, 147 insertions(+), 3 deletions(-) create mode 100644 src/helper/nvp.c create mode 100644 src/helper/nvp.h hooks/post-receive -- Main OpenOCD repository |