mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 04:29:49 +00:00
2011-04-22 Doug Kwan <dougkwan@google.com>
* arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER flag of a SHT_ARM_EXIDX section. * testsuite/Makefile.am (arm_exidx_test): New test rules. * testsuite/Makefile.in: Regenerate. * testsuite/arm_exidx_test.s: New file. * testsuite/arm_exidx_test.sh: Same.
This commit is contained in:
parent
4161fbb015
commit
c87e430233
@ -1,3 +1,12 @@
|
||||
2011-04-22 Doug Kwan <dougkwan@google.com>
|
||||
|
||||
* arm.cc (Arm_output_section::Arm_output_section): Set SHF_LINK_ORDER
|
||||
flag of a SHT_ARM_EXIDX section.
|
||||
* testsuite/Makefile.am (arm_exidx_test): New test rules.
|
||||
* testsuite/Makefile.in: Regenerate.
|
||||
* testsuite/arm_exidx_test.s: New file.
|
||||
* testsuite/arm_exidx_test.sh: Same.
|
||||
|
||||
2011-04-20 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
PR gold/12689
|
||||
|
@ -1342,9 +1342,13 @@ class Arm_output_section : public Output_section
|
||||
public:
|
||||
typedef std::vector<std::pair<Relobj*, unsigned int> > Text_section_list;
|
||||
|
||||
// We need to force SHF_LINK_ORDER in a SHT_ARM_EXIDX section.
|
||||
Arm_output_section(const char* name, elfcpp::Elf_Word type,
|
||||
elfcpp::Elf_Xword flags)
|
||||
: Output_section(name, type, flags)
|
||||
: Output_section(name, type,
|
||||
(type == elfcpp::SHT_ARM_EXIDX
|
||||
? flags | elfcpp::SHF_LINK_ORDER
|
||||
: flags))
|
||||
{
|
||||
if (type == elfcpp::SHT_ARM_EXIDX)
|
||||
this->set_always_keeps_input_sections();
|
||||
|
@ -2164,6 +2164,20 @@ arm_cortex_a8_local_reloc.o: arm_cortex_a8_local_reloc.s
|
||||
MOSTLYCLEANFILES += arm_cortex_a8_b_cond arm_cortex_a8_b arm_cortex_a8_bl \
|
||||
arm_cortex_a8_blx arm_cortex_a8_local arm_cortex_a8_local_reloc
|
||||
|
||||
check_SCRIPTS += arm_exidx_test.sh
|
||||
check_DATA += arm_exidx_test.stdout
|
||||
|
||||
arm_exidx_test.stdout: arm_exidx_test.so
|
||||
$(TEST_READELF) -S $< > $@
|
||||
|
||||
arm_exidx_test.so: arm_exidx_test.o ../ld-new
|
||||
../ld-new -shared -o $@ $<
|
||||
|
||||
arm_exidx_test.o: arm_exidx_test.s
|
||||
$(TEST_AS) -o $@ $<
|
||||
|
||||
MOSTLYCLEANFILES += arm_exidx_test.so
|
||||
|
||||
endif DEFAULT_TARGET_ARM
|
||||
|
||||
endif NATIVE_OR_CROSS_LINKER
|
||||
|
@ -459,7 +459,8 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@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_fix_v4bx.sh \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_attr_merge.sh \
|
||||
@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@am__append_44 = 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_out_of_range.stdout \
|
||||
@ -483,7 +484,8 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_bl.stdout \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_blx.stdout \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_local.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_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@am__append_45 = 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_out_of_range \
|
||||
@ -507,7 +509,8 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_cortex_a8_bl \
|
||||
@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_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_exidx_test.so
|
||||
subdir = testsuite
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
@ -3316,6 +3319,8 @@ arm_attr_merge.sh.log: arm_attr_merge.sh
|
||||
@p='arm_attr_merge.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||
arm_cortex_a8.sh.log: arm_cortex_a8.sh
|
||||
@p='arm_cortex_a8.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||
arm_exidx_test.sh.log: arm_exidx_test.sh
|
||||
@p='arm_exidx_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||
object_unittest.log: object_unittest$(EXEEXT)
|
||||
@p='object_unittest$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||
binary_unittest.log: binary_unittest$(EXEEXT)
|
||||
@ -4790,6 +4795,15 @@ uninstall-am:
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_cortex_a8_local_reloc.o: arm_cortex_a8_local_reloc.s
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
|
||||
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_exidx_test.stdout: arm_exidx_test.so
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_READELF) -S $< > $@
|
||||
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_exidx_test.so: arm_exidx_test.o ../ld-new
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -shared -o $@ $<
|
||||
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_exidx_test.o: arm_exidx_test.s
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -o $@ $<
|
||||
|
||||
# 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.
|
||||
.NOEXPORT:
|
||||
|
12
gold/testsuite/arm_exidx_test.s
Normal file
12
gold/testsuite/arm_exidx_test.s
Normal file
@ -0,0 +1,12 @@
|
||||
.syntax unified
|
||||
.arch armv5te
|
||||
.text
|
||||
.align 2
|
||||
.global answer
|
||||
.type answer, %function
|
||||
answer:
|
||||
.fnstart
|
||||
mov r0, #42
|
||||
bx lr
|
||||
.fnend
|
||||
.size answer, .-answer
|
45
gold/testsuite/arm_exidx_test.sh
Executable file
45
gold/testsuite/arm_exidx_test.sh
Executable file
@ -0,0 +1,45 @@
|
||||
#!/bin/sh
|
||||
|
||||
# arm_exidx_test.sh -- a test case for .ARM.exidx section.
|
||||
|
||||
# Copyright 2011 Free Software Foundation, Inc.
|
||||
# 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.
|
||||
|
||||
# This file goes with arm_exidx_test.s, an ARM assembly source file constructed
|
||||
# to test handling of .ARM.exidx and .ARM.extab sections.
|
||||
|
||||
check()
|
||||
{
|
||||
if ! grep -q "$2" "$1"
|
||||
then
|
||||
echo "Did not find section header in $1:"
|
||||
echo " $2"
|
||||
echo ""
|
||||
echo "Actual headers below:"
|
||||
cat "$1"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Check that SHF_LINK_ORDER is set.
|
||||
check arm_exidx_test.stdout ".* .ARM.exidx .* ARM_EXIDX .* AL .*"
|
||||
check arm_exidx_test.stdout ".* .ARM.extab .* PROGBITS .* A .*"
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user