X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Fcoff-arm.c;h=1b2c23918ea44effd1c5f691001ae4cb632c127f;hb=b7f28d873c8bb26500e46828d34445cebfab7fd4;hp=3bf61e5b769e708b4d49208d22dcbd3d18c7d777;hpb=b1657152098cd6a327e6d308bae00573b8c33daf;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c index 3bf61e5b76..1b2c23918e 100644 --- a/bfd/coff-arm.c +++ b/bfd/coff-arm.c @@ -1,7 +1,5 @@ /* BFD back-end for ARM COFF files. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 - Free Software Foundation, Inc. + Copyright (C) 1990-2016 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -549,7 +547,6 @@ coff_arm_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED, osect_vma = h->root.u.def.section->output_section->vma; else { - asection *sec; int i; /* Sigh, the only way to get the section to offset against @@ -600,7 +597,7 @@ aoutarm_fix_pcrel_26 (bfd *abfd, bfd_reloc_status_type flag = bfd_reloc_ok; /* If this is an undefined symbol, return error. */ - if (symbol->section == &bfd_und_section + if (bfd_is_und_section (symbol->section) && (symbol->flags & BSF_WEAK) == 0) return output_bfd ? bfd_reloc_continue : bfd_reloc_undefined; @@ -688,7 +685,7 @@ coff_thumb_pcrel_common (bfd *abfd, } /* If this is an undefined symbol, return error. */ - if (symbol->section == &bfd_und_section + if (bfd_is_und_section (symbol->section) && (symbol->flags & BSF_WEAK) == 0) return output_bfd ? bfd_reloc_continue : bfd_reloc_undefined; @@ -818,7 +815,7 @@ coff_arm_reloc_type_lookup (bfd * abfd, bfd_reloc_code_real_type code) #define ASTD(i,j) case i: return aoutarm_std_reloc_howto + j if (code == BFD_RELOC_CTOR) - switch (bfd_get_arch_info (abfd)->bits_per_address) + switch (bfd_arch_bits_per_address (abfd)) { case 32: code = BFD_RELOC_32; @@ -919,7 +916,7 @@ coff_arm_link_hash_table_create (bfd * abfd) struct coff_arm_link_hash_table * ret; bfd_size_type amt = sizeof (struct coff_arm_link_hash_table); - ret = bfd_malloc (amt); + ret = bfd_zmalloc (amt); if (ret == NULL) return NULL; @@ -932,10 +929,6 @@ coff_arm_link_hash_table_create (bfd * abfd) return NULL; } - ret->thumb_glue_size = 0; - ret->arm_glue_size = 0; - ret->bfd_of_glue_owner = NULL; - return & ret->root.root; } @@ -1229,7 +1222,7 @@ coff_arm_relocate_section (bfd *output_bfd, relocations to be reflected in section's data. */ if (rel->r_type == ARM_26 && h != NULL - && info->relocatable + && bfd_link_relocatable (info) && (h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) && (h->root.u.def.section->output_section @@ -1262,7 +1255,7 @@ coff_arm_relocate_section (bfd *output_bfd, #ifdef ARM_WINCE /* MS ARM-CE makes the reloc relative to the opcode's pc, not the next opcode's pc, so is off by one. */ - if (howto->pc_relative && !info->relocatable) + if (howto->pc_relative && !bfd_link_relocatable (info)) addend -= 8; #endif @@ -1272,7 +1265,7 @@ coff_arm_relocate_section (bfd *output_bfd, then we should ignore the symbol value. */ if (howto->pc_relative && howto->pcrel_offset) { - if (info->relocatable) + if (bfd_link_relocatable (info)) continue; /* FIXME - it is not clear which targets need this next test and which do not. It is known that it is needed for the @@ -1318,7 +1311,7 @@ coff_arm_relocate_section (bfd *output_bfd, stub generation to the final linker pass. If we fail to verify that the name is defined, we'll try to build stubs for an undefined name... */ - if (! info->relocatable + if (! bfd_link_relocatable (info) && ( h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak)) { @@ -1332,8 +1325,8 @@ coff_arm_relocate_section (bfd *output_bfd, if (howto->type == ARM_26) { - if ( h->class == C_THUMBSTATFUNC - || h->class == C_THUMBEXTFUNC) + if ( h->symbol_class == C_THUMBSTATFUNC + || h->symbol_class == C_THUMBEXTFUNC) { /* Arm code calling a Thumb function. */ unsigned long int tmp; @@ -1419,9 +1412,9 @@ coff_arm_relocate_section (bfd *output_bfd, /* Note: We used to check for ARM_THUMB9 and ARM_THUMB12. */ else if (howto->type == ARM_THUMB23) { - if ( h->class == C_EXT - || h->class == C_STAT - || h->class == C_LABEL) + if ( h->symbol_class == C_EXT + || h->symbol_class == C_STAT + || h->symbol_class == C_LABEL) { /* Thumb code calling an ARM function. */ asection * s = 0; @@ -1568,7 +1561,7 @@ coff_arm_relocate_section (bfd *output_bfd, + sec->output_offset); } - else if (! info->relocatable) + else if (! bfd_link_relocatable (info)) { if (! ((*info->callbacks->undefined_symbol) (info, h->root.root.string, input_bfd, input_section, @@ -1589,7 +1582,7 @@ coff_arm_relocate_section (bfd *output_bfd, rstat = bfd_reloc_ok; #ifndef ARM_WINCE /* Only perform this fix during the final link, not a relocatable link. */ - else if (! info->relocatable + else if (! bfd_link_relocatable (info) && howto->type == ARM_THUMB23) { /* This is pretty much a copy of what the default @@ -1705,7 +1698,7 @@ coff_arm_relocate_section (bfd *output_bfd, } #endif else - if (info->relocatable && ! howto->partial_inplace) + if (bfd_link_relocatable (info) && ! howto->partial_inplace) rstat = bfd_reloc_ok; else rstat = _bfd_final_link_relocate (howto, input_bfd, input_section, @@ -1713,7 +1706,7 @@ coff_arm_relocate_section (bfd *output_bfd, rel->r_vaddr - input_section->vma, val, addend); /* Only perform this fix during the final link, not a relocatable link. */ - if (! info->relocatable + if (! bfd_link_relocatable (info) && (rel->r_type == ARM_32 || rel->r_type == ARM_RVA32)) { /* Determine if we need to set the bottom bit of a relocated address @@ -1721,8 +1714,8 @@ coff_arm_relocate_section (bfd *output_bfd, int patchit = FALSE; if (h != NULL - && ( h->class == C_THUMBSTATFUNC - || h->class == C_THUMBEXTFUNC)) + && ( h->symbol_class == C_THUMBSTATFUNC + || h->symbol_class == C_THUMBEXTFUNC)) { patchit = TRUE; } @@ -1932,7 +1925,7 @@ record_thumb_to_arm_glue (struct bfd_link_info * info, /* If we mark it 'thumb', the disassembler will do a better job. */ myh = (struct coff_link_hash_entry *) bh; - myh->class = C_THUMBEXTFUNC; + myh->symbol_class = C_THUMBEXTFUNC; free (tmp_name); @@ -1975,7 +1968,7 @@ bfd_arm_get_bfd_for_interworking (bfd * abfd, /* If we are only performing a partial link do not bother getting a bfd to hold the glue. */ - if (info->relocatable) + if (bfd_link_relocatable (info)) return TRUE; globals = coff_arm_hash_table (info); @@ -2028,7 +2021,7 @@ bfd_arm_process_before_allocation (bfd * abfd, /* If we are only performing a partial link do not bother to construct any glue. */ - if (info->relocatable) + if (bfd_link_relocatable (info)) return TRUE; /* Here we have a bfd that is to be included on the link. We have a hook @@ -2096,7 +2089,7 @@ bfd_arm_process_before_allocation (bfd * abfd, the target of the call. If it is a thumb target, we insert glue. */ - if (h->class == C_THUMBEXTFUNC) + if (h->symbol_class == C_THUMBEXTFUNC) record_arm_to_thumb_glue (info, h); break; @@ -2110,7 +2103,7 @@ bfd_arm_process_before_allocation (bfd * abfd, for it. This is not really a problem, since the link is doomed anyway. */ - switch (h->class) + switch (h->symbol_class) { case C_EXT: case C_STAT: @@ -2208,7 +2201,7 @@ coff_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd) { _bfd_error_handler /* xgettext: c-format */ - (_("ERROR: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"), + (_("error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"), ibfd, obfd, APCS_26_FLAG (ibfd) ? 26 : 32, APCS_26_FLAG (obfd) ? 26 : 32 @@ -2224,10 +2217,10 @@ coff_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd) if (APCS_FLOAT_FLAG (ibfd)) /* xgettext: c-format */ - msg = _("ERROR: %B passes floats in float registers, whereas %B passes them in integer registers"); + msg = _("error: %B passes floats in float registers, whereas %B passes them in integer registers"); else /* xgettext: c-format */ - msg = _("ERROR: %B passes floats in integer registers, whereas %B passes them in float registers"); + msg = _("error: %B passes floats in integer registers, whereas %B passes them in float registers"); _bfd_error_handler (msg, ibfd, obfd); @@ -2241,10 +2234,10 @@ coff_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd) if (PIC_FLAG (ibfd)) /* xgettext: c-format */ - msg = _("ERROR: %B is compiled as position independent code, whereas target %B is absolute position"); + msg = _("error: %B is compiled as position independent code, whereas target %B is absolute position"); else /* xgettext: c-format */ - msg = _("ERROR: %B is compiled as absolute position code, whereas target %B is position independent"); + msg = _("error: %B is compiled as absolute position code, whereas target %B is position independent"); _bfd_error_handler (msg, ibfd, obfd); bfd_set_error (bfd_error_wrong_format); @@ -2528,16 +2521,20 @@ coff_arm_final_link_postscript (bfd * abfd ATTRIBUTE_UNUSED, return bfd_arm_update_notes (abfd, ARM_NOTE_SECTION); } +#ifndef bfd_pe_print_pdata +#define bfd_pe_print_pdata NULL +#endif + #include "coffcode.h" #ifndef TARGET_LITTLE_SYM -#define TARGET_LITTLE_SYM armcoff_little_vec +#define TARGET_LITTLE_SYM arm_coff_le_vec #endif #ifndef TARGET_LITTLE_NAME #define TARGET_LITTLE_NAME "coff-arm-little" #endif #ifndef TARGET_BIG_SYM -#define TARGET_BIG_SYM armcoff_big_vec +#define TARGET_BIG_SYM arm_coff_be_vec #endif #ifndef TARGET_BIG_NAME #define TARGET_BIG_NAME "coff-arm-big"