This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, ARM]Enable to link object file without attribute section with any others


On 30/09/14 10:57, Terry Guo wrote:
> Hi there,
> 
> The attached patch intends to skip the object file that hasn't attribute
> section when merge the attributes, thus enable to link such file with any
> others.
> 
> Tested with regression test, no regressions. Is it ok?
> 
> BR,
> Terry
> 
> bfd/ChangeLog
> 
> 2014-09-30  Terry Guo  <terry.guo@arm.com>
>       
>       * elf32-arm.c (elf32_arm_merge_eabi_attributes): Skip if input bfd
>       hasn't attribute section.
> 
> ld/testsuite/ChangeLog:
> 
> 2014-09-30  Terry Guo  <terry.guo@arm.com>
> 
>       * 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.
> 
> 

Ok

R.

> merge-arch-attr-v3.txt
> 
> 
> diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
> index 89d51c1..1bc861e 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 f971afc..d2ff8db 100644
> --- a/ld/testsuite/ld-arm/arm-elf.exp
> +++ b/ld/testsuite/ld-arm/arm-elf.exp
> @@ -878,6 +878,7 @@ run_dump_test "attr-merge-vfp-6r"
>  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-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
> 



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]