# This shell script emits a C file. -*- C -*-
-# Copyright (C) 1991-2018 Free Software Foundation, Inc.
+# Copyright (C) 1991-2020 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
# MA 02110-1301, USA.
#
-# This file is sourced from elf32.em, and defines extra arm-elf
+# This file is sourced from elf.em, and defines extra arm-elf
# specific routines.
#
test -z "$TARGET2_TYPE" && TARGET2_TYPE="rel"
#include "ldctor.h"
#include "elf/arm.h"
+#include "elf32-arm.h"
static struct elf32_arm_params params =
{
|| !bfd_elf32_arm_stm32l4xx_erratum_scan (is->the_bfd,
&link_info))
/* xgettext:c-format */
- einfo (_("Errors encountered processing file %s"), is->filename);
+ einfo (_("%P: errors encountered processing file %s\n"),
+ is->filename);
}
/* We have seen it all. Allocate it, and carry on. */
struct hook_stub_info info;
flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE
- | SEC_HAS_CONTENTS | SEC_RELOC | SEC_IN_MEMORY | SEC_KEEP);
+ | SEC_HAS_CONTENTS | SEC_RELOC | SEC_IN_MEMORY | SEC_KEEP
+ | SEC_LINKER_CREATED);
stub_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd,
stub_sec_name, flags);
if (stub_sec == NULL)
goto err_ret;
- bfd_set_section_alignment (stub_file->the_bfd, stub_sec, alignment_power);
+ bfd_set_section_alignment (stub_sec, alignment_power);
os = lang_output_section_get (output_section);
/* If we have changed sizes of the stub sections, then we need
to recalculate all the section offsets. This may mean we need to
add even more stubs. */
- gld${EMULATION_NAME}_map_segments (TRUE);
+ ldelf_map_segments (TRUE);
need_laying_out = -1;
}
& elf32_arm_add_stub_section,
& gldarm_layout_sections_again))
{
- einfo (_("%X%P: cannot size stub section: %E\n"));
+ einfo (_("%X%P: can not size stub section: %E\n"));
return;
}
}
}
if (need_laying_out != -1)
- gld${EMULATION_NAME}_map_segments (need_laying_out);
+ ldelf_map_segments (need_laying_out);
}
static void
/* Special procesing is required for a Thumb entry symbol. The
bottom bit of its address must be set. */
val = (h->u.def.value
- + bfd_get_section_vma (link_info.output_bfd,
- h->u.def.section->output_section)
+ + bfd_section_vma (h->u.def.section->output_section)
+ h->u.def.section->output_offset);
val |= 1;
}
else
einfo (_("%P: warning: cannot find thumb start symbol %s\n"),
- params.thumb_entry_symbol);
+ h->root.string);
}
/* This is a convenient point to tell BFD about target specific flags.
These will only be created if the output format is an arm format,
hence we do not support linking and changing output formats at the
same time. Use a link followed by objcopy to change output formats. */
- einfo (_("%F%X%P: error: Cannot change output format "
- "whilst linking ARM binaries.\n"));
+ einfo (_("%F%P: error: cannot change output format "
+ "whilst linking %s binaries\n"), "ARM");
return;
}
bfd_get_target (link_info.output_bfd));
if (params.in_implib_bfd == NULL)
- einfo (_("%F%s: Can't open: %E\n"), in_implib_filename);
+ einfo (_("%F%P: %s: can't open: %E\n"), in_implib_filename);
if (!bfd_check_format (params.in_implib_bfd, bfd_object))
- einfo (_("%F%s: Not a relocatable file: %E\n"), in_implib_filename);
+ einfo (_("%F%P: %s: not a relocatable file: %E\n"), in_implib_filename);
}
bfd_elf32_arm_set_target_params (link_info.output_bfd, &link_info, ¶ms);
bfd_get_arch (link_info.output_bfd),
bfd_get_mach (link_info.output_bfd)))
{
- einfo (_("%X%P: can not create BFD %E\n"));
+ einfo (_("%F%P: can not create BFD: %E\n"));
return;
}
bfd_elf32_arm_get_bfd_for_interworking (stub_file->the_bfd, &link_info);
}
-/* Avoid processing the fake stub_file in vercheck, stat_needed and
- check_needed routines. */
-
-static void (*real_func) (lang_input_statement_type *);
-
-static void arm_for_each_input_file_wrapper (lang_input_statement_type *l)
-{
- if (l != stub_file)
- (*real_func) (l);
-}
-
-static void
-arm_lang_for_each_input_file (void (*func) (lang_input_statement_type *))
-{
- real_func = func;
- lang_for_each_input_file (&arm_for_each_input_file_wrapper);
-}
-
-#define lang_for_each_input_file arm_lang_for_each_input_file
-
EOF
# Define some shell vars to insert bits of code into the standard elf
" remain stable\n"));
fprintf (file, _("\
--stub-group-size=N Maximum size of a group of input sections that\n\
- can be handled by one stub section. A negative\n\
- value locates all stubs after their branches\n\
- (with a group size of -N), while a positive\n\
- value allows two groups of input sections, one\n\
- before, and one after each stub section.\n\
- Values of +/-1 indicate the linker should\n\
- choose suitable defaults.\n"));
+ can be handled by one stub section. A negative\n\
+ value locates all stubs after their branches\n\
+ (with a group size of -N), while a positive\n\
+ value allows two groups of input sections, one\n\
+ before, and one after each stub section.\n\
+ Values of +/-1 indicate the linker should\n\
+ choose suitable defaults.\n"));
fprintf (file, _(" --[no-]fix-cortex-a8 Disable/enable Cortex-A8 Thumb-2 branch erratum fix\n"));
fprintf (file, _(" --no-merge-exidx-entries Disable merging exidx entries\n"));
fprintf (file, _(" --[no-]fix-arm1176 Disable/enable ARM1176 BLX immediate erratum fix\n"));
else if (strcmp (optarg, "vector") == 0)
params.vfp11_denorm_fix = BFD_ARM_VFP11_FIX_VECTOR;
else
- einfo (_("Unrecognized VFP11 fix type '\''%s'\''.\n"), optarg);
+ einfo (_("%P: unrecognized VFP11 fix type '\''%s'\''\n"), optarg);
break;
case OPTION_STM32L4XX_FIX:
else if (strcmp (optarg, "all") == 0)
params.stm32l4xx_fix = BFD_ARM_STM32L4XX_FIX_ALL;
else
- einfo (_("Unrecognized STM32L4XX fix type '\''%s'\''.\n"), optarg);
+ einfo (_("%P: unrecognized STM32L4XX fix type '\''%s'\''\n"), optarg);
break;
case OPTION_NO_ENUM_SIZE_WARNING:
group_size = bfd_scan_vma (optarg, &end, 0);
if (*end)
- einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
+ einfo (_("%F%P: invalid number `%s'\''\n"), optarg);
}
break;