Date: Thursday, February 12, 2015 @ 20:16:13 Author: anatolik Revision: 127625
upgpkg: arm-none-eabi-binutils 2.25-2 FS#43794 Added: arm-none-eabi-binutils/trunk/enable_link_arm_no_attributes.patch Modified: arm-none-eabi-binutils/trunk/PKGBUILD -------------------------------------+ PKGBUILD | 13 ++- enable_link_arm_no_attributes.patch | 115 ++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+), 5 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-02-12 18:39:04 UTC (rev 127624) +++ PKGBUILD 2015-02-12 19:16:13 UTC (rev 127625) @@ -5,18 +5,23 @@ _target=arm-none-eabi pkgname=$_target-binutils pkgver=2.25 -pkgrel=1 +pkgrel=2 pkgdesc='A set of programs to assemble and manipulate binary and object files for the ARM EABI (bare-metal) target' arch=(i686 x86_64) url='http://www.gnu.org/software/binutils/' license=(GPL) depends=(zlib) -source=(ftp://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2{,.sig}) -validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93') # Tristan Gingold +source=(ftp://ftp.gnu.org/gnu/binutils/binutils-$pkgver.tar.bz2{,.sig} + enable_link_arm_no_attributes.patch) +sha1sums=('b46cc90ebaba7ffcf6c6d996d60738881b14e50d' + 'SKIP' + 'c88cc0ed5f884332fa76b733fb47a26f307bde0f') +validpgpkeys=('EAF1C276A747E9ED86210CBAC3126D3B4AE55E93') # Tristan Gingold <[email protected]> prepare() { cd binutils-$pkgver sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure + patch -p1 < ../enable_link_arm_no_attributes.patch # FS#43794 } build() { @@ -54,5 +59,3 @@ # Remove info documents that conflict with host version rm -rf "$pkgdir"/usr/share/info } -md5sums=('d9f3303f802a5b6b0bb73a335ab89d66' - 'SKIP') Added: enable_link_arm_no_attributes.patch =================================================================== --- enable_link_arm_no_attributes.patch (rev 0) +++ enable_link_arm_no_attributes.patch 2015-02-12 19:16:13 UTC (rev 127625) @@ -0,0 +1,115 @@ +commit 9274e9de160a98d737bb2bd068c22d37ec66d98d +Author: Terry Guo <[email protected]> +Date: Thu Nov 20 13:54:27 2014 +0800 + + Enable to link ARM object file that hasn't attribute section. + + bfd/ChangeLog + + 2014-11-20 Terry Guo <[email protected]> + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Skip if input bfd + hasn't attribute section. + + ld/testsuite/ChangeLog: + + 2014-11-20 Terry Guo <[email protected]> + + * ld-arm/attr-merge-nosection-1.d: New file. + * ld-arm/attr-merge-nosection-1a.s: Likewise. + * ld-arm/attr-merge-nosection-1b.s: Likewise. + * ld-arm/arm-elf.exp: Include the new test. + +diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c +index 49d0f65..95f59d5 100644 +--- a/bfd/elf32-arm.c ++++ b/bfd/elf32-arm.c +@@ -11700,6 +11700,7 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd) + static const int order_021[3] = {0, 2, 1}; + int i; + bfd_boolean result = TRUE; ++ const char *sec_name = get_elf_backend_data (ibfd)->obj_attrs_section; + + /* Skip the linker stubs file. This preserves previous behavior + of accepting unknown attributes in the first input file - but +@@ -11707,6 +11708,12 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd) + if (ibfd->flags & BFD_LINKER_CREATED) + return TRUE; + ++ /* Skip any input that hasn't attribute section. ++ This enables to link object files without attribute section with ++ any others. */ ++ if (bfd_get_section_by_name (ibfd, sec_name) == NULL) ++ return TRUE; ++ + if (!elf_known_obj_attributes_proc (obfd)[0].i) + { + /* This is the first object. Copy the attributes. */ +diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp +index 3c8cc68..d00b74d 100644 +--- a/ld/testsuite/ld-arm/arm-elf.exp ++++ b/ld/testsuite/ld-arm/arm-elf.exp +@@ -879,6 +879,7 @@ run_dump_test "attr-merge-vfp-7" + run_dump_test "attr-merge-vfp-7r" + run_dump_test "attr-merge-incompatible" + run_dump_test "attr-merge-arch-2" ++run_dump_test "attr-merge-nosection-1" + run_dump_test "unresolved-1" + if { ![istarget "arm*-*-nacl*"] } { + run_dump_test "unresolved-1-dyn" +diff --git a/ld/testsuite/ld-arm/attr-merge-nosection-1.d b/ld/testsuite/ld-arm/attr-merge-nosection-1.d +new file mode 100644 +index 0000000..a2b8d73 +--- /dev/null ++++ b/ld/testsuite/ld-arm/attr-merge-nosection-1.d +@@ -0,0 +1,18 @@ ++#source: attr-merge-nosection-1a.s RUN_OBJCOPY ++#source: attr-merge-nosection-1b.s ++#as: ++#objcopy_objects: -R '.ARM.attributes' ++#ld: ++#readelf: -A ++# This test is only valid on ELF based ports. ++# not-target: *-*-*coff *-*-pe *-*-wince *-*-*aout* *-*-netbsd *-*-riscix* ++ ++Attribute Section: aeabi ++File Attributes ++ Tag_CPU_name: "Cortex-M4" ++ Tag_CPU_arch: v7E-M ++ Tag_CPU_arch_profile: Microcontroller ++ Tag_THUMB_ISA_use: Thumb-2 ++ Tag_FP_arch: VFPv4-D16 ++ Tag_ABI_HardFP_use: SP only ++ +diff --git a/ld/testsuite/ld-arm/attr-merge-nosection-1a.s b/ld/testsuite/ld-arm/attr-merge-nosection-1a.s +new file mode 100644 +index 0000000..ab358e3 +--- /dev/null ++++ b/ld/testsuite/ld-arm/attr-merge-nosection-1a.s +@@ -0,0 +1,10 @@ ++ .cpu cortex-m0 ++ .fpu softvfp ++ .syntax unified ++ .thumb ++ .text ++ .global foo ++ .thumb_func ++ .type foo, %function ++foo: ++ bx lr +diff --git a/ld/testsuite/ld-arm/attr-merge-nosection-1b.s b/ld/testsuite/ld-arm/attr-merge-nosection-1b.s +new file mode 100644 +index 0000000..cd656bd +--- /dev/null ++++ b/ld/testsuite/ld-arm/attr-merge-nosection-1b.s +@@ -0,0 +1,10 @@ ++ .syntax unified ++ .cpu cortex-m4 ++ .fpu fpv4-sp-d16 ++ .thumb ++ .text ++ .global _start ++ .thumb_func ++ .type _start, %function ++_start: ++ bl foo
