Summary: split in two commits, probably three commits
On Sat, Aug 03, 2019 at 02:32:10PM +0200, Karl Hammar wrote:
> urj_vhdl_set_entity() saved the entity name in the parts part_name
> even though we don't know at that stage if the idcode matches for
> this file.
Is for commit "A".
> Hunting this bug down, I found too many things are called part, so
> part of this is to change part->part to part->part_name, ditto for
> manufaturer to make it easier to find the offender.
Is for commit "B"
Proposal for new long commit message for commit B
| Too many things are called part, so
| part of this is to change part->part to part->part_name, ditto for
| manufaturer to make it easier to find the offender.
> ---
> urjtag/include/urjtag/part.h | 4 ++--
> urjtag/src/bfin/bfin.c | 2 +-
> urjtag/src/bsdl/bsdl.c | 5 ++++-
> urjtag/src/bsdl/bsdl_types.h | 2 ++
> urjtag/src/bsdl/vhdl_bison.y | 5 ++---
> urjtag/src/part/part.c | 6 +++---
> urjtag/src/tap/detect.c | 8 ++++----
> 7 files changed, 18 insertions(+), 14 deletions(-)
>
> diff --git a/urjtag/include/urjtag/part.h b/urjtag/include/urjtag/part.h
> index f0cddbc7..50ce74df 100644
> --- a/urjtag/include/urjtag/part.h
> +++ b/urjtag/include/urjtag/part.h
> @@ -42,8 +42,8 @@ struct URJ_PART
> {
> urj_tap_register_t *id;
> char *alias; /* djf refdes */
> - char manufacturer[URJ_PART_MANUFACTURER_MAXLEN + 1];
> - char part[URJ_PART_PART_MAXLEN + 1];
> + char manufacturer_name[URJ_PART_MANUFACTURER_MAXLEN + 1];
> + char part_name[URJ_PART_PART_MAXLEN + 1];
> char stepping[URJ_PART_STEPPING_MAXLEN + 1];
> urj_part_signal_t *signals;
> urj_part_salias_t *saliases;
B
> diff --git a/urjtag/src/bfin/bfin.c b/urjtag/src/bfin/bfin.c
> index dd4bd3b2..d7c9d39d 100644
> --- a/urjtag/src/bfin/bfin.c
> +++ b/urjtag/src/bfin/bfin.c
> @@ -131,7 +131,7 @@ part_scan_select (urj_chain_t *chain, int n, int scan)
> if (part->active_instruction == NULL)
> {
> urj_log (URJ_LOG_LEVEL_ERROR,
> - _("%s: unknown instruction '%s'\n"), part->part,
> scans[scan]);
> + _("%s: unknown instruction '%s'\n"), part->part_name,
> scans[scan]);
> return -1;
> }
>
B
> diff --git a/urjtag/src/bsdl/bsdl.c b/urjtag/src/bsdl/bsdl.c
> index afb5d635..d81e969e 100644
> --- a/urjtag/src/bsdl/bsdl.c
> +++ b/urjtag/src/bsdl/bsdl.c
> @@ -140,10 +140,13 @@ urj_bsdl_read_file (urj_chain_t *chain, const char
> *BSDL_File_Name,
>
> result = urj_bsdl_process_elements (&jtag_ctrl, idcode);
>
> - if (result >= 0)
> + if (result >= 0) {
> + strncpy(jtag_ctrl.part->part_name,
> vhdl_parser_priv->entity_name, URJ_PART_PART_MAXLEN);
> + jtag_ctrl.part->part_name[URJ_PART_PART_MAXLEN] = '\0';
> urj_bsdl_msg (proc_mode,
> _("BSDL file '%s' passed BSDL stage
> correctly\n"),
> BSDL_File_Name);
> + }
>
> }
> else
C
> diff --git a/urjtag/src/bsdl/bsdl_types.h b/urjtag/src/bsdl/bsdl_types.h
> index d19ffd11..efe09579 100644
> --- a/urjtag/src/bsdl/bsdl_types.h
> +++ b/urjtag/src/bsdl/bsdl_types.h
> @@ -157,10 +157,12 @@ typedef struct jtag_ctrl urj_bsdl_jtag_ctrl_t;
>
> /* private data of the VHDL bison parser
> used to store variables the would end up as globals otherwise */
> +#define VHDL_PARSER_ENTITY_NAME_MAXLEN 20
> struct vhdl_parser_priv
> {
> char Package_File_Name[100];
> int Reading_Package;
> + char entity_name[VHDL_PARSER_ENTITY_NAME_MAXLEN+1];
> char *buffer;
> size_t len_buffer;
> void *scanner;
A
> diff --git a/urjtag/src/bsdl/vhdl_bison.y b/urjtag/src/bsdl/vhdl_bison.y
> index 4030b3b4..4d057df5 100644
> --- a/urjtag/src/bsdl/vhdl_bison.y
> +++ b/urjtag/src/bsdl/vhdl_bison.y
> @@ -918,9 +918,8 @@ urj_vhdl_set_entity (urj_vhdl_parser_priv_t *priv, char
> *entityname)
> {
> if (priv->jtag_ctrl->proc_mode & URJ_BSDL_MODE_INSTR_EXEC)
> {
> - strncpy (priv->jtag_ctrl->part->part, entityname,
> - URJ_PART_PART_MAXLEN);
> - priv->jtag_ctrl->part->part[URJ_PART_PART_MAXLEN] = '\0';
> + strncpy (priv->entity_name, entityname,
> VHDL_PARSER_ENTITY_NAME_MAXLEN);
> + priv->entity_name[VHDL_PARSER_ENTITY_NAME_MAXLEN] = '\0';
> }
>
> free (entityname);
A
> diff --git a/urjtag/src/part/part.c b/urjtag/src/part/part.c
> index b7297a05..f5c4dbd0 100644
> --- a/urjtag/src/part/part.c
> +++ b/urjtag/src/part/part.c
> @@ -52,8 +52,8 @@ urj_part_alloc (const urj_tap_register_t *id)
> p->alias = NULL; /* djf */
> /* @@@@ RFHH check result */
> p->id = urj_tap_register_duplicate (id);
> - p->manufacturer[0] = '\0';
> - p->part[0] = '\0';
> + p->manufacturer_name[0] = '\0';
> + p->part_name[0] = '\0';
> p->stepping[0] = '\0';
> p->signals = NULL;
> p->saliases = NULL;
B
> @@ -319,7 +319,7 @@ urj_part_print (urj_log_level_t ll, urj_part_t *p)
> instruction = _("(none)");
> if (dr == NULL)
> dr = _("(none)");
> - urj_log (ll, format, p->manufacturer, p->part, p->stepping, instruction,
> + urj_log (ll, format, p->manufacturer_name, p->part_name, p->stepping,
> instruction,
> dr);
>
> return URJ_STATUS_OK;
B
> diff --git a/urjtag/src/tap/detect.c b/urjtag/src/tap/detect.c
> index 5c139507..526d2a99 100644
> --- a/urjtag/src/tap/detect.c
> +++ b/urjtag/src/tap/detect.c
> @@ -419,8 +419,8 @@ urj_tap_detect_parts (urj_chain_t *chain, const char
> *db_path, int maxirlen)
> data_path);
>
> /* run JTAG declarations */
> - strcpy (part->manufacturer, manufacturer);
> - strcpy (part->part, partname);
> + strcpy (part->manufacturer_name, manufacturer);
> + strcpy (part->part_name, partname);
> strcpy (part->stepping, stepping);
> if (urj_parse_include (chain, data_path, 1) == URJ_STATUS_FAIL)
> urj_log_error_describe (URJ_LOG_LEVEL_ERROR);
B
> @@ -434,7 +434,7 @@ urj_tap_detect_parts (urj_chain_t *chain, const char
> *db_path, int maxirlen)
> "IDCODE");
>
> /* Do part specific initialization. */
> - part_init_func = urj_part_find_init (part->part);
> + part_init_func = urj_part_find_init (part->part_name);
> if (part_init_func)
> {
> part->params = malloc (sizeof (urj_part_params_t));
B
> @@ -496,7 +496,7 @@ urj_tap_manual_add (urj_chain_t *chain, int instr_len)
> if (part == NULL)
> return -1;
>
> - strncpy (part->part, "unknown", URJ_PART_PART_MAXLEN);
> + strncpy (part->part_name, "unknown", URJ_PART_PART_MAXLEN);
> part->instruction_length = instr_len;
>
> urj_part_parts_add_part (chain->parts, part);
B
> --
> 2.21.0
>
Groeten
Geert Stappers
--
Leven en laten leven
_______________________________________________
UrJTAG-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/urjtag-development