OLD | NEW |
1 /* BFD back-end for Renesas H8/300 ELF binaries. | 1 /* BFD back-end for Renesas H8/300 ELF binaries. |
2 Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, | 2 Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, |
3 2007, 2009, 2010 Free Software Foundation, Inc. | 3 2007, 2008, 2009, 2010, 2012 Free Software Foundation, Inc. |
4 | 4 |
5 This file is part of BFD, the Binary File Descriptor library. | 5 This file is part of BFD, the Binary File Descriptor library. |
6 | 6 |
7 This program is free software; you can redistribute it and/or modify | 7 This program is free software; you can redistribute it and/or modify |
8 it under the terms of the GNU General Public License as published by | 8 it under the terms of the GNU General Public License as published by |
9 the Free Software Foundation; either version 3 of the License, or | 9 the Free Software Foundation; either version 3 of the License, or |
10 (at your option) any later version. | 10 (at your option) any later version. |
11 | 11 |
12 This program is distributed in the hope that it will be useful, | 12 This program is distributed in the hope that it will be useful, |
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 bfd_byte *, bfd_boolean, asymbol **); | 45 bfd_byte *, bfd_boolean, asymbol **); |
46 static bfd_reloc_status_type elf32_h8_final_link_relocate | 46 static bfd_reloc_status_type elf32_h8_final_link_relocate |
47 (unsigned long, bfd *, bfd *, asection *, | 47 (unsigned long, bfd *, bfd *, asection *, |
48 bfd_byte *, bfd_vma, bfd_vma, bfd_vma, | 48 bfd_byte *, bfd_vma, bfd_vma, bfd_vma, |
49 struct bfd_link_info *, asection *, int); | 49 struct bfd_link_info *, asection *, int); |
50 static bfd_boolean elf32_h8_relocate_section | 50 static bfd_boolean elf32_h8_relocate_section |
51 (bfd *, struct bfd_link_info *, bfd *, asection *, | 51 (bfd *, struct bfd_link_info *, bfd *, asection *, |
52 bfd_byte *, Elf_Internal_Rela *, | 52 bfd_byte *, Elf_Internal_Rela *, |
53 Elf_Internal_Sym *, asection **); | 53 Elf_Internal_Sym *, asection **); |
54 static bfd_reloc_status_type special | 54 static bfd_reloc_status_type special |
55 (bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **); | 55 (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); |
56 | 56 |
57 /* This does not include any relocation information, but should be | 57 /* This does not include any relocation information, but should be |
58 good enough for GDB or objdump to read the file. */ | 58 good enough for GDB or objdump to read the file. */ |
59 | 59 |
60 static reloc_howto_type h8_elf_howto_table[] = { | 60 static reloc_howto_type h8_elf_howto_table[] = |
| 61 { |
61 #define R_H8_NONE_X 0 | 62 #define R_H8_NONE_X 0 |
62 HOWTO (R_H8_NONE, /* type */ | 63 HOWTO (R_H8_NONE, /* type */ |
63 0, /* rightshift */ | 64 0, /* rightshift */ |
64 0, /* size (0 = byte, 1 = short, 2 = long) */ | 65 0, /* size (0 = byte, 1 = short, 2 = long) */ |
65 0, /* bitsize */ | 66 0, /* bitsize */ |
66 FALSE, /* pc_relative */ | 67 FALSE, /* pc_relative */ |
67 0, /* bitpos */ | 68 0, /* bitpos */ |
68 complain_overflow_dont,/* complain_on_overflow */ | 69 complain_overflow_dont,/* complain_on_overflow */ |
69 special, /* special_function */ | 70 special, /* special_function */ |
70 "R_H8_NONE", /* name */ | 71 "R_H8_NONE", /* name */ |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 } | 298 } |
298 | 299 |
299 /* Special handling for H8/300 relocs. | 300 /* Special handling for H8/300 relocs. |
300 We only come here for pcrel stuff and return normally if not an -r link. | 301 We only come here for pcrel stuff and return normally if not an -r link. |
301 When doing -r, we can't do any arithmetic for the pcrel stuff, because | 302 When doing -r, we can't do any arithmetic for the pcrel stuff, because |
302 we support relaxing on the H8/300 series chips. */ | 303 we support relaxing on the H8/300 series chips. */ |
303 static bfd_reloc_status_type | 304 static bfd_reloc_status_type |
304 special (bfd *abfd ATTRIBUTE_UNUSED, | 305 special (bfd *abfd ATTRIBUTE_UNUSED, |
305 arelent *reloc_entry ATTRIBUTE_UNUSED, | 306 arelent *reloc_entry ATTRIBUTE_UNUSED, |
306 asymbol *symbol ATTRIBUTE_UNUSED, | 307 asymbol *symbol ATTRIBUTE_UNUSED, |
307 » PTR data ATTRIBUTE_UNUSED, | 308 » void * data ATTRIBUTE_UNUSED, |
308 asection *input_section ATTRIBUTE_UNUSED, | 309 asection *input_section ATTRIBUTE_UNUSED, |
309 bfd *output_bfd, | 310 bfd *output_bfd, |
310 char **error_message ATTRIBUTE_UNUSED) | 311 char **error_message ATTRIBUTE_UNUSED) |
311 { | 312 { |
312 if (output_bfd == (bfd *) NULL) | 313 if (output_bfd == (bfd *) NULL) |
313 return bfd_reloc_continue; | 314 return bfd_reloc_continue; |
314 | 315 |
315 /* Adjust the reloc address to that in the output section. */ | 316 /* Adjust the reloc address to that in the output section. */ |
316 reloc_entry->address += input_section->output_offset; | 317 reloc_entry->address += input_section->output_offset; |
317 return bfd_reloc_ok; | 318 return bfd_reloc_ok; |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
450 sym = local_syms + r_symndx; | 451 sym = local_syms + r_symndx; |
451 sec = local_sections[r_symndx]; | 452 sec = local_sections[r_symndx]; |
452 relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); | 453 relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel); |
453 } | 454 } |
454 else | 455 else |
455 { | 456 { |
456 bfd_boolean unresolved_reloc, warned; | 457 bfd_boolean unresolved_reloc, warned; |
457 | 458 |
458 RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, | 459 RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel, |
459 r_symndx, symtab_hdr, sym_hashes, | 460 r_symndx, symtab_hdr, sym_hashes, |
error: old chunk mismatch |
None
OLD | NEW |