| OLD | NEW |
| 1 /* BFD back-end for TMS320C30 a.out binaries. | 1 /* BFD back-end for TMS320C30 a.out binaries. |
| 2 Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, | 2 Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009, |
| 3 2010, 2011 | 3 2010, 2011, 2012 |
| 4 Free Software Foundation, Inc. | 4 Free Software Foundation, Inc. |
| 5 Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au) | 5 Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au) |
| 6 | 6 |
| 7 This file is part of BFD, the Binary File Descriptor library. | 7 This file is part of BFD, the Binary File Descriptor library. |
| 8 | 8 |
| 9 This program is free software; you can redistribute it and/or modify | 9 This program is free software; you can redistribute it and/or modify |
| 10 it under the terms of the GNU General Public License as published by | 10 it under the terms of the GNU General Public License as published by |
| 11 the Free Software Foundation; either version 3 of the License, or | 11 the Free Software Foundation; either version 3 of the License, or |
| 12 (at your option) any later version. | 12 (at your option) any later version. |
| 13 | 13 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 arelent *reloc_entry, | 182 arelent *reloc_entry, |
| 183 asymbol *symbol, | 183 asymbol *symbol, |
| 184 void * data, | 184 void * data, |
| 185 asection *input_section ATTRIBUTE_UNUSED, | 185 asection *input_section ATTRIBUTE_UNUSED, |
| 186 bfd *output_bfd, | 186 bfd *output_bfd, |
| 187 char **error_message ATTRIBUTE_UNUSED) | 187 char **error_message ATTRIBUTE_UNUSED) |
| 188 { | 188 { |
| 189 bfd_vma relocation; | 189 bfd_vma relocation; |
| 190 | 190 |
| 191 /* Make sure that the symbol's section is defined. */ | 191 /* Make sure that the symbol's section is defined. */ |
| 192 if (symbol->section == &bfd_und_section && (symbol->flags & BSF_WEAK) == 0) | 192 if (bfd_is_und_section (symbol->section) && (symbol->flags & BSF_WEAK) == 0) |
| 193 return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined; | 193 return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined; |
| 194 /* Get the size of the input section and turn it into the TMS320C30 | 194 /* Get the size of the input section and turn it into the TMS320C30 |
| 195 32-bit address format. */ | 195 32-bit address format. */ |
| 196 relocation = (symbol->section->vma >> 2); | 196 relocation = (symbol->section->vma >> 2); |
| 197 relocation += bfd_get_16 (abfd, (bfd_byte *) data + reloc_entry->address); | 197 relocation += bfd_get_16 (abfd, (bfd_byte *) data + reloc_entry->address); |
| 198 bfd_put_16 (abfd, relocation, (bfd_byte *) data + reloc_entry->address); | 198 bfd_put_16 (abfd, relocation, (bfd_byte *) data + reloc_entry->address); |
| 199 return bfd_reloc_ok; | 199 return bfd_reloc_ok; |
| 200 } | 200 } |
| 201 | 201 |
| 202 /* This function does the same thing as tic30_aout_fix_16 except for 32 | 202 /* This function does the same thing as tic30_aout_fix_16 except for 32 |
| 203 bit relocations. */ | 203 bit relocations. */ |
| 204 | 204 |
| 205 static bfd_reloc_status_type | 205 static bfd_reloc_status_type |
| 206 tic30_aout_fix_32 (bfd *abfd, | 206 tic30_aout_fix_32 (bfd *abfd, |
| 207 arelent *reloc_entry, | 207 arelent *reloc_entry, |
| 208 asymbol *symbol, | 208 asymbol *symbol, |
| 209 void * data, | 209 void * data, |
| 210 asection *input_section ATTRIBUTE_UNUSED, | 210 asection *input_section ATTRIBUTE_UNUSED, |
| 211 bfd *output_bfd, | 211 bfd *output_bfd, |
| 212 char **error_message ATTRIBUTE_UNUSED) | 212 char **error_message ATTRIBUTE_UNUSED) |
| 213 { | 213 { |
| 214 bfd_vma relocation; | 214 bfd_vma relocation; |
| 215 | 215 |
| 216 /* Make sure that the symbol's section is defined. */ | 216 /* Make sure that the symbol's section is defined. */ |
| 217 if (symbol->section == &bfd_und_section && (symbol->flags & BSF_WEAK) == 0) | 217 if (bfd_is_und_section (symbol->section) && (symbol->flags & BSF_WEAK) == 0) |
| 218 return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined; | 218 return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined; |
| 219 /* Get the size of the input section and turn it into the TMS320C30 | 219 /* Get the size of the input section and turn it into the TMS320C30 |
| 220 32-bit address format. */ | 220 32-bit address format. */ |
| 221 relocation = (symbol->section->vma >> 2); | 221 relocation = (symbol->section->vma >> 2); |
| 222 relocation += bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); | 222 relocation += bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); |
| 223 bfd_put_32 (abfd, relocation, (bfd_byte *) data + reloc_entry->address); | 223 bfd_put_32 (abfd, relocation, (bfd_byte *) data + reloc_entry->address); |
| 224 return bfd_reloc_ok; | 224 return bfd_reloc_ok; |
| 225 } | 225 } |
| 226 | 226 |
| 227 /* This table lists the relocation types for the TMS320C30. There are | 227 /* This table lists the relocation types for the TMS320C30. There are |
| (...skipping 877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1105 BFD_JUMP_TABLE_RELOCS (MY), | 1105 BFD_JUMP_TABLE_RELOCS (MY), |
| 1106 BFD_JUMP_TABLE_WRITE (MY), | 1106 BFD_JUMP_TABLE_WRITE (MY), |
| 1107 BFD_JUMP_TABLE_LINK (MY), | 1107 BFD_JUMP_TABLE_LINK (MY), |
| 1108 BFD_JUMP_TABLE_DYNAMIC (MY), | 1108 BFD_JUMP_TABLE_DYNAMIC (MY), |
| 1109 | 1109 |
| 1110 NULL, | 1110 NULL, |
| 1111 | 1111 |
| 1112 MY_backend_data | 1112 MY_backend_data |
| 1113 }; | 1113 }; |
| 1114 #endif /* MY_BFD_TARGET */ | 1114 #endif /* MY_BFD_TARGET */ |
| OLD | NEW |