public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/1] bfd, binutils, gas: Mark unused variables
@ 2022-09-15  3:09 Tsukasa OI
  2022-09-15  3:09 ` [PATCH 1/1] " Tsukasa OI
  2022-09-15  4:17 ` [PATCH 0/1] " Tsukasa OI
  0 siblings, 2 replies; 14+ messages in thread
From: Tsukasa OI @ 2022-09-15  3:09 UTC (permalink / raw)
  To: Tsukasa OI, Nick Clifton, Ian Lance Taylor, Nelson Chu; +Cc: binutils

Hello,

[Common Background: Building GNU Binutils / GDB with Clang 15.0.0]

I'm now testing to build GNU Binutils / GDB with latest Clang (15.0.0) and
found some errors by default (when Binutils / GDB is not configured with
"--disable-werror").

While the best compiler to build GNU Binutils / GDB is GNU GCC, testing
other compilers are helpful to discover underlying problems and modernize
Binutils / GDB, even if building entire Binutils / GDB with the latest Clang
is unrealistic.  To be sure, I'm not going to finish "porting for Clang".
I will take low-hanging fruits and...

1.  make building with Clang easier and/or
2.  fix code issues (or non-issues) discovered as Clang warnings.

I made four patchsets in which, applying them all makes it possible to
build GNU Binutils / GDB with Clang (without help of --disable-werrors) for
many (but not all) targets including i386 and RISC-V with Ubuntu 22.04 LTS
(x86_64) host.  At least, I think they fix all (at minimum, most of) arch-
independent parts which prevents building with the latest version of Clang.

This is the one of them.


[About this Patchset]

Clang generates a warning on "written but not read thereafter" varibles
("-Wset-but-unused-variable"), making the build failure.

We could just remove practically unused variables but instead I chose to
keep it but with ATTRIBUTE_UNUSED.  This is because the most of such
variables may have possible uses in the future.

ATTRIBUTE_UNUSED (__attribute__((unused))) marks a variable *possibly
unused* and suppresses warnings about "written but not read thereafter"
or just "unused" variables.  Note that it only means a variable is "possibly
unused".  Even if a variable with this attribute is "used", it's completely
safe (removing the attribute when a variable is started to be used is
definitely better, though).


Thanks,
Tsukasa




Tsukasa OI (1):
  bfd, binutils, gas: Mark unused variables

 bfd/elf32-lm32.c      |  5 +----
 bfd/elf32-nds32.c     |  4 +---
 bfd/mmo.c             |  7 +------
 binutils/windmc.c     |  5 ++---
 gas/config/tc-riscv.c |  4 +---
 ld/pe-dll.c           | 11 ++++-------
 6 files changed, 10 insertions(+), 26 deletions(-)


base-commit: fe39ffdc202f04397f31557f17170b40bc42b77a
-- 
2.34.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/1] bfd, binutils, gas: Mark unused variables
  2022-09-15  3:09 [PATCH 0/1] bfd, binutils, gas: Mark unused variables Tsukasa OI
@ 2022-09-15  3:09 ` Tsukasa OI
  2022-09-15  4:17 ` [PATCH 0/1] " Tsukasa OI
  1 sibling, 0 replies; 14+ messages in thread
From: Tsukasa OI @ 2022-09-15  3:09 UTC (permalink / raw)
  To: Tsukasa OI, Nick Clifton, Ian Lance Taylor, Nelson Chu; +Cc: binutils

Clang generates a warning on unused (technically, written but not read
thereafter) variables.  By the default configuration (with "-Werror"), it
causes a build failure (unless "--disable-werror" is specified).

This commit, instead of just removing those variables, adds
ATTRIBUTE_UNUSED attribute to them, which means they are *possibly* unused
(can be used but no warnings occur when unused).

bfd/ChangeLog:

	* elf32-lm32.c (lm32_elf_size_dynamic_sections): Mark unused
	rgot_count variable.
	* elf32-nds32.c (elf32_nds32_unify_relax_group): Mark unused
	count variable.
	* mmo.c (mmo_scan): Mark unused lineno variable.

binutils/ChangeLog:

	* windmc.c (write_rc): Mark unused i variable.

gas/ChangeLog:

	* config/tc-riscv.c (riscv_ip): Mark unused argnum variable.

ld/ChangeLog:

	* pe-dll.c (generate_reloc): Mark unused bi and page_count
	variables.
---
 bfd/elf32-lm32.c      |  5 +----
 bfd/elf32-nds32.c     |  4 +---
 bfd/mmo.c             |  7 +------
 binutils/windmc.c     |  5 ++---
 gas/config/tc-riscv.c |  4 +---
 ld/pe-dll.c           | 11 ++++-------
 6 files changed, 10 insertions(+), 26 deletions(-)

diff --git a/bfd/elf32-lm32.c b/bfd/elf32-lm32.c
index 4830ab21dfa..b57188b0f35 100644
--- a/bfd/elf32-lm32.c
+++ b/bfd/elf32-lm32.c
@@ -2067,7 +2067,7 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
       struct weak_symbol_list *list_start = NULL, *list_end = NULL;
       int rgot_weak_count = 0;
       int r32_count = 0;
