Problems compiling elfxx-sparc.c

David S. Miller davem@davemloft.net
Wed Apr 20 18:40:00 GMT 2005


On Wed, 20 Apr 2005 15:15:31 +0200
Andreas Schwab <schwab@suse.de> wrote:

> >     .../bfd/elfxx-sparc.c: In function `sparc_elf_r_symndx_64':
> >     .../bfd/elfxx-sparc.c:541: warning: right shift count >= width of type
> >     .../bfd/elfxx-sparc.c: In function `allocate_dynrelocs':
> >     .../bfd/elfxx-sparc.c:1793: warning: left shift count >= width of type
 ...
> /cvs/binutils/bfd/elfxx-sparc.c: In function '_bfd_sparc_elf_link_hash_table_create':
> /cvs/binutils/bfd/elfxx-sparc.c:780: warning: pointer targets in assignment differ in signedness
> /cvs/binutils/bfd/elfxx-sparc.c:797: warning: pointer targets in assignment differ in signedness

These should all be cured by the following patch which I just
checked in.   Let me know if any warnings still remain.

2005-04-20  David S. Miller  <davem@davemloft.net>

	* elfxx-sparc.c (sparc_elf_r_symndx_64): Fix compiler warning.
	(_bfd_sparc_elf_link_hash_table_create): Likewise.
	(allocate_dynrelocs): Likewise.

--- elfxx-sparc.c~	2005-04-13 12:20:28.000000000 -0700
+++ elfxx-sparc.c	2005-04-20 11:21:17.000000000 -0700
@@ -538,7 +538,8 @@
 static bfd_vma
 sparc_elf_r_symndx_64 (bfd_vma r_info)
 {
-  return ELF64_R_SYM (r_info);
+  bfd_vma r_symndx = ELF32_R_SYM (r_info);
+  return (r_symndx >> 24);
 }
 
 static bfd_vma
@@ -777,7 +778,8 @@
       ret->align_power_max = 4;
       ret->bytes_per_word = 8;
       ret->bytes_per_rela = sizeof (Elf64_External_Rela);
-      ret->dynamic_interpreter = ELF64_DYNAMIC_INTERPRETER;
+      ret->dynamic_interpreter =
+	(const unsigned char *) ELF64_DYNAMIC_INTERPRETER;
       ret->dynamic_interpreter_size = sizeof ELF64_DYNAMIC_INTERPRETER;
     }
   else
@@ -794,7 +796,8 @@
       ret->align_power_max = 3;
       ret->bytes_per_word = 4;
       ret->bytes_per_rela = sizeof (Elf32_External_Rela);
-      ret->dynamic_interpreter = ELF32_DYNAMIC_INTERPRETER;
+      ret->dynamic_interpreter =
+	(const unsigned char *) ELF32_DYNAMIC_INTERPRETER;
       ret->dynamic_interpreter_size = sizeof ELF32_DYNAMIC_INTERPRETER;
     }
 
@@ -1790,7 +1793,7 @@
 	  /* The procedure linkage table size is bounded by the magnitude
 	     of the offset we can describe in the entry.  */
 	  if (s->size >= (SPARC_ELF_WORD_BYTES(htab) == 8 ?
-			  (bfd_vma)1 << 32 : 0x400000))
+			  (((bfd_vma)1 << 31) << 1) : 0x400000))
 	    {
 	      bfd_set_error (bfd_error_bad_value);
 	      return FALSE;



More information about the Binutils mailing list