[PATCH] bfd/ELF: nds32_convert_{16_to_32,32_to_16}() are exposed to gas

Jan Beulich jbeulich@suse.com
Tue Nov 11 13:37:45 GMT 2025


As non-private functions, they should come with full disambiguating
prefixes - add bfd_elf_ to both. Hence commit bf4128d0cc6d2 ("bfd/ELF:
mark internal NDS32 functions hidden") also wrongly added ATTRIBUTE_HIDDEN
to them.

--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -7728,8 +7728,8 @@ nds32_convert_32_to_16_alu2 (bfd *abfd,
 }
 
 int
-nds32_convert_32_to_16 (bfd *abfd, uint32_t insn, uint16_t *pinsn16,
-			int *pinsn_type)
+bfd_elf_nds32_convert_32_to_16 (bfd *abfd, uint32_t insn, uint16_t *pinsn16,
+				int *pinsn_type)
 {
   int op6;
   uint16_t insn16 = 0;
@@ -8236,7 +8236,7 @@ special_convert_32_to_16 (unsigned long
    Return non-zero on successful.  Otherwise 0 is returned.  */
 
 int
-nds32_convert_16_to_32 (bfd *abfd, uint16_t insn16, uint32_t *pinsn)
+bfd_elf_nds32_convert_16_to_32 (bfd *abfd, uint16_t insn16, uint32_t *pinsn)
 {
   uint32_t insn = 0xffffffff;
   unsigned long mach = bfd_get_mach (abfd);
@@ -8772,7 +8772,7 @@ is_convert_32_to_16 (bfd *abfd, asection
     return false;
   insn = bfd_getb32 (contents + offset);
 
-  if (nds32_convert_32_to_16 (abfd, insn, insn16, NULL))
+  if (bfd_elf_nds32_convert_32_to_16 (abfd, insn, insn16, NULL))
     convert_type = NORMAL_32_TO_16;
   else if (special_convert_32_to_16 (insn, insn16, reloc))
     convert_type = SPECIAL_32_TO_16;
--- a/bfd/elf32-nds32.h
+++ b/bfd/elf32-nds32.h
@@ -98,10 +98,10 @@ extern int elf32_nds32_unify_relax_group
 extern int nds32_elf_unify_tls_model
   (bfd *, asection *, bfd_byte *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
-extern int nds32_convert_32_to_16
-  (bfd *, uint32_t, uint16_t *, int *) ATTRIBUTE_HIDDEN;
-extern int nds32_convert_16_to_32
-  (bfd *, uint16_t, uint32_t *) ATTRIBUTE_HIDDEN;
+extern int bfd_elf_nds32_convert_32_to_16
+  (bfd *, uint32_t, uint16_t *, int *);
+extern int bfd_elf_nds32_convert_16_to_32
+  (bfd *, uint16_t, uint32_t *);
 extern void	   bfd_elf32_nds32_set_target_option (struct bfd_link_info *,
 						      int, int, FILE *,
 						      int, int, int);
--- a/gas/config/tc-nds32.c
+++ b/gas/config/tc-nds32.c
@@ -6483,9 +6483,11 @@ md_assemble (char *str)
     }
   else if (!relaxing && enable_16bit && (optimize || optimize_for_space)
 	   && ((!fld && !verbatim && insn.opcode->isize == 4
-		&& nds32_convert_32_to_16 (stdoutput, insn.insn, &insn_16, NULL))
+		&& bfd_elf_nds32_convert_32_to_16 (stdoutput, insn.insn,
+						   &insn_16, NULL))
 	       || (insn.opcode->isize == 2
-		   && nds32_convert_16_to_32 (stdoutput, insn.insn, NULL))))
+		   && bfd_elf_nds32_convert_16_to_32 (stdoutput, insn.insn,
+						      NULL))))
     {
       /* Record this one is relaxable.  */
       expressionS *pexp = insn.info;
@@ -7073,7 +7075,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNU
       if (fragP->tc_frag_data.flag & NDS32_FRAG_RELAXED)
 	{
 	  insn_16 = fragP->tc_frag_data.insn;
-	  nds32_convert_16_to_32 (stdoutput, insn_16, &insn);
+	  bfd_elf_nds32_convert_16_to_32 (stdoutput, insn_16, &insn);
 	  fr_buffer = fragP->fr_literal + fr_where;
 	  fragP->fr_fix += 2;
 	  exp.X_op = O_symbol;
@@ -7089,7 +7091,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNU
       if (fragP->tc_frag_data.opcode->isize == 2)
 	{
 	  insn_16 = fragP->tc_frag_data.insn;
-	  nds32_convert_16_to_32 (stdoutput, insn_16, &insn);
+	  bfd_elf_nds32_convert_16_to_32 (stdoutput, insn_16, &insn);
 	}
       else
 	insn = fragP->tc_frag_data.insn;


More information about the Binutils mailing list