-      int rgot_count = 0;
+      int rgot_count ATTRIBUTE_UNUSED = 0;
       /* Look for deleted sections.  */
       for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
 	{
@@ -2115,9 +2115,6 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
 				    case R_LM32_32:
 				      r32_count++;
 				      break;
-				    case R_LM32_16_GOT:
-				      rgot_count++;
-				      break;
 				    }
 				}
 			    }
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index 82c20592d6d..cb20c034781 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -13460,7 +13460,7 @@ elf32_nds32_unify_relax_group (bfd *abfd, asection *asec)
   Elf_Internal_Rela *relocs = NULL;
   enum elf_nds32_reloc_type rtype;
   struct section_id_list_t *node = NULL;
-  int count = 0;
+  int count ATTRIBUTE_UNUSED = 0;
 
   do
     {
@@ -13499,8 +13499,6 @@ elf32_nds32_unify_relax_group (bfd *abfd, asection *asec)
 
 	  /* Change it.  */
 	  rel->r_addend += relax_group_ptr->bias;
-	  /* Debugging count.  */
-	  count++;
 	}
     }
   while (false);
diff --git a/bfd/mmo.c b/bfd/mmo.c
index fd92a346bc7..57647139d40 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -1602,7 +1602,7 @@ static bool
 mmo_scan (bfd *abfd)
 {
   unsigned int i;
-  unsigned int lineno = 1;
+  unsigned int lineno ATTRIBUTE_UNUSED = 1;
   bool error = false;
   bfd_vma vma = 0;
   asection *sec = NULL;
@@ -1671,7 +1671,6 @@ mmo_scan (bfd *abfd)
 		  goto error_return;
 		}
 	      vma += 4;
-	      lineno++;
 	      break;
 
 	    case LOP_LOC:
@@ -1905,12 +1904,9 @@ mmo_scan (bfd *abfd)
 		  goto error_return;
 		}
 
-	      lineno = 0;
 	      break;
 
 	    case LOP_LINE:
-	      /* Set line number.  */
-	      lineno = y * 256 + z;
 	      /* FIXME: Create a sequence of mmo-specific line number
 		 entries for each section, then translate into canonical
 		 format.  */
@@ -2087,7 +2083,6 @@ mmo_scan (bfd *abfd)
 	    }
 	  vma += 4;
 	  vma &= ~3;
-	  lineno++;
 	}
     }
 
