2010-01-13 Doug Kwan <dougkwan@google.com>
authorDoug Kwan <dougkwan@google.com>
Thu, 14 Jan 2010 02:42:20 +0000 (02:42 +0000)
committerDoug Kwan <dougkwan@google.com>
Thu, 14 Jan 2010 02:42:20 +0000 (02:42 +0000)
* arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
apparent compiler problem of not folding static constant integral
data members of elfcpp::Elf_sizes<32>.

gold/ChangeLog
gold/arm.cc

index 32d7fb7..c6d0c16 100644 (file)
@@ -1,6 +1,13 @@
 2010-01-13  Doug Kwan  <dougkwan@google.com>
 
        * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
+       Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
+       apparent compiler problem of not folding static constant integral
+       data members of elfcpp::Elf_sizes<32>.
+
+2010-01-13  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
        Arm_relobj::section_needs_cortex_a8_stub_scanning,
        Arm_relobj::scan_section_for_cortex_a8_erratum,
        Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
index c9ea2fd..38f9d71 100644 (file)
@@ -4203,9 +4203,11 @@ Arm_relobj<big_endian>::section_needs_reloc_stub_scanning(
   if (this->adjust_shndx(shdr.get_sh_link()) != this->symtab_shndx())
     return false;
 
-  const unsigned int reloc_size = (sh_type == elfcpp::SHT_REL
-                                  ? elfcpp::Elf_sizes<32>::rel_size
-                                  : elfcpp::Elf_sizes<32>::rela_size);
+  unsigned int reloc_size;
+  if (sh_type == elfcpp::SHT_REL)
+    reloc_size = elfcpp::Elf_sizes<32>::rel_size;
+  else
+    reloc_size = elfcpp::Elf_sizes<32>::rela_size;
 
   // Ignore reloc section with unexpected entsize or uneven size.
   // The error will be reported in the final link.
@@ -4380,9 +4382,11 @@ Arm_relobj<big_endian>::scan_sections_for_stubs(
          relinfo.reloc_shndx = i;
          relinfo.data_shndx = index;
          unsigned int sh_type = shdr.get_sh_type();
-         const unsigned int reloc_size = (sh_type == elfcpp::SHT_REL
-                                          ? elfcpp::Elf_sizes<32>::rel_size
-                                          : elfcpp::Elf_sizes<32>::rela_size);
+         unsigned int reloc_size;
+         if (sh_type == elfcpp::SHT_REL)
+           reloc_size = elfcpp::Elf_sizes<32>::rel_size;
+         else
+           reloc_size = elfcpp::Elf_sizes<32>::rela_size;
 
          Output_section* os = out_sections[index];
          arm_target->scan_section_for_stubs(&relinfo, sh_type, prelocs,