mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 14:49:38 +08:00
* arm.cc (Target_arm::Target_arm): Remove initialisation of
may_use_blx_. (Target_arm::may_use_blx): Remove method. (Target_arm::set_may_use_blx): Likewise. (Target_arm::may_use_v4t_interworking): New method. (Target_arm::may_use_v5t_interworking): Likewise. (Target_arm::may_use_blx_): Remove member variable. (Arm_relocate_functions::arm_branch_common): Check for v5T interworking. (Arm_relocate_functions::thumb_branch_common): Likewise. (Reloc_stub::stub_type_for_reloc): Likewise. (Target_arm::do_finalize_sections): Correct interworking checks. * testsuite/Makefile.am: Add new tests. * testsuite/Makefile.in: Regenerate. * testsuite/arm_farcall_arm_arm.s: New test. * testsuite/arm_farcall_arm_arm.sh: Likewise. * testsuite/arm_farcall_arm_thumb.s: Likewise. * testsuite/arm_farcall_arm_thumb.sh: Likewise. * testsuite/arm_farcall_thumb_arm.s: Likewise. * testsuite/arm_farcall_thumb_arm.sh: Likewise. * testsuite/arm_farcall_thumb_thumb.s: Likewise. * testsuite/arm_farcall_thumb_thumb.sh: Likewise.
This commit is contained in:
@ -1,3 +1,28 @@
|
|||||||
|
2011-11-02 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||||
|
|
||||||
|
* arm.cc (Target_arm::Target_arm): Remove initialisation of
|
||||||
|
may_use_blx_.
|
||||||
|
(Target_arm::may_use_blx): Remove method.
|
||||||
|
(Target_arm::set_may_use_blx): Likewise.
|
||||||
|
(Target_arm::may_use_v4t_interworking): New method.
|
||||||
|
(Target_arm::may_use_v5t_interworking): Likewise.
|
||||||
|
(Target_arm::may_use_blx_): Remove member variable.
|
||||||
|
(Arm_relocate_functions::arm_branch_common): Check for v5T
|
||||||
|
interworking.
|
||||||
|
(Arm_relocate_functions::thumb_branch_common): Likewise.
|
||||||
|
(Reloc_stub::stub_type_for_reloc): Likewise.
|
||||||
|
(Target_arm::do_finalize_sections): Correct interworking checks.
|
||||||
|
* testsuite/Makefile.am: Add new tests.
|
||||||
|
* testsuite/Makefile.in: Regenerate.
|
||||||
|
* testsuite/arm_farcall_arm_arm.s: New test.
|
||||||
|
* testsuite/arm_farcall_arm_arm.sh: Likewise.
|
||||||
|
* testsuite/arm_farcall_arm_thumb.s: Likewise.
|
||||||
|
* testsuite/arm_farcall_arm_thumb.sh: Likewise.
|
||||||
|
* testsuite/arm_farcall_thumb_arm.s: Likewise.
|
||||||
|
* testsuite/arm_farcall_thumb_arm.sh: Likewise.
|
||||||
|
* testsuite/arm_farcall_thumb_thumb.s: Likewise.
|
||||||
|
* testsuite/arm_farcall_thumb_thumb.sh: Likewise.
|
||||||
|
|
||||||
2011-10-31 Cary Coutant <ccoutant@google.com>
|
2011-10-31 Cary Coutant <ccoutant@google.com>
|
||||||
|
|
||||||
PR gold/13023
|
PR gold/13023
|
||||||
|
53
gold/arm.cc
53
gold/arm.cc
@ -2177,21 +2177,11 @@ class Target_arm : public Sized_target<32, big_endian>
|
|||||||
copy_relocs_(elfcpp::R_ARM_COPY), dynbss_(NULL),
|
copy_relocs_(elfcpp::R_ARM_COPY), dynbss_(NULL),
|
||||||
got_mod_index_offset_(-1U), tls_base_symbol_defined_(false),
|
got_mod_index_offset_(-1U), tls_base_symbol_defined_(false),
|
||||||
stub_tables_(), stub_factory_(Stub_factory::get_instance()),
|
stub_tables_(), stub_factory_(Stub_factory::get_instance()),
|
||||||
may_use_blx_(false), should_force_pic_veneer_(false),
|
should_force_pic_veneer_(false),
|
||||||
arm_input_section_map_(), attributes_section_data_(NULL),
|
arm_input_section_map_(), attributes_section_data_(NULL),
|
||||||
fix_cortex_a8_(false), cortex_a8_relocs_info_()
|
fix_cortex_a8_(false), cortex_a8_relocs_info_()
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
// Whether we can use BLX.
|
|
||||||
bool
|
|
||||||
may_use_blx() const
|
|
||||||
{ return this->may_use_blx_; }
|
|
||||||
|
|
||||||
// Set use-BLX flag.
|
|
||||||
void
|
|
||||||
set_may_use_blx(bool value)
|
|
||||||
{ this->may_use_blx_ = value; }
|
|
||||||
|
|
||||||
// Whether we force PCI branch veneers.
|
// Whether we force PCI branch veneers.
|
||||||
bool
|
bool
|
||||||
should_force_pic_veneer() const
|
should_force_pic_veneer() const
|
||||||
@ -2254,6 +2244,29 @@ class Target_arm : public Sized_target<32, big_endian>
|
|||||||
|| arch == elfcpp::TAG_CPU_ARCH_V7E_M);
|
|| arch == elfcpp::TAG_CPU_ARCH_V7E_M);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Whether we have v4T interworking instructions available.
|
||||||
|
bool
|
||||||
|
may_use_v4t_interworking() const
|
||||||
|
{
|
||||||
|
Object_attribute* attr =
|
||||||
|
this->get_aeabi_object_attribute(elfcpp::Tag_CPU_arch);
|
||||||
|
int arch = attr->int_value();
|
||||||
|
return (arch != elfcpp::TAG_CPU_ARCH_PRE_V4
|
||||||
|
&& arch != elfcpp::TAG_CPU_ARCH_V4);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Whether we have v5T interworking instructions available.
|
||||||
|
bool
|
||||||
|
may_use_v5t_interworking() const
|
||||||
|
{
|
||||||
|
Object_attribute* attr =
|
||||||
|
this->get_aeabi_object_attribute(elfcpp::Tag_CPU_arch);
|
||||||
|
int arch = attr->int_value();
|
||||||
|
return (arch != elfcpp::TAG_CPU_ARCH_PRE_V4
|
||||||
|
&& arch != elfcpp::TAG_CPU_ARCH_V4
|
||||||
|
&& arch != elfcpp::TAG_CPU_ARCH_V4T);
|
||||||
|
}
|
||||||
|
|
||||||
// Process the relocations to determine unreferenced sections for
|
// Process the relocations to determine unreferenced sections for
|
||||||
// garbage collection.
|
// garbage collection.
|
||||||
void
|
void
|
||||||
@ -2922,8 +2935,6 @@ class Target_arm : public Sized_target<32, big_endian>
|
|||||||
Stub_table_list stub_tables_;
|
Stub_table_list stub_tables_;
|
||||||
// Stub factory.
|
// Stub factory.
|
||||||
const Stub_factory &stub_factory_;
|
const Stub_factory &stub_factory_;
|
||||||
// Whether we can use BLX.
|
|
||||||
bool may_use_blx_;
|
|
||||||
// Whether we force PIC branch veneers.
|
// Whether we force PIC branch veneers.
|
||||||
bool should_force_pic_veneer_;
|
bool should_force_pic_veneer_;
|
||||||
// Map for locating Arm_input_sections.
|
// Map for locating Arm_input_sections.
|
||||||
@ -3950,7 +3961,7 @@ Arm_relocate_functions<big_endian>::arm_branch_common(
|
|||||||
|
|
||||||
// We need a stub if the branch offset is too large or if we need
|
// We need a stub if the branch offset is too large or if we need
|
||||||
// to switch mode.
|
// to switch mode.
|
||||||
bool may_use_blx = arm_target->may_use_blx();
|
bool may_use_blx = arm_target->may_use_v5t_interworking();
|
||||||
Reloc_stub* stub = NULL;
|
Reloc_stub* stub = NULL;
|
||||||
|
|
||||||
if (!parameters->options().relocatable()
|
if (!parameters->options().relocatable()
|
||||||
@ -4081,7 +4092,7 @@ Arm_relocate_functions<big_endian>::thumb_branch_common(
|
|||||||
Arm_address branch_target = psymval->value(object, addend);
|
Arm_address branch_target = psymval->value(object, addend);
|
||||||
|
|
||||||
// For BLX, bit 1 of target address comes from bit 1 of base address.
|
// For BLX, bit 1 of target address comes from bit 1 of base address.
|
||||||
bool may_use_blx = arm_target->may_use_blx();
|
bool may_use_blx = arm_target->may_use_v5t_interworking();
|
||||||
if (thumb_bit == 0 && may_use_blx)
|
if (thumb_bit == 0 && may_use_blx)
|
||||||
branch_target = utils::bit_select(branch_target, address, 0x2);
|
branch_target = utils::bit_select(branch_target, address, 0x2);
|
||||||
|
|
||||||
@ -4464,7 +4475,7 @@ Reloc_stub::stub_type_for_reloc(
|
|||||||
{
|
{
|
||||||
const Target_arm<true>* big_endian_target =
|
const Target_arm<true>* big_endian_target =
|
||||||
Target_arm<true>::default_target();
|
Target_arm<true>::default_target();
|
||||||
may_use_blx = big_endian_target->may_use_blx();
|
may_use_blx = big_endian_target->may_use_v5t_interworking();
|
||||||
should_force_pic_veneer = big_endian_target->should_force_pic_veneer();
|
should_force_pic_veneer = big_endian_target->should_force_pic_veneer();
|
||||||
thumb2 = big_endian_target->using_thumb2();
|
thumb2 = big_endian_target->using_thumb2();
|
||||||
thumb_only = big_endian_target->using_thumb_only();
|
thumb_only = big_endian_target->using_thumb_only();
|
||||||
@ -4473,7 +4484,7 @@ Reloc_stub::stub_type_for_reloc(
|
|||||||
{
|
{
|
||||||
const Target_arm<false>* little_endian_target =
|
const Target_arm<false>* little_endian_target =
|
||||||
Target_arm<false>::default_target();
|
Target_arm<false>::default_target();
|
||||||
may_use_blx = little_endian_target->may_use_blx();
|
may_use_blx = little_endian_target->may_use_v5t_interworking();
|
||||||
should_force_pic_veneer = little_endian_target->should_force_pic_veneer();
|
should_force_pic_veneer = little_endian_target->should_force_pic_veneer();
|
||||||
thumb2 = little_endian_target->using_thumb2();
|
thumb2 = little_endian_target->using_thumb2();
|
||||||
thumb_only = little_endian_target->using_thumb_only();
|
thumb_only = little_endian_target->using_thumb_only();
|
||||||
@ -8604,12 +8615,8 @@ Target_arm<big_endian>::do_finalize_sections(
|
|||||||
if (this->attributes_section_data_ == NULL)
|
if (this->attributes_section_data_ == NULL)
|
||||||
this->attributes_section_data_ = new Attributes_section_data(NULL, 0);
|
this->attributes_section_data_ = new Attributes_section_data(NULL, 0);
|
||||||
|
|
||||||
// Check BLX use.
|
|
||||||
const Object_attribute* cpu_arch_attr =
|
const Object_attribute* cpu_arch_attr =
|
||||||
this->get_aeabi_object_attribute(elfcpp::Tag_CPU_arch);
|
this->get_aeabi_object_attribute(elfcpp::Tag_CPU_arch);
|
||||||
if (cpu_arch_attr->int_value() > elfcpp::TAG_CPU_ARCH_V4)
|
|
||||||
this->set_may_use_blx(true);
|
|
||||||
|
|
||||||
// Check if we need to use Cortex-A8 workaround.
|
// Check if we need to use Cortex-A8 workaround.
|
||||||
if (parameters->options().user_set_fix_cortex_a8())
|
if (parameters->options().user_set_fix_cortex_a8())
|
||||||
this->fix_cortex_a8_ = parameters->options().fix_cortex_a8();
|
this->fix_cortex_a8_ = parameters->options().fix_cortex_a8();
|
||||||
@ -8630,7 +8637,7 @@ Target_arm<big_endian>::do_finalize_sections(
|
|||||||
// The V4BX interworking stub contains BX instruction,
|
// The V4BX interworking stub contains BX instruction,
|
||||||
// which is not specified for some profiles.
|
// which is not specified for some profiles.
|
||||||
if (this->fix_v4bx() == General_options::FIX_V4BX_INTERWORKING
|
if (this->fix_v4bx() == General_options::FIX_V4BX_INTERWORKING
|
||||||
&& !this->may_use_blx())
|
&& !this->may_use_v4t_interworking())
|
||||||
gold_error(_("unable to provide V4BX reloc interworking fix up; "
|
gold_error(_("unable to provide V4BX reloc interworking fix up; "
|
||||||
"the target profile does not support BX instruction"));
|
"the target profile does not support BX instruction"));
|
||||||
|
|
||||||
@ -11797,7 +11804,7 @@ Target_arm<big_endian>::scan_span_for_cortex_a8_erratum(
|
|||||||
// an ARM instruction. If we were not making a stub,
|
// an ARM instruction. If we were not making a stub,
|
||||||
// the BL would have been converted to a BLX. Use the
|
// the BL would have been converted to a BLX. Use the
|
||||||
// BLX stub instead in that case.
|
// BLX stub instead in that case.
|
||||||
if (this->may_use_blx() && force_target_arm
|
if (this->may_use_v5t_interworking() && force_target_arm
|
||||||
&& stub_type == arm_stub_a8_veneer_bl)
|
&& stub_type == arm_stub_a8_veneer_bl)
|
||||||
{
|
{
|
||||||
stub_type = arm_stub_a8_veneer_blx;
|
stub_type = arm_stub_a8_veneer_blx;
|
||||||
|
@ -2471,6 +2471,120 @@ arm_unaligned_reloc.o: arm_unaligned_reloc.s
|
|||||||
|
|
||||||
MOSTLYCLEANFILES += arm_unaligned_reloc
|
MOSTLYCLEANFILES += arm_unaligned_reloc
|
||||||
|
|
||||||
|
# Check ARM to ARM farcall veneers
|
||||||
|
|
||||||
|
check_SCRIPTS += arm_farcall_arm_arm.sh
|
||||||
|
check_DATA += arm_farcall_arm_arm.stdout
|
||||||
|
|
||||||
|
arm_farcall_arm_arm.stdout: arm_farcall_arm_arm
|
||||||
|
$(TEST_OBJDUMP) -d $< > $@
|
||||||
|
|
||||||
|
arm_farcall_arm_arm: arm_farcall_arm_arm.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001020 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_arm_arm.o: arm_farcall_arm_arm.s
|
||||||
|
$(TEST_AS) -o $@ $<
|
||||||
|
|
||||||
|
MOSTLYCLEANFILES += arm_farcall_arm_arm
|
||||||
|
|
||||||
|
# Check ARM to Thumb farcall veneers
|
||||||
|
|
||||||
|
check_SCRIPTS += arm_farcall_arm_thumb.sh
|
||||||
|
check_DATA += arm_farcall_arm_thumb.stdout arm_farcall_arm_thumb_5t.stdout
|
||||||
|
|
||||||
|
arm_farcall_arm_thumb.stdout: arm_farcall_arm_thumb
|
||||||
|
$(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
arm_farcall_arm_thumb: arm_farcall_arm_thumb.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_arm_thumb.o: arm_farcall_arm_thumb.s
|
||||||
|
$(TEST_AS) -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_arm_thumb_5t.stdout: arm_farcall_arm_thumb_5t
|
||||||
|
$(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
arm_farcall_arm_thumb_5t: arm_farcall_arm_thumb_5t.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_arm_thumb_5t.o: arm_farcall_arm_thumb.s
|
||||||
|
$(TEST_AS) -march=armv5t -o $@ $<
|
||||||
|
|
||||||
|
MOSTLYCLEANFILES += arm_farcall_arm_thumb arm_farcall_arm_thumb_5t
|
||||||
|
|
||||||
|
# Check Thumb to Thumb farcall veneers
|
||||||
|
|
||||||
|
check_SCRIPTS += arm_farcall_thumb_thumb.sh
|
||||||
|
check_DATA += arm_farcall_thumb_thumb.stdout \
|
||||||
|
arm_farcall_thumb_thumb_5t.stdout \
|
||||||
|
arm_farcall_thumb_thumb_7m.stdout \
|
||||||
|
arm_farcall_thumb_thumb_6m.stdout
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb.stdout: arm_farcall_thumb_thumb
|
||||||
|
$(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb: arm_farcall_thumb_thumb.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb.o: arm_farcall_thumb_thumb.s
|
||||||
|
$(TEST_AS) -march=armv4t -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_5t.stdout: arm_farcall_thumb_thumb_5t
|
||||||
|
$(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_5t: arm_farcall_thumb_thumb_5t.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_5t.o: arm_farcall_thumb_thumb.s
|
||||||
|
$(TEST_AS) -march=armv5t -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_7m.stdout: arm_farcall_thumb_thumb_7m
|
||||||
|
$(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_7m: arm_farcall_thumb_thumb_7m.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_7m.o: arm_farcall_thumb_thumb.s
|
||||||
|
$(TEST_AS) -march=armv7-m -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_6m.stdout: arm_farcall_thumb_thumb_6m
|
||||||
|
$(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_6m: arm_farcall_thumb_thumb_6m.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_thumb_6m.o: arm_farcall_thumb_thumb.s
|
||||||
|
$(TEST_AS) -march=armv6-m -o $@ $<
|
||||||
|
|
||||||
|
MOSTLYCLEANFILES += arm_farcall_thumb_thumb arm_farcall_thumb_thumb_5t \
|
||||||
|
arm_farcall_thumb_thumb_7m arm_farcall_thumb_thumb_6m
|
||||||
|
|
||||||
|
# Check Thumb to ARM farcall veneers
|
||||||
|
|
||||||
|
check_SCRIPTS += arm_farcall_thumb_arm.sh
|
||||||
|
check_DATA += arm_farcall_thumb_arm.stdout \
|
||||||
|
arm_farcall_thumb_arm_5t.stdout
|
||||||
|
|
||||||
|
arm_farcall_thumb_arm.stdout: arm_farcall_thumb_arm
|
||||||
|
$(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
arm_farcall_thumb_arm: arm_farcall_thumb_arm.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_arm.o: arm_farcall_thumb_arm.s
|
||||||
|
$(TEST_AS) -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_arm_5t.stdout: arm_farcall_thumb_arm_5t
|
||||||
|
$(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
arm_farcall_thumb_arm_5t: arm_farcall_thumb_arm_5t.o ../ld-new
|
||||||
|
../ld-new --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
arm_farcall_thumb_arm_5t.o: arm_farcall_thumb_arm.s
|
||||||
|
$(TEST_AS) -march=armv5t -o $@ $<
|
||||||
|
|
||||||
|
MOSTLYCLEANFILES += arm_farcall_thumb_arm arm_farcall_thumb_arm_5t
|
||||||
|
|
||||||
endif DEFAULT_TARGET_ARM
|
endif DEFAULT_TARGET_ARM
|
||||||
|
|
||||||
endif NATIVE_OR_CROSS_LINKER
|
endif NATIVE_OR_CROSS_LINKER
|
||||||
|
@ -509,6 +509,14 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
|||||||
|
|
||||||
|
|
||||||
# Cortex-A8 workaround test.
|
# Cortex-A8 workaround test.
|
||||||
|
|
||||||
|
# Check ARM to ARM farcall veneers
|
||||||
|
|
||||||
|
# Check ARM to Thumb farcall veneers
|
||||||
|
|
||||||
|
# Check Thumb to Thumb farcall veneers
|
||||||
|
|
||||||
|
# Check Thumb to ARM farcall veneers
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_64 = arm_abs_global.sh \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_64 = arm_abs_global.sh \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_in_range.sh \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_in_range.sh \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_out_of_range.sh \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_out_of_range.sh \
|
||||||
@ -517,7 +525,11 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
|||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8.sh \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8.sh \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_exidx_test.sh \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_exidx_test.sh \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr12826.sh \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr12826.sh \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc.sh
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc.sh \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm.sh \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb.sh \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb.sh \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm.sh
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_65 = arm_abs_global.stdout \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_65 = arm_abs_global.stdout \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range.stdout \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range.stdout \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range.stdout \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range.stdout \
|
||||||
@ -546,7 +558,16 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
|||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local_reloc.stdout \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local_reloc.stdout \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_exidx_test.stdout \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_exidx_test.stdout \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr12826.stdout \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ pr12826.stdout \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc.stdout
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb_5t.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_5t.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_7m.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm.stdout \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t.stdout
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_66 = arm_abs_global \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_66 = arm_abs_global \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range \
|
||||||
@ -573,7 +594,16 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
|||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_blx \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_blx \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local_reloc \
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local_reloc \
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_unaligned_reloc \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_arm \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb_5t \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_5t \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_7m \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm \
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t
|
||||||
subdir = testsuite
|
subdir = testsuite
|
||||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
@ -3688,6 +3718,14 @@ pr12826.sh.log: pr12826.sh
|
|||||||
@p='pr12826.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
@p='pr12826.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||||
arm_unaligned_reloc.sh.log: arm_unaligned_reloc.sh
|
arm_unaligned_reloc.sh.log: arm_unaligned_reloc.sh
|
||||||
@p='arm_unaligned_reloc.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
@p='arm_unaligned_reloc.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||||
|
arm_farcall_arm_arm.sh.log: arm_farcall_arm_arm.sh
|
||||||
|
@p='arm_farcall_arm_arm.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||||
|
arm_farcall_arm_thumb.sh.log: arm_farcall_arm_thumb.sh
|
||||||
|
@p='arm_farcall_arm_thumb.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||||
|
arm_farcall_thumb_thumb.sh.log: arm_farcall_thumb_thumb.sh
|
||||||
|
@p='arm_farcall_thumb_thumb.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||||
|
arm_farcall_thumb_arm.sh.log: arm_farcall_thumb_arm.sh
|
||||||
|
@p='arm_farcall_thumb_arm.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||||
object_unittest.log: object_unittest$(EXEEXT)
|
object_unittest.log: object_unittest$(EXEEXT)
|
||||||
@p='object_unittest$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
@p='object_unittest$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||||
binary_unittest.log: binary_unittest$(EXEEXT)
|
binary_unittest.log: binary_unittest$(EXEEXT)
|
||||||
@ -5371,6 +5409,87 @@ uninstall-am:
|
|||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_unaligned_reloc.o: arm_unaligned_reloc.s
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_unaligned_reloc.o: arm_unaligned_reloc.s
|
||||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm.stdout: arm_farcall_arm_arm
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm: arm_farcall_arm_arm.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001020 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_arm.o: arm_farcall_arm_arm.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb.stdout: arm_farcall_arm_thumb
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb: arm_farcall_arm_thumb.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb.o: arm_farcall_arm_thumb.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb_5t.stdout: arm_farcall_arm_thumb_5t
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb_5t: arm_farcall_arm_thumb_5t.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_arm_thumb_5t.o: arm_farcall_arm_thumb.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv5t -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb.stdout: arm_farcall_thumb_thumb
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb: arm_farcall_thumb_thumb.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb.o: arm_farcall_thumb_thumb.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv4t -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_5t.stdout: arm_farcall_thumb_thumb_5t
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_5t: arm_farcall_thumb_thumb_5t.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_5t.o: arm_farcall_thumb_thumb.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv5t -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_7m.stdout: arm_farcall_thumb_thumb_7m
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_7m: arm_farcall_thumb_thumb_7m.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_7m.o: arm_farcall_thumb_thumb.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv7-m -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_6m.stdout: arm_farcall_thumb_thumb_6m
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_6m: arm_farcall_thumb_thumb_6m.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_thumb_6m.o: arm_farcall_thumb_thumb.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv6-m -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm.stdout: arm_farcall_thumb_arm
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm: arm_farcall_thumb_arm.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm.o: arm_farcall_thumb_arm.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm_5t.stdout: arm_farcall_thumb_arm_5t
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -D $< > $@
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm_5t: arm_farcall_thumb_arm_5t.o ../ld-new
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $<
|
||||||
|
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm_5t.o: arm_farcall_thumb_arm.s
|
||||||
|
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv5t -o $@ $<
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
20
gold/testsuite/arm_farcall_arm_arm.s
Normal file
20
gold/testsuite/arm_farcall_arm_arm.s
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
@ Test to ensure that a ARM to ARM call exceeding 32Mb generates a stub.
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
@ We will place the section .text at 0x1000.
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
_start:
|
||||||
|
bl bar
|
||||||
|
|
||||||
|
@ We will place the section .foo at 0x2001020.
|
||||||
|
|
||||||
|
.section .foo, "xa"
|
||||||
|
|
||||||
|
.type bar, %function
|
||||||
|
bar:
|
||||||
|
bx lr
|
||||||
|
|
44
gold/testsuite/arm_farcall_arm_arm.sh
Executable file
44
gold/testsuite/arm_farcall_arm_arm.sh
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# arm_farcall_arm_arm.sh -- a test case for ARM->ARM farcall veneers
|
||||||
|
|
||||||
|
# Copyright 2010, 2011, Free Software Foundation, Inc.
|
||||||
|
# Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||||
|
# Based upon arm_cortex_a8.sh
|
||||||
|
# Written by Doug Kwan <dougkwan@google.com>.
|
||||||
|
|
||||||
|
# This file is part of gold.
|
||||||
|
|
||||||
|
# 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 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
check()
|
||||||
|
{
|
||||||
|
if ! grep -q "$2" "$1"
|
||||||
|
then
|
||||||
|
echo "Did not find expected instruction in $1:"
|
||||||
|
echo " $2"
|
||||||
|
echo ""
|
||||||
|
echo "Actual instructions below:"
|
||||||
|
cat "$1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for ARM->ARM default
|
||||||
|
check arm_farcall_arm_arm.stdout "1004: .* ldr pc, \[pc, #-4\] .*"
|
||||||
|
check arm_farcall_arm_arm.stdout "1008: 02001020"
|
||||||
|
|
||||||
|
exit 0
|
20
gold/testsuite/arm_farcall_arm_thumb.s
Normal file
20
gold/testsuite/arm_farcall_arm_thumb.s
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
@ Test to ensure that a ARM to Thumb call exceeding 32Mb generates a stub.
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
.global bar
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
@ We will place the section .text at 0x1000.
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
_start:
|
||||||
|
bl bar
|
||||||
|
|
||||||
|
@ We will place the section .foo at 0x2001010.
|
||||||
|
|
||||||
|
.section .foo, "xa"
|
||||||
|
.thumb_func
|
||||||
|
bar:
|
||||||
|
bx lr
|
||||||
|
|
50
gold/testsuite/arm_farcall_arm_thumb.sh
Executable file
50
gold/testsuite/arm_farcall_arm_thumb.sh
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# arm_farcall_arm_thumb.sh -- a test case for ARM->Thumb farcall veneers.
|
||||||
|
|
||||||
|
# Copyright 2010, 2011, Free Software Foundation, Inc.
|
||||||
|
# Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||||
|
# Based upon arm_cortex_a8.sh
|
||||||
|
# Written by Doug Kwan <dougkwan@google.com>.
|
||||||
|
|
||||||
|
# This file is part of gold.
|
||||||
|
|
||||||
|
# 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 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
check()
|
||||||
|
{
|
||||||
|
if ! grep -q "$2" "$1"
|
||||||
|
then
|
||||||
|
echo "Did not find expected instruction in $1:"
|
||||||
|
echo " $2"
|
||||||
|
echo ""
|
||||||
|
echo "Actual instructions below:"
|
||||||
|
cat "$1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for ARM->Thumb default
|
||||||
|
check arm_farcall_arm_thumb.stdout "1004: .* ldr ip, \[pc\]"
|
||||||
|
check arm_farcall_arm_thumb.stdout "1008: .* bx ip"
|
||||||
|
check arm_farcall_arm_thumb.stdout "100c: 02001015"
|
||||||
|
|
||||||
|
# Check for ARM->Thumb with v5t interworking
|
||||||
|
chck arm_farcall_arm_thumb_5t.stdout "1004: f004 e51f"
|
||||||
|
chck arm_farcall_arm_thumb_5t.stdout "1008: 1015"
|
||||||
|
chck arm_farcall_arm_thumb_5t.stdout "100a: 0200"
|
||||||
|
|
||||||
|
exit 0
|
27
gold/testsuite/arm_farcall_thumb_arm.s
Normal file
27
gold/testsuite/arm_farcall_thumb_arm.s
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
@ Test to ensure that a Thumb to ARM call exceeding 4Mb generates a stub.
|
||||||
|
@ Check that we can generate two types of stub in the same section.
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
@ We will place the section .text at 0x1c01010.
|
||||||
|
|
||||||
|
.text
|
||||||
|
.thumb_func
|
||||||
|
_start:
|
||||||
|
.global bar
|
||||||
|
bl bar
|
||||||
|
@ This call is close enough to generate a "short branch" stub
|
||||||
|
@ or no stub if blx is available.
|
||||||
|
.space 0x0300000
|
||||||
|
bl bar
|
||||||
|
|
||||||
|
@ We will place the section .foo at 0x2001014.
|
||||||
|
|
||||||
|
.section .foo, "xa"
|
||||||
|
|
||||||
|
.arm
|
||||||
|
.type bar, %function
|
||||||
|
bar:
|
||||||
|
bx lr
|
||||||
|
|
56
gold/testsuite/arm_farcall_thumb_arm.sh
Executable file
56
gold/testsuite/arm_farcall_thumb_arm.sh
Executable file
@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# arm_farcall_thumb_arm.sh -- a test case for Thumb->ARM farcall veneers.
|
||||||
|
|
||||||
|
# Copyright 2010, 2011, Free Software Foundation, Inc.
|
||||||
|
# Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||||
|
# Based upon arm_cortex_a8.sh
|
||||||
|
# Written by Doug Kwan <dougkwan@google.com>.
|
||||||
|
|
||||||
|
# This file is part of gold.
|
||||||
|
|
||||||
|
# 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 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
check()
|
||||||
|
{
|
||||||
|
if ! grep -q "$2" "$1"
|
||||||
|
then
|
||||||
|
echo "Did not find expected instruction in $1:"
|
||||||
|
echo " $2"
|
||||||
|
echo ""
|
||||||
|
echo "Actual instructions below:"
|
||||||
|
cat "$1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Thumb->ARM
|
||||||
|
check arm_farcall_thumb_arm.stdout "1f01018: .* bx pc"
|
||||||
|
check arm_farcall_thumb_arm.stdout "1f0101a: .* nop"
|
||||||
|
check arm_farcall_thumb_arm.stdout "1f0101c: f004 e51f"
|
||||||
|
check arm_farcall_thumb_arm.stdout "1f01020: 1014"
|
||||||
|
check arm_farcall_thumb_arm.stdout "1f01022: 0200"
|
||||||
|
|
||||||
|
check arm_farcall_thumb_arm.stdout "1f01024: .* bx pc"
|
||||||
|
check arm_farcall_thumb_arm.stdout "1f01026: .* nop"
|
||||||
|
check arm_farcall_thumb_arm.stdout "1f01028: fff9 ea03"
|
||||||
|
|
||||||
|
# Thumb->ARM with v5T interworking
|
||||||
|
check arm_farcall_thumb_arm_5t.stdout "1f01018: f004 e51f"
|
||||||
|
check arm_farcall_thumb_arm_5t.stdout "1f0101c: 1014"
|
||||||
|
check arm_farcall_thumb_arm_5t.stdout "1f0101e: 0200"
|
||||||
|
|
||||||
|
exit 0
|
19
gold/testsuite/arm_farcall_thumb_thumb.s
Normal file
19
gold/testsuite/arm_farcall_thumb_thumb.s
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
@ Test to ensure that a Thumb to Thumb call exceeding 4Mb generates a stub.
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
@ We will place the section .text at 0x1000.
|
||||||
|
|
||||||
|
.text
|
||||||
|
.thumb_func
|
||||||
|
_start:
|
||||||
|
bl bar
|
||||||
|
|
||||||
|
@ We will place the section .foo at 0x02001014.
|
||||||
|
|
||||||
|
.section .foo, "xa"
|
||||||
|
.thumb_func
|
||||||
|
bar:
|
||||||
|
bx lr
|
||||||
|
|
74
gold/testsuite/arm_farcall_thumb_thumb.sh
Executable file
74
gold/testsuite/arm_farcall_thumb_thumb.sh
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# arm_farcall_thumb_thumb.sh -- a test case for Thumb->Thumb farcall veneers.
|
||||||
|
|
||||||
|
# Copyright 2010, 2011, Free Software Foundation, Inc.
|
||||||
|
# Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||||
|
# Based upon arm_cortex_a8.sh
|
||||||
|
# Written by Doug Kwan <dougkwan@google.com>.
|
||||||
|
|
||||||
|
# This file is part of gold.
|
||||||
|
|
||||||
|
# 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 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
check()
|
||||||
|
{
|
||||||
|
if ! grep -q "$2" "$1"
|
||||||
|
then
|
||||||
|
echo "Did not find expected instruction in $1:"
|
||||||
|
echo " $2"
|
||||||
|
echo ""
|
||||||
|
echo "Actual instructions below:"
|
||||||
|
cat "$1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Thumb->Thumb default
|
||||||
|
check arm_farcall_thumb_thumb.stdout "1004: .* bx pc"
|
||||||
|
check arm_farcall_thumb_thumb.stdout "1006: .* nop"
|
||||||
|
check arm_farcall_thumb_thumb.stdout "1008: c000"
|
||||||
|
check arm_farcall_thumb_thumb.stdout "100a: e59f"
|
||||||
|
check arm_farcall_thumb_thumb.stdout "100c: ff1c e12f"
|
||||||
|
check arm_farcall_thumb_thumb.stdout "1010: 1015"
|
||||||
|
check arm_farcall_thumb_thumb.stdout "1012: 0200"
|
||||||
|
|
||||||
|
# Thumb->Thumb with v5T interworking
|
||||||
|
check arm_farcall_thumb_thumb_5t.stdout "1004: f004 e51f"
|
||||||
|
check arm_farcall_thumb_thumb_5t.stdout "1008: 1015"
|
||||||
|
check arm_farcall_thumb_thumb_5t.stdout "100a: 0200"
|
||||||
|
|
||||||
|
# Thumb->Thumb on v6-M
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1004: .* push {r0}"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1006: .* ldr r0, \\[pc, #8\\]"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1008: .* mov ip, r0"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "100a: .* pop {r0}"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "100c: .* bx ip"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "100e: .* nop"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1010: 1015"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1012: 0200"
|
||||||
|
|
||||||
|
# Thumb->Thumb on v7-M
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1004: .* push {r0}"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1006: .* ldr r0, \\[pc, #8\\]"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1008: .* mov ip, r0"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "100a: .* pop {r0}"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "100c: .* bx ip"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "100e: .* nop"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1010: 1015"
|
||||||
|
check arm_farcall_thumb_thumb_6m.stdout "1012: 0200"
|
||||||
|
|
||||||
|
exit 0
|
Reference in New Issue
Block a user