projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Prevent overflowing the selected_cpu_name buffer in the ARM assembler.
[deliverable/binutils-gdb.git]
/
bfd
/
coff-arm.c
diff --git
a/bfd/coff-arm.c
b/bfd/coff-arm.c
index 6b83dc7af7fd6c7c1efee572be0114e8be3a49ee..3007762fe9132511f749d85163a139666b624219 100644
(file)
--- a/
bfd/coff-arm.c
+++ b/
bfd/coff-arm.c
@@
-1,14
+1,12
@@
/* BFD back-end for ARM COFF files.
/* 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
- Free Software Foundation, Inc.
+ Copyright (C) 1990-2015 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version
2
of the License, or
+ the Free Software Foundation; either version
3
of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@
-18,10
+16,11
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
-#include "bfd.h"
#include "sysdep.h"
#include "sysdep.h"
+#include "bfd.h"
#include "libbfd.h"
#include "coff/arm.h"
#include "coff/internal.h"
#include "libbfd.h"
#include "coff/arm.h"
#include "coff/internal.h"
@@
-163,6
+162,19
@@
coff_arm_reloc (bfd *abfd,
/* These most certainly belong somewhere else. Just had to get rid of
the manifest constants in the code. */
/* These most certainly belong somewhere else. Just had to get rid of
the manifest constants in the code. */
+
+#ifdef ARM_WINCE
+
+#define ARM_26D 0
+#define ARM_32 1
+#define ARM_RVA32 2
+#define ARM_26 3
+#define ARM_THUMB12 4
+#define ARM_SECTION 14
+#define ARM_SECREL 15
+
+#else
+
#define ARM_8 0
#define ARM_16 1
#define ARM_32 2
#define ARM_8 0
#define ARM_16 1
#define ARM_32 2
@@
-179,20
+191,6
@@
coff_arm_reloc (bfd *abfd,
#define ARM_THUMB12 13
#define ARM_THUMB23 14
#define ARM_THUMB12 13
#define ARM_THUMB23 14
-#ifdef ARM_WINCE
-#undef ARM_32
-#undef ARM_RVA32
-#undef ARM_26
-#undef ARM_THUMB12
-#undef ARM_26D
-
-#define ARM_26D 0
-#define ARM_32 1
-#define ARM_RVA32 2
-#define ARM_26 3
-#define ARM_THUMB12 4
-#define ARM_SECTION 14
-#define ARM_SECREL 15
#endif
static bfd_reloc_status_type aoutarm_fix_pcrel_26_done
#endif
static bfd_reloc_status_type aoutarm_fix_pcrel_26_done
@@
-220,7
+218,7
@@
static reloc_howto_type aoutarm_std_reloc_howto[] =
complain_overflow_dont,
aoutarm_fix_pcrel_26_done,
"ARM_26D",
complain_overflow_dont,
aoutarm_fix_pcrel_26_done,
"ARM_26D",
- FALSE,
+ TRUE, /* partial_inplace. */
0x00ffffff,
0x0,
PCRELOFFSET),
0x00ffffff,
0x0,
PCRELOFFSET),
@@
-233,7
+231,7
@@
static reloc_howto_type aoutarm_std_reloc_howto[] =
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_32",
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_32",
- FALSE,
+ TRUE, /* partial_inplace. */
0xffffffff,
0xffffffff,
PCRELOFFSET),
0xffffffff,
0xffffffff,
PCRELOFFSET),
@@
-246,7
+244,7
@@
static reloc_howto_type aoutarm_std_reloc_howto[] =
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_RVA32",
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_RVA32",
- FALSE,
+ TRUE, /* partial_inplace. */
0xffffffff,
0xffffffff,
PCRELOFFSET),
0xffffffff,
0xffffffff,
PCRELOFFSET),
@@
-294,7
+292,7
@@
static reloc_howto_type aoutarm_std_reloc_howto[] =
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_SECTION",
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_SECTION",
- FALSE,
+ TRUE, /* partial_inplace. */
0x0000ffff,
0x0000ffff,
PCRELOFFSET),
0x0000ffff,
0x0000ffff,
PCRELOFFSET),
@@
-307,7
+305,7
@@
static reloc_howto_type aoutarm_std_reloc_howto[] =
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_SECREL",
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_SECREL",
- FALSE,
+ TRUE, /* partial_inplace. */
0xffffffff,
0xffffffff,
PCRELOFFSET),
0xffffffff,
0xffffffff,
PCRELOFFSET),
@@
-539,6
+537,31
@@
coff_arm_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
if (rel->r_type == ARM_RVA32)
*addendp -= pe_data (sec->output_section->owner)->pe_opthdr.ImageBase;
if (rel->r_type == ARM_RVA32)
*addendp -= pe_data (sec->output_section->owner)->pe_opthdr.ImageBase;
+#if defined COFF_WITH_PE && defined ARM_WINCE
+ if (rel->r_type == ARM_SECREL)
+ {
+ bfd_vma osect_vma;
+
+ if (h && (h->type == bfd_link_hash_defined
+ || h->type == bfd_link_hash_defweak))
+ osect_vma = h->root.u.def.section->output_section->vma;
+ else
+ {
+ int i;
+
+ /* Sigh, the only way to get the section to offset against
+ is to find it the hard way. */
+
+ for (sec = abfd->sections, i = 1; i < sym->n_scnum; i++)
+ sec = sec->next;
+
+ osect_vma = sec->output_section->vma;
+ }
+
+ *addendp -= osect_vma;
+ }
+#endif
+
return howto;
}
return howto;
}
@@
-574,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. */
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;
&& (symbol->flags & BSF_WEAK) == 0)
return output_bfd ? bfd_reloc_continue : bfd_reloc_undefined;
@@
-662,7
+685,7
@@
coff_thumb_pcrel_common (bfd *abfd,
}
/* If this is an undefined symbol, return error. */
}
/* 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;
&& (symbol->flags & BSF_WEAK) == 0)
return output_bfd ? bfd_reloc_continue : bfd_reloc_undefined;
@@
-792,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)
#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;
{
case 32:
code = BFD_RELOC_32;
@@
-808,6
+831,7
@@
coff_arm_reloc_type_lookup (bfd * abfd, bfd_reloc_code_real_type code)
ASTD (BFD_RELOC_RVA, ARM_RVA32);
ASTD (BFD_RELOC_ARM_PCREL_BRANCH, ARM_26);
ASTD (BFD_RELOC_THUMB_PCREL_BRANCH12, ARM_THUMB12);
ASTD (BFD_RELOC_RVA, ARM_RVA32);
ASTD (BFD_RELOC_ARM_PCREL_BRANCH, ARM_26);
ASTD (BFD_RELOC_THUMB_PCREL_BRANCH12, ARM_THUMB12);
+ ASTD (BFD_RELOC_32_SECREL, ARM_SECREL);
#else
ASTD (BFD_RELOC_8, ARM_8);
ASTD (BFD_RELOC_16, ARM_16);
#else
ASTD (BFD_RELOC_8, ARM_8);
ASTD (BFD_RELOC_16, ARM_16);
@@
-827,6
+851,23
@@
coff_arm_reloc_type_lookup (bfd * abfd, bfd_reloc_code_real_type code)
}
}
}
}
+static reloc_howto_type *
+coff_arm_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+ const char *r_name)
+{
+ unsigned int i;
+
+ for (i = 0;
+ i < (sizeof (aoutarm_std_reloc_howto)
+ / sizeof (aoutarm_std_reloc_howto[0]));
+ i++)
+ if (aoutarm_std_reloc_howto[i].name != NULL
+ && strcasecmp (aoutarm_std_reloc_howto[i].name, r_name) == 0)
+ return &aoutarm_std_reloc_howto[i];
+
+ return NULL;
+}
+
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER 2
#define COFF_PAGE_SIZE 0x1000
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER 2
#define COFF_PAGE_SIZE 0x1000
@@
-875,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);
struct coff_arm_link_hash_table * ret;
bfd_size_type amt = sizeof (struct coff_arm_link_hash_table);
- ret = bfd_malloc (amt);
+ ret = bfd_
z
malloc (amt);
if (ret == NULL)
return NULL;
if (ret == NULL)
return NULL;
@@
-888,28
+929,27
@@
coff_arm_link_hash_table_create (bfd * abfd)
return NULL;
}
return NULL;
}
- ret->thumb_glue_size = 0;
- ret->arm_glue_size = 0;
- ret->bfd_of_glue_owner = NULL;
-
return & ret->root.root;
}
return & ret->root.root;
}
-static
void
+static
bfd_boolean
arm_emit_base_file_entry (struct bfd_link_info *info,
bfd *output_bfd,
asection *input_section,
bfd_vma reloc_offset)
{
arm_emit_base_file_entry (struct bfd_link_info *info,
bfd *output_bfd,
asection *input_section,
bfd_vma reloc_offset)
{
- bfd_vma addr = reloc_offset
- - input_section->vma
- + input_section->output_offset
-
+ input_section->output_section->vma
;
+ bfd_vma addr =
(
reloc_offset
+
- input_section->vma
+
+ input_section->output_offset
+
+ input_section->output_section->vma)
;
if (coff_data (output_bfd)->pe)
addr -= pe_data (output_bfd)->pe_opthdr.ImageBase;
if (coff_data (output_bfd)->pe)
addr -= pe_data (output_bfd)->pe_opthdr.ImageBase;
- fwrite (& addr, 1, sizeof (addr), (FILE *) info->base_file);
+ if (fwrite (&addr, sizeof (addr), 1, (FILE *) info->base_file) == 1)
+ return TRUE;
+ bfd_set_error (bfd_error_system_call);
+ return FALSE;
}
\f
#ifndef ARM_WINCE
}
\f
#ifndef ARM_WINCE
@@
-1182,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
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
&& (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
&& (h->root.u.def.section->output_section
@@
-1209,12
+1249,14
@@
coff_arm_relocate_section (bfd *output_bfd,
generation of bl's instruction offset. */
addend -= 8;
#endif
generation of bl's instruction offset. */
addend -= 8;
#endif
- howto = &fake_arm26_reloc;
+ howto = &
fake_arm26_reloc;
}
#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. */
}
#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 && !bfd_link_relocatable (info))
+ addend -= 8;
#endif
/* If we are doing a relocatable link, then we can just ignore
#endif
/* If we are doing a relocatable link, then we can just ignore
@@
-1223,7
+1265,7
@@
coff_arm_relocate_section (bfd *output_bfd,
then we should ignore the symbol value. */
if (howto->pc_relative && howto->pcrel_offset)
{
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
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
@@
-1269,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... */
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))
{
&& ( h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak))
{
@@
-1283,8
+1325,8
@@
coff_arm_relocate_section (bfd *output_bfd,
if (howto->type == ARM_26)
{
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;
{
/* Arm code calling a Thumb function. */
unsigned long int tmp;
@@
-1335,10
+1377,10
@@
coff_arm_relocate_section (bfd *output_bfd,
bfd_put_32 (output_bfd, h_val | a2t3_func_addr_insn,
s->contents + my_offset + 8);
bfd_put_32 (output_bfd, h_val | a2t3_func_addr_insn,
s->contents + my_offset + 8);
- if (info->base_file
)
-
arm_emit_base_file_entry (info, output_bfd, s
,
- my_offset + 8);
-
+ if (info->base_file
+
&& !arm_emit_base_file_entry (info, output_bfd
,
+ s, my_offset + 8))
+ return FALSE;
}
BFD_ASSERT (my_offset <= globals->arm_glue_size);
}
BFD_ASSERT (my_offset <= globals->arm_glue_size);
@@
-1370,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)
{
/* 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;
{
/* Thumb code calling an ARM function. */
asection * s = 0;
@@
-1440,9
+1482,11
@@
coff_arm_relocate_section (bfd *output_bfd,
bfd_put_32 (output_bfd, h_val,
s->contents + my_offset + 16);
bfd_put_32 (output_bfd, h_val,
s->contents + my_offset + 16);
- if (info->base_file)
- arm_emit_base_file_entry (info, output_bfd, s,
- my_offset + 16);
+ if (info->base_file
+ && !arm_emit_base_file_entry (info,
+ output_bfd, s,
+ my_offset + 16))
+ return FALSE;
}
else
{
}
else
{
@@
-1517,7
+1561,7
@@
coff_arm_relocate_section (bfd *output_bfd,
+ sec->output_offset);
}
+ 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,
{
if (! ((*info->callbacks->undefined_symbol)
(info, h->root.root.string, input_bfd, input_section,
@@
-1526,19
+1570,19
@@
coff_arm_relocate_section (bfd *output_bfd,
}
}
}
}
- if (info->base_file)
- {
- /* Emit a reloc if the backend thinks it needs it. */
-
if (sym && pe_data(output_bfd)->in_reloc_p(output_bfd, howto)
)
-
arm_emit_base_file_entry (info, output_bfd, input_section,
- rel->r_vaddr);
- }
+ /* Emit a reloc if the backend thinks it needs it. */
+ if (info->base_file
+ && sym
+
&& pe_data(output_bfd)->in_reloc_p(output_bfd, howto
)
+
&& !
arm_emit_base_file_entry (info, output_bfd, input_section,
+ rel->r_vaddr))
+ return FALSE;
if (done)
rstat = bfd_reloc_ok;
#ifndef ARM_WINCE
/* Only perform this fix during the final link, not a relocatable link. */
if (done)
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
&& howto->type == ARM_THUMB23)
{
/* This is pretty much a copy of what the default
@@
-1654,7
+1698,7
@@
coff_arm_relocate_section (bfd *output_bfd,
}
#endif
else
}
#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,
rstat = bfd_reloc_ok;
else
rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
@@
-1662,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. */
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
&& (rel->r_type == ARM_32 || rel->r_type == ARM_RVA32))
{
/* Determine if we need to set the bottom bit of a relocated address
@@
-1670,8
+1714,8
@@
coff_arm_relocate_section (bfd *output_bfd,
int patchit = FALSE;
if (h != NULL
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;
}
{
patchit = TRUE;
}
@@
-1881,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;
/* 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);
free (tmp_name);
@@
-1924,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 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);
return TRUE;
globals = coff_arm_hash_table (info);
@@
-1938,12
+1982,11
@@
bfd_arm_get_bfd_for_interworking (bfd * abfd,
if (sec == NULL)
{
if (sec == NULL)
{
- flags =
SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_CODE | SEC_READONLY;
-
- sec = bfd_make_section
(abfd, ARM2THUMB_GLUE_SECTION_NAME);
-
+ flags =
(SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+ | SEC_CODE | SEC_READONLY);
+ sec = bfd_make_section
_with_flags (abfd, ARM2THUMB_GLUE_SECTION_NAME,
+ flags);
if (sec == NULL
if (sec == NULL
- || ! bfd_set_section_flags (abfd, sec, flags)
|| ! bfd_set_section_alignment (abfd, sec, 2))
return FALSE;
}
|| ! bfd_set_section_alignment (abfd, sec, 2))
return FALSE;
}
@@
-1952,12
+1995,12
@@
bfd_arm_get_bfd_for_interworking (bfd * abfd,
if (sec == NULL)
{
if (sec == NULL)
{
- flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_CODE | SEC_READONLY;
-
- sec = bfd_make_section (abfd, THUMB2ARM_GLUE_SECTION_NAME);
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+ | SEC_CODE | SEC_READONLY);
+ sec = bfd_make_section_with_flags (abfd, THUMB2ARM_GLUE_SECTION_NAME,
+ flags);
if (sec == NULL
if (sec == NULL
- || ! bfd_set_section_flags (abfd, sec, flags)
|| ! bfd_set_section_alignment (abfd, sec, 2))
return FALSE;
}
|| ! bfd_set_section_alignment (abfd, sec, 2))
return FALSE;
}
@@
-1978,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 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
return TRUE;
/* Here we have a bfd that is to be included on the link. We have a hook
@@
-2046,7
+2089,7
@@
bfd_arm_process_before_allocation (bfd * abfd,
the target of the call. If it is a thumb target, we
insert glue. */
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;
record_arm_to_thumb_glue (info, h);
break;
@@
-2060,7
+2103,7
@@
bfd_arm_process_before_allocation (bfd * abfd,
for it. This is not really a problem, since the link
is doomed anyway. */
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:
{
case C_EXT:
case C_STAT:
@@
-2085,6
+2128,7
@@
bfd_arm_process_before_allocation (bfd * abfd,
#endif /* ! defined (COFF_IMAGE_WITH_PE) */
#define coff_bfd_reloc_type_lookup coff_arm_reloc_type_lookup
#endif /* ! defined (COFF_IMAGE_WITH_PE) */
#define coff_bfd_reloc_type_lookup coff_arm_reloc_type_lookup
+#define coff_bfd_reloc_name_lookup coff_arm_reloc_name_lookup
#define coff_relocate_section coff_arm_relocate_section
#define coff_bfd_is_local_label_name coff_arm_is_local_label_name
#define coff_adjust_symndx coff_arm_adjust_symndx
#define coff_relocate_section coff_arm_relocate_section
#define coff_bfd_is_local_label_name coff_arm_is_local_label_name
#define coff_adjust_symndx coff_arm_adjust_symndx
@@
-2157,7
+2201,7
@@
coff_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
{
_bfd_error_handler
/* xgettext: c-format */
{
_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
ibfd, obfd,
APCS_26_FLAG (ibfd) ? 26 : 32,
APCS_26_FLAG (obfd) ? 26 : 32
@@
-2173,10
+2217,10
@@
coff_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
if (APCS_FLOAT_FLAG (ibfd))
/* xgettext: c-format */
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 */
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);
_bfd_error_handler (msg, ibfd, obfd);
@@
-2190,10
+2234,10
@@
coff_arm_merge_private_bfd_data (bfd * ibfd, bfd * obfd)
if (PIC_FLAG (ibfd))
/* xgettext: c-format */
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 */
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);
_bfd_error_handler (msg, ibfd, obfd);
bfd_set_error (bfd_error_wrong_format);
@@
-2397,7
+2441,9
@@
Warning: Clearing the interworking flag of %B because non-interworking code in %
/* Note: the definitions here of LOCAL_LABEL_PREFIX and USER_LABEL_PREIFX
*must* match the definitions in gcc/config/arm/{coff|semi|aout}.h. */
/* Note: the definitions here of LOCAL_LABEL_PREFIX and USER_LABEL_PREIFX
*must* match the definitions in gcc/config/arm/{coff|semi|aout}.h. */
+#ifndef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX ""
#define LOCAL_LABEL_PREFIX ""
+#endif
#ifndef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX "_"
#endif
#ifndef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX "_"
#endif
@@
-2475,16
+2521,20
@@
coff_arm_final_link_postscript (bfd * abfd ATTRIBUTE_UNUSED,
return bfd_arm_update_notes (abfd, ARM_NOTE_SECTION);
}
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
#include "coffcode.h"
#ifndef TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM arm
coff_litt
le_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
#endif
#ifndef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "coff-arm-little"
#endif
#ifndef TARGET_BIG_SYM
-#define TARGET_BIG_SYM arm
coff_big
_vec
+#define TARGET_BIG_SYM arm
_coff_be
_vec
#endif
#ifndef TARGET_BIG_NAME
#define TARGET_BIG_NAME "coff-arm-big"
#endif
#ifndef TARGET_BIG_NAME
#define TARGET_BIG_NAME "coff-arm-big"
This page took
0.031968 seconds
and
4
git commands to generate.