PATCH: Modify Re-arrange IE->LE transition for R_386_TLS_IE

H. J. Lu hjl@lucon.org
Tue Oct 8 00:06:00 GMT 2002


I got

/export/linux/src/binutils/binutils/bfd/elf32-i386.c:2606: warning: `type'
might be used uninitialized in this function

Here is a patch.


H.J.
-------------- next part --------------
2002-10-08  H.J. Lu <hjl@gnu.org>

	* elf32-i386.c (elf_i386_relocate_section): Re-arrange the
	IE->LE transition for R_386_TLS_IE.

--- bfd/elf32-i386.c.init	Tue Oct  1 09:06:44 2002
+++ bfd/elf32-i386.c	Mon Oct  7 23:59:22 2002
@@ -2617,36 +2617,40 @@ elf_i386_relocate_section (output_bfd, i
 		  BFD_ASSERT (rel->r_offset >= 1);
 		  val = bfd_get_8 (input_bfd, contents + rel->r_offset - 1);
 		  BFD_ASSERT (rel->r_offset + 4 <= input_section->_raw_size);
-		  if (val != 0xa1)
-		    {
-		      BFD_ASSERT (rel->r_offset >= 2);
-		      type = bfd_get_8 (input_bfd, contents + rel->r_offset - 2);
-		    }
 		  if (val == 0xa1)
 		    {
 		      /* movl foo, %eax.  */
 		      bfd_put_8 (output_bfd, 0xb8, contents + rel->r_offset - 1);
 		    }
-		  else if (type == 0x8b)
-		    {
-		      /* movl */
-		      BFD_ASSERT ((val & 0xc7) == 0x05);
-		      bfd_put_8 (output_bfd, 0xc7,
-				 contents + rel->r_offset - 2);
-		      bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7),
-				 contents + rel->r_offset - 1);
-		    }
-		  else if (type == 0x03)
+		  else
 		    {
-		      /* addl */
-		      BFD_ASSERT ((val & 0xc7) == 0x05);
-		      bfd_put_8 (output_bfd, 0x81,
-				 contents + rel->r_offset - 2);
-		      bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7),
-				 contents + rel->r_offset - 1);
+		      BFD_ASSERT (rel->r_offset >= 2);
+		      type = bfd_get_8 (input_bfd, contents + rel->r_offset - 2);
+		      switch (type)
+		        {
+			case 0x8b:
+			  /* movl */
+			  BFD_ASSERT ((val & 0xc7) == 0x05);
+			  bfd_put_8 (output_bfd, 0xc7,
+				     contents + rel->r_offset - 2);
+			  bfd_put_8 (output_bfd,
+				     0xc0 | ((val >> 3) & 7),
+				     contents + rel->r_offset - 1);
+			  break;
+			case 0x03:
+			  /* addl */
+			  BFD_ASSERT ((val & 0xc7) == 0x05);
+			  bfd_put_8 (output_bfd, 0x81,
+				     contents + rel->r_offset - 2);
+			  bfd_put_8 (output_bfd,
+				     0xc0 | ((val >> 3) & 7),
+				     contents + rel->r_offset - 1);
+			  break;
+			default:
+			  BFD_FAIL ();
+			  break;
+		        }
 		    }
-		  else
-		    BFD_FAIL ();
 		  bfd_put_32 (output_bfd, -tpoff (info, relocation),
 			      contents + rel->r_offset);
 		  continue;


More information about the Binutils mailing list