* elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Modified
authorSean Keys <skeys@ipdatasys.com>
Thu, 2 Aug 2012 20:40:30 +0000 (20:40 +0000)
committerSean Keys <skeys@ipdatasys.com>
Thu, 2 Aug 2012 20:40:30 +0000 (20:40 +0000)
conditional statment to allow suppression of mismatched bank
warning.

bfd/ChangeLog
bfd/elf32-m68hc1x.c

index 73f9eff8c5cd616f1d0f97947125403fd7e8689f..739fbef376dd1b5d07ac767d396dfd634cecd384 100644 (file)
@@ -1,3 +1,9 @@
+2012-08-02  Sean Keys  <skeys@ipdatasys.com>
+
+       * elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Modified
+       conditional statment to allow suppression of mismatched bank
+       warning.
+
 2012-08-01  Alan Modra  <amodra@gmail.com>
 
        * dwarf2.c (struct dwarf2_debug): Add close_on_cleanup.
index 442a41121b03865314665358fcb70a483f066e3e..ef0a9f14a5ad150aa3578fb7303f0a02300e8f7a 100644 (file)
@@ -918,9 +918,11 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
   struct m68hc11_page_info *pinfo;
   const struct elf_backend_data * const ebd = get_elf_backend_data (input_bfd);
   struct m68hc11_elf_link_hash_table *htab;
+  unsigned long e_flags;
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
+  e_flags = elf_elfheader (input_bfd)->e_flags;
 
   htab = m68hc11_elf_hash_table (info);
   if (htab == NULL)
@@ -1048,7 +1050,7 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
              a LO8XG. Does not actually check that it was a LO8XG.
             Adjusts high and low bytes.  */
           relocation = phys_addr;
-          if ((elf_elfheader (input_bfd)->e_flags & E_M68HC11_XGATE_RAMOFFSET)
+          if ((e_flags & E_M68HC11_XGATE_RAMOFFSET)
              && (relocation >= 0x2000))
            relocation += 0xc000; /* HARDCODED RAM offset for XGATE.  */
 
@@ -1162,7 +1164,7 @@ elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 
           if (m68hc11_addr_is_banked (pinfo, relocation + rel->r_addend)
               && m68hc11_addr_is_banked (pinfo, insn_addr)
-              && phys_page != insn_page)
+              && phys_page != insn_page && !(e_flags & E_M68HC11_NO_BANK_WARNING))
             {
               const char * msg;
               char * buf;