Line 40... |
Line 40... |
static int fix_cortex_a8 = -1;
|
static int fix_cortex_a8 = -1;
|
static int no_enum_size_warning = 0;
|
static int no_enum_size_warning = 0;
|
static int no_wchar_size_warning = 0;
|
static int no_wchar_size_warning = 0;
|
static int pic_veneer = 0;
|
static int pic_veneer = 0;
|
static int merge_exidx_entries = -1;
|
static int merge_exidx_entries = -1;
|
|
static int fix_arm1176 = 1;
|
|
|
static void
|
static void
|
gld${EMULATION_NAME}_before_parse (void)
|
gld${EMULATION_NAME}_before_parse (void)
|
{
|
{
|
#ifndef TARGET_ /* I.e., if not generic. */
|
#ifndef TARGET_ /* I.e., if not generic. */
|
Line 462... |
Line 463... |
bfd_elf32_arm_set_target_relocs (link_info.output_bfd, &link_info,
|
bfd_elf32_arm_set_target_relocs (link_info.output_bfd, &link_info,
|
target1_is_rel,
|
target1_is_rel,
|
target2_type, fix_v4bx, use_blx,
|
target2_type, fix_v4bx, use_blx,
|
vfp11_denorm_fix, no_enum_size_warning,
|
vfp11_denorm_fix, no_enum_size_warning,
|
no_wchar_size_warning,
|
no_wchar_size_warning,
|
pic_veneer, fix_cortex_a8);
|
pic_veneer, fix_cortex_a8,
|
|
fix_arm1176);
|
|
|
stub_file = lang_add_input_file ("linker stubs",
|
stub_file = lang_add_input_file ("linker stubs",
|
lang_input_file_is_fake_enum,
|
lang_input_file_is_fake_enum,
|
NULL);
|
NULL);
|
stub_file->the_bfd = bfd_create ("linker stubs", link_info.output_bfd);
|
stub_file->the_bfd = bfd_create ("linker stubs", link_info.output_bfd);
|
Line 527... |
Line 529... |
#define OPTION_STUBGROUP_SIZE 312
|
#define OPTION_STUBGROUP_SIZE 312
|
#define OPTION_NO_WCHAR_SIZE_WARNING 313
|
#define OPTION_NO_WCHAR_SIZE_WARNING 313
|
#define OPTION_FIX_CORTEX_A8 314
|
#define OPTION_FIX_CORTEX_A8 314
|
#define OPTION_NO_FIX_CORTEX_A8 315
|
#define OPTION_NO_FIX_CORTEX_A8 315
|
#define OPTION_NO_MERGE_EXIDX_ENTRIES 316
|
#define OPTION_NO_MERGE_EXIDX_ENTRIES 316
|
|
#define OPTION_FIX_ARM1176 317
|
|
#define OPTION_NO_FIX_ARM1176 318
|
'
|
'
|
|
|
PARSE_AND_LIST_SHORTOPTS=p
|
PARSE_AND_LIST_SHORTOPTS=p
|
|
|
PARSE_AND_LIST_LONGOPTS='
|
PARSE_AND_LIST_LONGOPTS='
|
Line 549... |
Line 553... |
{ "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
|
{ "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
|
{ "no-wchar-size-warning", no_argument, NULL, OPTION_NO_WCHAR_SIZE_WARNING},
|
{ "no-wchar-size-warning", no_argument, NULL, OPTION_NO_WCHAR_SIZE_WARNING},
|
{ "fix-cortex-a8", no_argument, NULL, OPTION_FIX_CORTEX_A8 },
|
{ "fix-cortex-a8", no_argument, NULL, OPTION_FIX_CORTEX_A8 },
|
{ "no-fix-cortex-a8", no_argument, NULL, OPTION_NO_FIX_CORTEX_A8 },
|
{ "no-fix-cortex-a8", no_argument, NULL, OPTION_NO_FIX_CORTEX_A8 },
|
{ "no-merge-exidx-entries", no_argument, NULL, OPTION_NO_MERGE_EXIDX_ENTRIES },
|
{ "no-merge-exidx-entries", no_argument, NULL, OPTION_NO_MERGE_EXIDX_ENTRIES },
|
|
{ "fix-arm1176", no_argument, NULL, OPTION_FIX_ARM1176 },
|
|
{ "no-fix-arm1176", no_argument, NULL, OPTION_NO_FIX_ARM1176 },
|
'
|
'
|
|
|
PARSE_AND_LIST_OPTIONS='
|
PARSE_AND_LIST_OPTIONS='
|
fprintf (file, _(" --thumb-entry= Set the entry point to be Thumb symbol \n"));
|
fprintf (file, _(" --thumb-entry= Set the entry point to be Thumb symbol \n"));
|
fprintf (file, _(" --be8 Output BE8 format image\n"));
|
fprintf (file, _(" --be8 Output BE8 format image\n"));
|
Line 577... |
Line 583... |
after each stub section. Values of +/-1 indicate\n\
|
after each stub section. Values of +/-1 indicate\n\
|
the linker should choose suitable defaults.\n"
|
the linker should choose suitable defaults.\n"
|
));
|
));
|
fprintf (file, _(" --[no-]fix-cortex-a8 Disable/enable Cortex-A8 Thumb-2 branch erratum fix\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-merge-exidx-entries Disable merging exidx entries\n"));
|
|
fprintf (file, _(" --[no-]fix-arm1176 Disable/enable ARM1176 BLX immediate erratum fix\n"));
|
'
|
'
|
|
|
PARSE_AND_LIST_ARGS_CASES='
|
PARSE_AND_LIST_ARGS_CASES='
|
case '\'p\'':
|
case '\'p\'':
|
/* Only here for backwards compatibility. */
|
/* Only here for backwards compatibility. */
|
Line 660... |
Line 666... |
fix_cortex_a8 = 0;
|
fix_cortex_a8 = 0;
|
break;
|
break;
|
|
|
case OPTION_NO_MERGE_EXIDX_ENTRIES:
|
case OPTION_NO_MERGE_EXIDX_ENTRIES:
|
merge_exidx_entries = 0;
|
merge_exidx_entries = 0;
|
|
break;
|
|
|
|
case OPTION_FIX_ARM1176:
|
|
fix_arm1176 = 1;
|
|
break;
|
|
|
|
case OPTION_NO_FIX_ARM1176:
|
|
fix_arm1176 = 0;
|
|
break;
|
'
|
'
|
|
|
# We have our own before_allocation etc. functions, but they call
|
# We have our own before_allocation etc. functions, but they call
|
# the standard routines, so give them a different name.
|
# the standard routines, so give them a different name.
|
LDEMUL_BEFORE_ALLOCATION=arm_elf_before_allocation
|
LDEMUL_BEFORE_ALLOCATION=arm_elf_before_allocation
|