Ignore discarded section when converting mov to lea
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 18 Sep 2012 00:41:59 +0000 (00:41 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 18 Sep 2012 00:41:59 +0000 (00:41 +0000)
* elf32-i386.c (elf_i386_convert_mov_to_lea): Ignore discarded
section.
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise.

bfd/ChangeLog
bfd/elf32-i386.c
bfd/elf64-x86-64.c

index cc4239c..7a4334f 100644 (file)
@@ -1,5 +1,11 @@
 2012-09-17  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * elf32-i386.c (elf_i386_convert_mov_to_lea): Ignore discarded
+       section.
+       * elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise.
+
+2012-09-17  H.J. Lu  <hongjiu.lu@intel.com>
+
        * elf32-i386.c (elf_i386_finish_dynamic_symbol): Replace return
        FALSE with abort.
        * elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
index 59feea2..eb90a91 100644 (file)
@@ -2559,9 +2559,10 @@ elf_i386_convert_mov_to_lea (bfd *abfd, asection *sec,
   if (!is_elf_hash_table (link_info->hash))
     return FALSE;
 
-  /* Nothing to do if there are no codes or no relocations.  */
+  /* Nothing to do if there are no codes, no relocations or no output.  */
   if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC)
-      || sec->reloc_count == 0)
+      || sec->reloc_count == 0
+      || discarded_section (sec))
     return TRUE;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
index cccc5ca..a440647 100644 (file)
@@ -2595,9 +2595,10 @@ elf_x86_64_convert_mov_to_lea (bfd *abfd, asection *sec,
   if (!is_elf_hash_table (link_info->hash))
     return FALSE;
 
-  /* Nothing to do if there are no codes or no relocations.  */
+  /* Nothing to do if there are no codes, no relocations or no output.  */
   if ((sec->flags & (SEC_CODE | SEC_RELOC)) != (SEC_CODE | SEC_RELOC)
-      || sec->reloc_count == 0)
+      || sec->reloc_count == 0
+      || discarded_section (sec))
     return TRUE;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;