- unsigned char code;
- unsigned short offset;
- struct m68hc11_direct_relax *rinfo;
-
- prev_insn_branch = 0;
- offset = bfd_get_16 (abfd, contents + irel->r_offset);
- offset += value;
- if ((offset & 0xff00) != 0)
- {
- prev_insn_group = 0;
- continue;
- }
-
- if (prev_insn_group)
- {
- unsigned long old_sec_size = sec->_cooked_size;
-
- /* Note that we've changed the reldection contents, etc. */
- elf_section_data (sec)->relocs = internal_relocs;
- free_relocs = NULL;
-
- elf_section_data (sec)->this_hdr.contents = contents;
- free_contents = NULL;
-
- symtab_hdr->contents = (bfd_byte *) isymbuf;
- free_extsyms = NULL;
-
- m68hc11_relax_group (abfd, sec, contents, offset,
- prev_insn_group->r_offset,
- insn_group_value);
- irel = prev_insn_group;
- prev_insn_group = 0;
- irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
- R_M68HC11_NONE);
- if (sec->_cooked_size != old_sec_size)
- *again = TRUE;
- continue;
- }
-
- /* Get the opcode. */
- code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
- rinfo = find_relaxable_insn (code);
- if (rinfo == 0)
- {
- prev_insn_group = 0;
- continue;
- }
-
- /* Note that we've changed the reldection contents, etc. */
- elf_section_data (sec)->relocs = internal_relocs;
- free_relocs = NULL;
-
- elf_section_data (sec)->this_hdr.contents = contents;
- free_contents = NULL;
-
- symtab_hdr->contents = (bfd_byte *) isymbuf;
- free_extsyms = NULL;
-
- /* Fix the opcode. */
- /* printf ("A relaxable case : 0x%02x (%s)\n",
- code, rinfo->name); */
- bfd_put_8 (abfd, rinfo->direct_code,
- contents + irel->r_offset - 1);
-
- /* Delete one byte of data (upper byte of address). */
- m68hc11_elf_relax_delete_bytes (abfd, sec, irel->r_offset, 1);
-
- /* Fix the relocation's type. */
- irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
- R_M68HC11_8);
-
- /* That will change things, so, we should relax again. */
- *again = TRUE;
- }
+ unsigned char code;
+ unsigned short offset;
+ struct m68hc11_direct_relax *rinfo;
+
+ prev_insn_branch = 0;
+ offset = bfd_get_16 (abfd, contents + irel->r_offset);
+ offset += value;
+ if ((offset & 0xff00) != 0)
+ {
+ prev_insn_group = 0;
+ continue;
+ }
+
+ if (prev_insn_group)
+ {
+ unsigned long old_sec_size = sec->size;
+
+ /* Note that we've changed the relocation contents, etc. */
+ elf_section_data (sec)->relocs = internal_relocs;
+ free_relocs = NULL;
+
+ elf_section_data (sec)->this_hdr.contents = contents;
+ free_contents = NULL;
+
+ symtab_hdr->contents = (bfd_byte *) isymbuf;
+ free_extsyms = NULL;
+
+ m68hc11_relax_group (abfd, sec, contents, offset,
+ prev_insn_group->r_offset,
+ insn_group_value);
+ irel = prev_insn_group;
+ prev_insn_group = 0;
+ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
+ R_M68HC11_NONE);
+ if (sec->size != old_sec_size)
+ *again = TRUE;
+ continue;
+ }
+
+ /* Get the opcode. */
+ code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
+ rinfo = find_relaxable_insn (code);
+ if (rinfo == 0)
+ {
+ prev_insn_group = 0;
+ continue;
+ }
+
+ /* Note that we've changed the relocation contents, etc. */
+ elf_section_data (sec)->relocs = internal_relocs;
+ free_relocs = NULL;
+
+ elf_section_data (sec)->this_hdr.contents = contents;
+ free_contents = NULL;
+
+ symtab_hdr->contents = (bfd_byte *) isymbuf;
+ free_extsyms = NULL;
+
+ /* Fix the opcode. */
+ /* printf ("A relaxable case : 0x%02x (%s)\n",
+ code, rinfo->name); */
+ bfd_put_8 (abfd, rinfo->direct_code,
+ contents + irel->r_offset - 1);
+
+ /* Delete one byte of data (upper byte of address). */
+ m68hc11_elf_relax_delete_bytes (abfd, sec, irel->r_offset, 1);
+
+ /* Fix the relocation's type. */
+ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
+ R_M68HC11_8);
+
+ /* That will change things, so, we should relax again. */
+ *again = TRUE;
+ }