diff --git a/binutils/windmc.c b/binutils/windmc.c
index b47da91f1bb..f8a04c9b619 100644
--- a/binutils/windmc.c
+++ b/binutils/windmc.c
@@ -765,7 +765,8 @@ static void
 write_rc (FILE *fp)
 {
   mc_node_lang *n;
-  int i, l;
+  int l;
+  int i ATTRIBUTE_UNUSED;
 
   fprintf (fp,
 	   "/* Do not edit this file manually.\n"
@@ -773,12 +774,10 @@ write_rc (FILE *fp)
   if (! mc_nodes_lang_count)
     return;
   n = NULL;
-  i = 0;
   for (l = 0; l < mc_nodes_lang_count; l++)
     {
       if (n && n->lang == mc_nodes_lang[l]->lang)
 	continue;
-      ++i;
       n = mc_nodes_lang[l];
       fprintf (fp, "\n// Country: %s\n// Language: %s\n#pragma code_page(%u)\n",
 	       n->lang->lang_info.country, n->lang->lang_info.name,
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index df2e201fb74..d8bf6c07f51 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -2303,7 +2303,7 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
   char save_c = 0;
   struct riscv_opcode *insn;
   unsigned int regno;
-  int argnum;
+  int argnum ATTRIBUTE_UNUSED;
   const struct percent_op_match *p;
   struct riscv_ip_error error;
   error.msg = "unrecognized opcode";
@@ -2341,7 +2341,6 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
       error.msg = _("illegal operands");
       error.missing_ext = NULL;
       create_insn (ip, insn);
-      argnum = 1;
 
       imm_expr->X_op = O_absent;
       *imm_reloc = BFD_RELOC_UNUSED;
@@ -2859,7 +2858,6 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
 	      break; /* end RVV */
 
 	    case ',':
-	      ++argnum;
 	      if (*asarg++ == *oparg)
 		continue;
 	      asarg--;
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 92c33f528c8..77d8d387772 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -1510,8 +1510,9 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
   int total_relocs = 0;
   int i;
   bfd_vma sec_page = (bfd_vma) -1;
-  bfd_vma page_ptr, page_count;
-  int bi;
+  bfd_vma page_ptr;
+  bfd_vma page_count ATTRIBUTE_UNUSED;
+  int bi ATTRIBUTE_UNUSED;
   bfd *b;
   struct bfd_section *s;
 
@@ -1525,8 +1526,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
   reloc_data = xmalloc (total_relocs * sizeof (reloc_data_type));
 
   total_relocs = 0;
-  bi = 0;
-  for (bi = 0, b = info->input_bfds; b; bi++, b = b->link.next)
+  for (b = info->input_bfds; b; b = b->link.next)
     {
       arelent **relocs;
       int relsize, nrelocs;
@@ -1721,7 +1721,6 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
   sec_page = (bfd_vma) -1;
   reloc_sz = 0;
   page_ptr = (bfd_vma) -1;
-  page_count = 0;
 
   for (i = 0; i < total_relocs; i++)
     {
@@ -1740,7 +1739,6 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
 	  page_ptr = reloc_sz;
 	  reloc_sz += 8;
 	  sec_page = this_page;
-	  page_count = 0;
 	}
 
       bfd_put_16 (abfd, (rva & 0xfff) + (reloc_data[i].type << 12),
@@ -1753,7 +1751,6 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
 	  reloc_sz += 2;
 	}
 
-      page_count++;
     }
 
   while (reloc_sz & 3)
-- 
2.34.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 0/1] bfd, binutils, gas: Mark unused variables
  2022-09-15  3:09 [PATCH 0/1] bfd, binutils, gas: Mark unused variables Tsukasa OI
  2022-09-15  3:09 ` [PATCH 1/1] " Tsukasa OI
@ 2022-09-15  4:17 ` Tsukasa OI
  2022-09-15  4:17   ` [PATCH 1/1] " Tsukasa OI
  2022-09-15 12:46   ` [PATCH v3 0/1] bfd, binutils, gas: Remove/mark " Tsukasa OI
  1 sibling, 2 replies; 14+ messages in thread
From: Tsukasa OI @ 2022-09-15  4:17 UTC (permalink / raw)
  To: Tsukasa OI, Nick Clifton, Ian Lance Taylor, Nelson Chu; +Cc: binutils

I'm really sorry!

PATCH v1:
<https://sourceware.org/pipermail/binutils/2022-September/122865.html>

was broken because it was contaminated by an alternative solution (just
removing the variables) and this patch removed all "unused" variable
updates.

I should have noticed when I saw line counts.

Thanks,
Tsukasa




Tsukasa OI (1):
  bfd, binutils, gas: Mark unused variables

 bfd/elf32-lm32.c      | 2 +-
 bfd/elf32-nds32.c     | 2 +-
 bfd/mmo.c             | 2 +-
 binutils/windmc.c     | 3 ++-
 gas/config/tc-riscv.c | 2 +-
 ld/pe-dll.c           | 5 +++--
 6 files changed, 9 insertions(+), 7 deletions(-)


base-commit: fe39ffdc202f04397f31557f17170b40bc42b77a
-- 
2.34.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/1] bfd, binutils, gas: Mark unused variables
  2022-09-15  4:17 ` [PATCH 0/1] " Tsukasa OI
@ 2022-09-15  4:17   ` Tsukasa OI
  2022-09-15  7:29     ` Jan Beulich
  2022-09-15 12:46   ` [PATCH v3 0/1] bfd, binutils, gas: Remove/mark " Tsukasa OI
  1 sibling, 1 reply; 14+ messages in thread
From: Tsukasa OI @ 2022-09-15  4:17 UTC (permalink / raw)
  To: Tsukasa OI, Nick Clifton, Ian Lance Taylor, Nelson Chu; +Cc: binutils

Clang generates a warning on unused (technically, written but not read
thereafter) variables.  By the default configuration (with "-Werror"), it
causes a build failure (unless "--disable-werror" is specified).

This commit, instead of just removing those variables, adds
ATTRIBUTE_UNUSED attribute to them, which means they are *possibly* unused
(can be used but no warnings occur when unused).

bfd/ChangeLog:

	* elf32-lm32.c (lm32_elf_size_dynamic_sections): Mark unused
	rgot_count variable.
	* elf32-nds32.c (elf32_nds32_unify_relax_group): Mark unused
	count variable.
	* mmo.c (mmo_scan): Mark unused lineno variable.

binutils/ChangeLog:

	* windmc.c (write_rc): Mark unused i variable.

gas/ChangeLog:

	* config/tc-riscv.c (riscv_ip): Mark unused argnum variable.

ld/ChangeLog:

	* pe-dll.c (generate_reloc): Mark unused bi and page_count
	variables.
---
 bfd/elf32-lm32.c      | 2 +-
 bfd/elf32-nds32.c     | 2 +-
 bfd/mmo.c             | 2 +-
 binutils/windmc.c     | 3 ++-
 gas/config/tc-riscv.c | 2 +-
 ld/pe-dll.c           | 5 +++--
 6 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/bfd/elf32-lm32.c b/bfd/elf32-lm32.c
index 4830ab21dfa..64b3edef466 100644
--- a/bfd/elf32-lm32.c
+++ b/bfd/elf32-lm32.c
@@ -2067,7 +2067,7 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
       struct weak_symbol_list *list_start = NULL, *list_end = NULL;
       int rgot_weak_count = 0;
       int r32_count = 0;
-      int rgot_count = 0;
+      int rgot_count ATTRIBUTE_UNUSED = 0;
       /* Look for deleted sections.  */
       for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
 	{
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index 82c20592d6d..5d2eb62ffe3 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -13460,7 +13460,7 @@ elf32_nds32_unify_relax_group (bfd *abfd, asection *asec)
   Elf_Internal_Rela *relocs = NULL;
   enum elf_nds32_reloc_type rtype;
   struct section_id_list_t *node = NULL;
-  int count = 0;
+  int count ATTRIBUTE_UNUSED = 0;
 
   do
     {
diff --git a/bfd/mmo.c b/bfd/mmo.c
index fd92a346bc7..ddcdd35a15f 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -1602,7 +1602,7 @@ static bool
 mmo_scan (bfd *abfd)
 {
   unsigned int i;
-  unsigned int lineno = 1;
+  unsigned int lineno ATTRIBUTE_UNUSED = 1;
   bool error = false;
   bfd_vma vma = 0;
   asection *sec = NULL;
diff --git a/binutils/windmc.c b/binutils/windmc.c
index b47da91f1bb..9cb30c0ddfd 100644
--- a/binutils/windmc.c
+++ b/binutils/windmc.c
@@ -765,7 +765,8 @@ static void
 write_rc (FILE *fp)
 {
   mc_node_lang *n;
-  int i, l;
+  int l;
+  int i ATTRIBUTE_UNUSED;
 
   fprintf (fp,
 	   "/* Do not edit this file manually.\n"
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index df2e201fb74..509cd2ed624 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -2303,7 +2303,7 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
   char save_c = 0;
   struct riscv_opcode *insn;
   unsigned int regno;
-  int argnum;
+  int argnum ATTRIBUTE_UNUSED;
   const struct percent_op_match *p;
   struct riscv_ip_error error;
   error.msg = "unrecognized opcode";
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 92c33f528c8..ae7f3d8328c 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -1510,8 +1510,9 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
   int total_relocs = 0;
   int i;
   bfd_vma sec_page = (bfd_vma) -1;
-  bfd_vma page_ptr, page_count;
-  int bi;
+  bfd_vma page_ptr;
+  bfd_vma page_count ATTRIBUTE_UNUSED;
+  int bi ATTRIBUTE_UNUSED;
   bfd *b;
   struct bfd_section *s;
 
-- 
2.34.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/1] bfd, binutils, gas: Mark unused variables
  2022-09-15  4:17   ` [PATCH 1/1] " Tsukasa OI
@ 2022-09-15  7:29     ` Jan Beulich
  2022-09-15  8:25       ` Tsukasa OI
  0 siblings, 1 reply; 14+ messages in thread
From: Jan Beulich @ 2022-09-15  7:29 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils, Nick Clifton, Ian Lance Taylor, Nelson Chu

On 15.09.2022 06:17, Tsukasa OI via Binutils wrote:
> Clang generates a warning on unused (technically, written but not read
> thereafter) variables.  By the default configuration (with "-Werror"), it
> causes a build failure (unless "--disable-werror" is specified).
> 
> This commit, instead of just removing those variables, adds
> ATTRIBUTE_UNUSED attribute to them, which means they are *possibly* unused
> (can be used but no warnings occur when unused).

May I ask why you chose to do so? I can see such a variable being consumed
inside an #ifdef, but being declared unconditionally as a reason, but
(looking just at code I'm a little familiar with) ...

> --- a/gas/config/tc-riscv.c
> +++ b/gas/config/tc-riscv.c
> @@ -2303,7 +2303,7 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
>    char save_c = 0;
>    struct riscv_opcode *insn;
>    unsigned int regno;
> -  int argnum;
> +  int argnum ATTRIBUTE_UNUSED;
>    const struct percent_op_match *p;
>    struct riscv_ip_error error;
>    error.msg = "unrecognized opcode";
> --- a/ld/pe-dll.c
> +++ b/ld/pe-dll.c
> @@ -1510,8 +1510,9 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
>    int total_relocs = 0;
>    int i;
>    bfd_vma sec_page = (bfd_vma) -1;
> -  bfd_vma page_ptr, page_count;
> -  int bi;
> +  bfd_vma page_ptr;
> +  bfd_vma page_count ATTRIBUTE_UNUSED;
> +  int bi ATTRIBUTE_UNUSED;
>    bfd *b;
>    struct bfd_section *s;
>  

... in both of these cases there's truly no reading of the values,
so I don't see why they would need maintaining.

Jan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/1] bfd, binutils, gas: Mark unused variables
  2022-09-15  7:29     ` Jan Beulich
@ 2022-09-15  8:25       ` Tsukasa OI
  2022-09-15 23:10         ` Hans-Peter Nilsson
  0 siblings, 1 reply; 14+ messages in thread
From: Tsukasa OI @ 2022-09-15  8:25 UTC (permalink / raw)
  To: Jan Beulich; +Cc: binutils

On 2022/09/15 16:29, Jan Beulich wrote:
> On 15.09.2022 06:17, Tsukasa OI via Binutils wrote:
>> Clang generates a warning on unused (technically, written but not read
>> thereafter) variables.  By the default configuration (with "-Werror"), it
>> causes a build failure (unless "--disable-werror" is specified).
>>
>> This commit, instead of just removing those variables, adds
>> ATTRIBUTE_UNUSED attribute to them, which means they are *possibly* unused
>> (can be used but no warnings occur when unused).
> 
> May I ask why you chose to do so? I can see such a variable being consumed
> inside an #ifdef, but being declared unconditionally as a reason, but
> (looking just at code I'm a little familiar with) ...
> 
>> --- a/gas/config/tc-riscv.c
>> +++ b/gas/config/tc-riscv.c
>> @@ -2303,7 +2303,7 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
>>    char save_c = 0;
>>    struct riscv_opcode *insn;
>>    unsigned int regno;
>> -  int argnum;
>> +  int argnum ATTRIBUTE_UNUSED;
>>    const struct percent_op_match *p;
>>    struct riscv_ip_error error;
>>    error.msg = "unrecognized opcode";
>> --- a/ld/pe-dll.c
>> +++ b/ld/pe-dll.c
>> @@ -1510,8 +1510,9 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
>>    int total_relocs = 0;
>>    int i;
>>    bfd_vma sec_page = (bfd_vma) -1;
>> -  bfd_vma page_ptr, page_count;
>> -  int bi;
>> +  bfd_vma page_ptr;
>> +  bfd_vma page_count ATTRIBUTE_UNUSED;
>> +  int bi ATTRIBUTE_UNUSED;
>>    bfd *b;
>>    struct bfd_section *s;
>>  
> 
> ... in both of these cases there's truly no reading of the values,
> so I don't see why they would need maintaining.
> 
> Jan
> 

Possibly because I'm a coward?  ... I'm kidding but I must admit that I
didn't take a time to review their actual uses and chose not to break
someone's job (knowing that "someone" may not exist anymore).

bfd/elf32-lm32.c:
    It seems unused rgot_count is a part of an unimplemented feature.
    I want to keep this variable.  Existence of this variable was the
    first reason for me to keep "unused" variables.
bfd/mmo.c:
    Likewise (though that "an unimplemented feature" is never
    implemented for over 10 years).
    I want to keep this variable (but may change my mind in the future).

binutils/windmc.c:
    For this simple function, recovering i variable is very easy.
    It seems it's also a debug artifact from the earliest days.
    Removing is an option.
gas/tc-riscv.c:
    I first thought it's a part of an unimplemented feature and to help
    implementing assembler something... but it seems unused from the
    start (possibly an artifact on the first contribution?).
    Removing is an option.
ld/pe-dll.c:
    I reviewed thoroughly and concluded that, despite that they may have
    a debugging use, keeping this state over 20 years seems too long.
    Removing is an option.

bfd/elf32-nds32.c:
    The first time this variables is added, someone was clearly
    debugging their code and it may be an artifact, too.  Unlike RISC-V,
    it's not an artifact from the first NDS port and it was added
    in 2018.  Recovering this variable is not hard but...
    Removing is ... possibly an option?

I think I can remove unused variables from those files:

*   binutils/windmc.c
*   gas/tc-riscv.c
*   ld/pe-dll.c

bfd/elf32-nds32.c is a candidate of unused variable removal.


For bfd/elf32-lm32.c and bfd/mmo.c, I will choose to keep unused
variables for now. If those variables are still unused in like 2030, I
will change my mind.

I'll at least remove unused variables on three files I shown above (and
possibly on bfd/elf32-nds32.c) and resubmit that patch.

Thanks,
Tsukasa

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v3 0/1] bfd, binutils, gas: Remove/mark unused variables
  2022-09-15  4:17 ` [PATCH 0/1] " Tsukasa OI
  2022-09-15  4:17   ` [PATCH 1/1] " Tsukasa OI
@ 2022-09-15 12:46   ` Tsukasa OI
  2022-09-15 12:46     ` [PATCH v3 1/1] " Tsukasa OI
  1 sibling, 1 reply; 14+ messages in thread
From: Tsukasa OI @ 2022-09-15 12:46 UTC (permalink / raw)
  To: Tsukasa OI, Nick Clifton, Jan Beulich; +Cc: binutils

Hello,

PATCH v1:
<https://sourceware.org/pipermail/binutils/2022-September/122865.html>
PATCH v2:
<https://sourceware.org/pipermail/binutils/2022-September/122873.html>

It "removes" unused variables in bfd, binutils and gas.

[Changes: v2 -> v3]
-   Actually removed some but not all variables
    (instead of adding ATTRIBUTE_UNUSED)

Thanks,
Tsukasa




Tsukasa OI (1):
  bfd, binutils, gas: Remove/mark unused variables

 bfd/elf32-lm32.c      | 2 +-
 bfd/elf32-nds32.c     | 3 ---
 bfd/mmo.c             | 2 +-
 binutils/windmc.c     | 4 +---
 gas/config/tc-riscv.c | 3 ---
 ld/pe-dll.c           | 9 ++-------
 6 files changed, 5 insertions(+), 18 deletions(-)


base-commit: fe39ffdc202f04397f31557f17170b40bc42b77a
-- 
2.34.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v3 1/1] bfd, binutils, gas: Remove/mark unused variables
  2022-09-15 12:46   ` [PATCH v3 0/1] bfd, binutils, gas: Remove/mark " Tsukasa OI
@ 2022-09-15 12:46     ` Tsukasa OI
  2022-09-15 12:58       ` Jan Beulich
  2022-09-20 12:50       ` Nick Clifton
  0 siblings, 2 replies; 14+ messages in thread
From: Tsukasa OI @ 2022-09-15 12:46 UTC (permalink / raw)
  To: Tsukasa OI, Nick Clifton, Jan Beulich; +Cc: binutils

Clang generates a warning on unused (technically, written but not read
thereafter) variables.  By the default configuration (with "-Werror"), it
causes a build failure (unless "--disable-werror" is specified).

This commit adds ATTRIBUTE_UNUSED attribute to some of them, which means
they are *possibly* unused (can be used but no warnings occur when
unused) and removes others.

bfd/ChangeLog:

	* elf32-lm32.c (lm32_elf_size_dynamic_sections): Mark unused
	rgot_count variable.
	* elf32-nds32.c (elf32_nds32_unify_relax_group): Remove unused
	count variable.
	* mmo.c (mmo_scan): Mark unused lineno variable.

binutils/ChangeLog:

	* windmc.c (write_rc): Remove unused i variable.

gas/ChangeLog:

	* config/tc-riscv.c (riscv_ip): Remove unused argnum variable.

ld/ChangeLog:

	* pe-dll.c (generate_reloc): Remove unused bi and page_count
	variables.
---
 bfd/elf32-lm32.c      | 2 +-
 bfd/elf32-nds32.c     | 3 ---
 bfd/mmo.c             | 2 +-
 binutils/windmc.c     | 4 +---
 gas/config/tc-riscv.c | 3 ---
 ld/pe-dll.c           | 9 ++-------
 6 files changed, 5 insertions(+), 18 deletions(-)

diff --git a/bfd/elf32-lm32.c b/bfd/elf32-lm32.c
index 4830ab21dfa..64b3edef466 100644
--- a/bfd/elf32-lm32.c
+++ b/bfd/elf32-lm32.c
@@ -2067,7 +2067,7 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
       struct weak_symbol_list *list_start = NULL, *list_end = NULL;
       int rgot_weak_count = 0;
       int r32_count = 0;
-      int rgot_count = 0;
+      int rgot_count ATTRIBUTE_UNUSED = 0;
       /* Look for deleted sections.  */
       for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
 	{
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index 82c20592d6d..35e0302ed74 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -13460,7 +13460,6 @@ elf32_nds32_unify_relax_group (bfd *abfd, asection *asec)
   Elf_Internal_Rela *relocs = NULL;
   enum elf_nds32_reloc_type rtype;
   struct section_id_list_t *node = NULL;
-  int count = 0;
 
   do
     {
@@ -13499,8 +13498,6 @@ elf32_nds32_unify_relax_group (bfd *abfd, asection *asec)
 
 	  /* Change it.  */
 	  rel->r_addend += relax_group_ptr->bias;
-	  /* Debugging count.  */
-	  count++;
 	}
     }
   while (false);
diff --git a/bfd/mmo.c b/bfd/mmo.c
index fd92a346bc7..ddcdd35a15f 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -1602,7 +1602,7 @@ static bool
 mmo_scan (bfd *abfd)
 {
   unsigned int i;
-  unsigned int lineno = 1;
+  unsigned int lineno ATTRIBUTE_UNUSED = 1;
   bool error = false;
   bfd_vma vma = 0;
   asection *sec = NULL;
diff --git a/binutils/windmc.c b/binutils/windmc.c
index b47da91f1bb..9a22e4991fb 100644
--- a/binutils/windmc.c
+++ b/binutils/windmc.c
@@ -765,7 +765,7 @@ static void
 write_rc (FILE *fp)
 {
   mc_node_lang *n;
-  int i, l;
+  int l;
 
   fprintf (fp,
 	   "/* Do not edit this file manually.\n"
@@ -773,12 +773,10 @@ write_rc (FILE *fp)
   if (! mc_nodes_lang_count)
     return;
   n = NULL;
-  i = 0;
   for (l = 0; l < mc_nodes_lang_count; l++)
     {
       if (n && n->lang == mc_nodes_lang[l]->lang)
 	continue;
-      ++i;
       n = mc_nodes_lang[l];
       fprintf (fp, "\n// Country: %s\n// Language: %s\n#pragma code_page(%u)\n",
 	       n->lang->lang_info.country, n->lang->lang_info.name,
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index df2e201fb74..2f5ee18e451 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -2303,7 +2303,6 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
   char save_c = 0;
   struct riscv_opcode *insn;
   unsigned int regno;
-  int argnum;
   const struct percent_op_match *p;
   struct riscv_ip_error error;
   error.msg = "unrecognized opcode";
@@ -2341,7 +2340,6 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
       error.msg = _("illegal operands");
       error.missing_ext = NULL;
       create_insn (ip, insn);
-      argnum = 1;
 
       imm_expr->X_op = O_absent;
       *imm_reloc = BFD_RELOC_UNUSED;
@@ -2859,7 +2857,6 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
 	      break; /* end RVV */
 
 	    case ',':
-	      ++argnum;
 	      if (*asarg++ == *oparg)
 		continue;
 	      asarg--;
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 92c33f528c8..338e2def83c 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -1510,8 +1510,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
   int total_relocs = 0;
   int i;
   bfd_vma sec_page = (bfd_vma) -1;
-  bfd_vma page_ptr, page_count;
-  int bi;
+  bfd_vma page_ptr;
   bfd *b;
   struct bfd_section *s;
 
@@ -1525,8 +1524,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
   reloc_data = xmalloc (total_relocs * sizeof (reloc_data_type));
 
   total_relocs = 0;
-  bi = 0;
-  for (bi = 0, b = info->input_bfds; b; bi++, b = b->link.next)
+  for (b = info->input_bfds; b; b = b->link.next)
     {
       arelent **relocs;
       int relsize, nrelocs;
@@ -1721,7 +1719,6 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
   sec_page = (bfd_vma) -1;
   reloc_sz = 0;
   page_ptr = (bfd_vma) -1;
-  page_count = 0;
 
   for (i = 0; i < total_relocs; i++)
     {
@@ -1740,7 +1737,6 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
 	  page_ptr = reloc_sz;
 	  reloc_sz += 8;
 	  sec_page = this_page;
-	  page_count = 0;
 	}
 
       bfd_put_16 (abfd, (rva & 0xfff) + (reloc_data[i].type << 12),
@@ -1753,7 +1749,6 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
 	  reloc_sz += 2;
 	}
 
-      page_count++;
     }
 
   while (reloc_sz & 3)
-- 
2.34.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/1] bfd, binutils, gas: Remove/mark unused variables
  2022-09-15 12:46     ` [PATCH v3 1/1] " Tsukasa OI
@ 2022-09-15 12:58       ` Jan Beulich
  2022-09-20 12:50       ` Nick Clifton
  1 sibling, 0 replies; 14+ messages in thread
From: Jan Beulich @ 2022-09-15 12:58 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils, Nick Clifton

On 15.09.2022 14:46, Tsukasa OI wrote:
> Clang generates a warning on unused (technically, written but not read
> thereafter) variables.  By the default configuration (with "-Werror"), it
> causes a build failure (unless "--disable-werror" is specified).
> 
> This commit adds ATTRIBUTE_UNUSED attribute to some of them, which means
> they are *possibly* unused (can be used but no warnings occur when
> unused) and removes others.

Okay.

Thanks, Jan


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/1] bfd, binutils, gas: Mark unused variables
  2022-09-15  8:25       ` Tsukasa OI
@ 2022-09-15 23:10         ` Hans-Peter Nilsson
  0 siblings, 0 replies; 14+ messages in thread
From: Hans-Peter Nilsson @ 2022-09-15 23:10 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: Jan Beulich, binutils

On Thu, 15 Sep 2022, Tsukasa OI via Binutils wrote:
> bfd/mmo.c:
>     Likewise (though that "an unimplemented feature" is never
>     implemented for over 10 years).
>     I want to keep this variable (but may change my mind in the future).

> For bfd/elf32-lm32.c and bfd/mmo.c, I will choose to keep unused
> variables for now. If those variables are still unused in like 2030, I
> will change my mind.

I agree with your assessment regarding mmo.c. :)

The mmo.c change (marking the variable as unused) is fine, 
thanks.

brgds, H-P

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/1] bfd, binutils, gas: Remove/mark unused variables
  2022-09-15 12:46     ` [PATCH v3 1/1] " Tsukasa OI
  2022-09-15 12:58       ` Jan Beulich
@ 2022-09-20 12:50       ` Nick Clifton
  2022-09-21  5:54         ` Tsukasa OI
  1 sibling, 1 reply; 14+ messages in thread
From: Nick Clifton @ 2022-09-20 12:50 UTC (permalink / raw)
  To: Tsukasa OI, Jan Beulich; +Cc: binutils

Hi Tsukasa,

> bfd/ChangeLog:
> 
> 	* elf32-lm32.c (lm32_elf_size_dynamic_sections): Mark unused
> 	rgot_count variable.
> 	* elf32-nds32.c (elf32_nds32_unify_relax_group): Remove unused
> 	count variable.
> 	* mmo.c (mmo_scan): Mark unused lineno variable.
> 
> binutils/ChangeLog:
> 
> 	* windmc.c (write_rc): Remove unused i variable.
> 
> gas/ChangeLog:
> 
> 	* config/tc-riscv.c (riscv_ip): Remove unused argnum variable.
> 
> ld/ChangeLog:
> 
> 	* pe-dll.c (generate_reloc): Remove unused bi and page_count
> 	variables.

Patch approved - please apply.

Cheers
   Nick


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/1] bfd, binutils, gas: Remove/mark unused variables
  2022-09-20 12:50       ` Nick Clifton
@ 2022-09-21  5:54         ` Tsukasa OI
  2022-09-21  6:15           ` Jan Beulich
  2022-09-21  9:55           ` Nick Clifton
  0 siblings, 2 replies; 14+ messages in thread
From: Tsukasa OI @ 2022-09-21  5:54 UTC (permalink / raw)
  To: Nick Clifton, Jan Beulich; +Cc: binutils

On 2022/09/20 21:50, Nick Clifton wrote:
> Hi Tsukasa,
> 
>> bfd/ChangeLog:
>>
>>     * elf32-lm32.c (lm32_elf_size_dynamic_sections): Mark unused
>>     rgot_count variable.
>>     * elf32-nds32.c (elf32_nds32_unify_relax_group): Remove unused
>>     count variable.
>>     * mmo.c (mmo_scan): Mark unused lineno variable.
>>
>> binutils/ChangeLog:
>>
>>     * windmc.c (write_rc): Remove unused i variable.
>>
>> gas/ChangeLog:
>>
>>     * config/tc-riscv.c (riscv_ip): Remove unused argnum variable.
>>
>> ld/ChangeLog:
>>
>>     * pe-dll.c (generate_reloc): Remove unused bi and page_count
>>     variables.
> 
> Patch approved - please apply.
> 
> Cheers
>   Nick
> 

Nick and Jan,

I sincerely apologize that I thought previous "okay" mail from Jan, a
maintainer:
<https://sourceware.org/pipermail/binutils/2022-September/122890.html>
as an "approval" and applied this patch already.

I will not merge the patch again unless the word "approve" is used
explicitly.  I am really sorry.

Regards,
Tsukasa

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/1] bfd, binutils, gas: Remove/mark unused variables
  2022-09-21  5:54         ` Tsukasa OI
@ 2022-09-21  6:15           ` Jan Beulich
  2022-09-21  9:55           ` Nick Clifton
  1 sibling, 0 replies; 14+ messages in thread
From: Jan Beulich @ 2022-09-21  6:15 UTC (permalink / raw)
  To: Tsukasa OI; +Cc: binutils, Nick Clifton

On 21.09.2022 07:54, Tsukasa OI wrote:
> On 2022/09/20 21:50, Nick Clifton wrote:
>> Hi Tsukasa,
>>
>>> bfd/ChangeLog:
>>>
>>>     * elf32-lm32.c (lm32_elf_size_dynamic_sections): Mark unused
>>>     rgot_count variable.
>>>     * elf32-nds32.c (elf32_nds32_unify_relax_group): Remove unused
>>>     count variable.
>>>     * mmo.c (mmo_scan): Mark unused lineno variable.
>>>
>>> binutils/ChangeLog:
>>>
>>>     * windmc.c (write_rc): Remove unused i variable.
>>>
>>> gas/ChangeLog:
>>>
>>>     * config/tc-riscv.c (riscv_ip): Remove unused argnum variable.
>>>
>>> ld/ChangeLog:
>>>
>>>     * pe-dll.c (generate_reloc): Remove unused bi and page_count
>>>     variables.
>>
>> Patch approved - please apply.
>>
>> Cheers
>>   Nick
>>
> 
> Nick and Jan,
> 
> I sincerely apologize that I thought previous "okay" mail from Jan, a
> maintainer:
> <https://sourceware.org/pipermail/binutils/2022-September/122890.html>
> as an "approval" and applied this patch already.

No, you were right in doing so and - Nick, please correct me if
I'm wrong - I might guess that Nick simply overlooked that I did
give an okay already.

> I will not merge the patch again unless the word "approve" is used
> explicitly.  I am really sorry.

Hence also no need for this.

Jan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/1] bfd, binutils, gas: Remove/mark unused variables
  2022-09-21  5:54         ` Tsukasa OI
  2022-09-21  6:15           ` Jan Beulich
@ 2022-09-21  9:55           ` Nick Clifton
  1 sibling, 0 replies; 14+ messages in thread
From: Nick Clifton @ 2022-09-21  9:55 UTC (permalink / raw)
  To: Tsukasa OI, Jan Beulich; +Cc: binutils

Hi Tsukasa,

> Nick and Jan,
> 
> I sincerely apologize that I thought previous "okay" mail from Jan, a
> maintainer:
> <https://sourceware.org/pipermail/binutils/2022-September/122890.html>
> as an "approval" and applied this patch already.
> 
> I will not merge the patch again unless the word "approve" is used
> explicitly.  I am really sorry.

No - you were correct.  Jan's "okay" was an approval.  And I should have
noticed that and not sent my "approved" email, so I apologise for the
confusion.

Cheers
   Nick



^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-09-21  9:55 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-15  3:09 [PATCH 0/1] bfd, binutils, gas: Mark unused variables Tsukasa OI
2022-09-15  3:09 ` [PATCH 1/1] " Tsukasa OI
2022-09-15  4:17 ` [PATCH 0/1] " Tsukasa OI
2022-09-15  4:17   ` [PATCH 1/1] " Tsukasa OI
2022-09-15  7:29     ` Jan Beulich
2022-09-15  8:25       ` Tsukasa OI
2022-09-15 23:10         ` Hans-Peter Nilsson
2022-09-15 12:46   ` [PATCH v3 0/1] bfd, binutils, gas: Remove/mark " Tsukasa OI
2022-09-15 12:46     ` [PATCH v3 1/1] " Tsukasa OI
2022-09-15 12:58       ` Jan Beulich
2022-09-20 12:50       ` Nick Clifton
2022-09-21  5:54         ` Tsukasa OI
2022-09-21  6:15           ` Jan Beulich
2022-09-21  9:55           ` Nick Clifton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).