bfd:
authorJoseph Myers <joseph@codesourcery.com>
Tue, 3 Jul 2007 15:21:30 +0000 (15:21 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 3 Jul 2007 15:21:30 +0000 (15:21 +0000)
* elf32-arm.c (elf32_arm_merge_eabi_attributes): Copy type from
input attributes if value has been copied.

ld/testsuite:
* ld-arm/attr-merge-2a.s, ld-arm/attr-merge-2b.s,
ld-arm/attr-merge-2.attr: New.
* ld-arm/arm-elf.exp (armelftests): Add new test.

bfd/ChangeLog
bfd/elf32-arm.c
ld/testsuite/ChangeLog
ld/testsuite/ld-arm/arm-elf.exp
ld/testsuite/ld-arm/attr-merge-2.attr [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-2a.s [new file with mode: 0644]
ld/testsuite/ld-arm/attr-merge-2b.s [new file with mode: 0644]

index 50226f2..8565680 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-03  Joseph Myers  <joseph@codesourcery.com>
+
+       * elf32-arm.c (elf32_arm_merge_eabi_attributes): Copy type from
+       input attributes if value has been copied.
+
 2007-07-03  Nick Clifton  <nickc@redhat.com>
 
        * COPYING: Replace with GPLv3 text.
index e335888..ab47558 100644 (file)
@@ -6934,6 +6934,23 @@ elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd)
        default: /* All known attributes should be explicitly covered.   */
          abort ();
        }
+
+      if (in_attr[i].type && !out_attr[i].type)
+       switch (in_attr[i].type)
+         {
+         case 1:
+           if (out_attr[i].i)
+             out_attr[i].type = 1;
+           break;
+
+         case 2:
+           if (out_attr[i].s)
+             out_attr[i].type = 2;
+           break;
+
+         default:
+           abort ();
+         }
     }
 
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
index 7cb33ce..e6304b9 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-03  Joseph Myers  <joseph@codesourcery.com>
+
+       * ld-arm/attr-merge-2a.s, ld-arm/attr-merge-2b.s,
+       ld-arm/attr-merge-2.attr: New.
+       * ld-arm/arm-elf.exp (armelftests): Add new test.
+
 2007-07-02  Nathan Sidwell  <nathan@codesourcery.com>
 
        * ld-scripts/alignof.exp: Skip on non-elf
index a83c1ee..21adf57 100644 (file)
@@ -170,6 +170,9 @@ set armelftests {
      {"EABI attribute merging" "-r" "" {attr-merge.s attr-merge.s}
       {{readelf -A attr-merge.attr}}
       "attr-merge"}
+     {"EABI attribute merging 2" "-r" "" {attr-merge-2a.s attr-merge-2b.s}
+      {{readelf -A attr-merge-2.attr}}
+      "attr-merge-2"}
      {"callweak" "-static -T arm.ld" "" {callweak.s}
       {{objdump -dr callweak.d}}
       "callweak"}
diff --git a/ld/testsuite/ld-arm/attr-merge-2.attr b/ld/testsuite/ld-arm/attr-merge-2.attr
new file mode 100644 (file)
index 0000000..341e6d1
--- /dev/null
@@ -0,0 +1,12 @@
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "ARM7TDMI"
+  Tag_CPU_arch: v4T
+  Tag_ABI_PCS_wchar_t: 4
+  Tag_ABI_FP_denormal: Needed
+  Tag_ABI_FP_exceptions: Needed
+  Tag_ABI_FP_number_model: IEEE 754
+  Tag_ABI_align8_needed: Yes
+  Tag_ABI_align8_preserved: Yes, except leaf SP
+  Tag_ABI_enum_size: small
+  Tag_ABI_optimization_goals: Aggressive Debug
diff --git a/ld/testsuite/ld-arm/attr-merge-2a.s b/ld/testsuite/ld-arm/attr-merge-2a.s
new file mode 100644 (file)
index 0000000..0303163
--- /dev/null
@@ -0,0 +1,10 @@
+       .cpu arm7tdmi
+       .fpu softvfp
+       .eabi_attribute 20, 1
+       .eabi_attribute 21, 1
+       .eabi_attribute 23, 3
+       .eabi_attribute 24, 1
+       .eabi_attribute 25, 1
+       .eabi_attribute 26, 1
+       .eabi_attribute 30, 6
+       .file   "attr-merge-2a.s"
diff --git a/ld/testsuite/ld-arm/attr-merge-2b.s b/ld/testsuite/ld-arm/attr-merge-2b.s
new file mode 100644 (file)
index 0000000..047890a
--- /dev/null
@@ -0,0 +1,11 @@
+       .cpu arm7tdmi
+       .fpu softvfp
+       .eabi_attribute 20, 1
+       .eabi_attribute 21, 1
+       .eabi_attribute 23, 3
+       .eabi_attribute 24, 1
+       .eabi_attribute 25, 1
+       .eabi_attribute 26, 1
+       .eabi_attribute 30, 6
+       .eabi_attribute 18, 4
+       .file   "attr-merge-2b.s"