bfd/
authorRichard Sandiford <rdsandiford@googlemail.com>
Sat, 14 Mar 2009 09:15:34 +0000 (09:15 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Sat, 14 Mar 2009 09:15:34 +0000 (09:15 +0000)
* xcofflink.c (xcoff_mark, xcoff_link_input_bfd): Don't copy
R_POS and R_NEG relocations against absolute symbols to the
.loader section.

ld/testsuite/
* ld-powerpc/aix-abs-reloc-1.ex, ld-powerpc/aix-abs-reloc-1.im,
ld-powerpc/aix-abs-reloc-1.od, ld-powerpc/aix-abs-reloc-1.s: New test.
* ld-powerpc/aix52.exp: Run it.

bfd/ChangeLog
bfd/xcofflink.c
ld/testsuite/ChangeLog
ld/testsuite/ld-powerpc/aix-abs-reloc-1.ex [new file with mode: 0644]
ld/testsuite/ld-powerpc/aix-abs-reloc-1.im [new file with mode: 0644]
ld/testsuite/ld-powerpc/aix-abs-reloc-1.od [new file with mode: 0644]
ld/testsuite/ld-powerpc/aix-abs-reloc-1.s [new file with mode: 0644]
ld/testsuite/ld-powerpc/aix52.exp

index 51544cc6c9f44aa788361def050b5104fda84a12..9182ef27e3d34fe969d1f887882f14684a86c294 100644 (file)
@@ -1,3 +1,9 @@
+2009-03-14  Richard Sandiford  <r.sandiford@uk.ibm.com>
+
+       * xcofflink.c (xcoff_mark, xcoff_link_input_bfd): Don't copy
+       R_POS and R_NEG relocations against absolute symbols to the
+       .loader section.
+
 2009-03-14  Richard Sandiford  <r.sandiford@uk.ibm.com>
 
        * coff64-rs6000.c (xcoff64_write_object_contents): Set the cputype
index 21d9a2d944630f4af8c5046b79b6228a8af2d552..0a38ac343c9fbf5e695e60f239b2ddb128ae69f0 100644 (file)
@@ -2335,6 +2335,11 @@ xcoff_mark (struct bfd_link_info *info, asection *sec)
                case R_NEG:
                case R_RL:
                case R_RLA:
+                 if (h != NULL
+                     && (h->root.type == bfd_link_hash_defined
+                         || h->root.type == bfd_link_hash_defweak)
+                     && bfd_is_abs_section (h->root.u.def.section))
+                   break;
                  ++xcoff_hash_table (info)->ldrel_count;
                  if (h != NULL)
                    h->flags |= XCOFF_LDREL;
@@ -4460,6 +4465,11 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *finfo,
                case R_NEG:
                case R_RL:
                case R_RLA:
+                 if (h != NULL
+                     && (h->root.type == bfd_link_hash_defined
+                         || h->root.type == bfd_link_hash_defweak)
+                     && bfd_is_abs_section (h->root.u.def.section))
+                   break;
                  /* This reloc needs to be copied into the .loader
                     section.  */
                  ldrel.l_vaddr = irel->r_vaddr;
index a8baba16943fc98a66cc6b7d45ad8e07e2d87de3..b02892bf6361ee8543ba336bd08f58d22442df8d 100644 (file)
@@ -1,3 +1,9 @@
+2009-03-14  Richard Sandiford  <r.sandiford@uk.ibm.com>
+
+       * ld-powerpc/aix-abs-reloc-1.ex, ld-powerpc/aix-abs-reloc-1.im,
+       ld-powerpc/aix-abs-reloc-1.od, ld-powerpc/aix-abs-reloc-1.s: New test.
+       * ld-powerpc/aix52.exp: Run it.
+
 2009-03-14  Richard Sandiford  <r.sandiford@uk.ibm.com>
 
        * ld-powerpc/aix-core-sec-1.s, ld-powerpc/aix-core-sec-1.ex,
diff --git a/ld/testsuite/ld-powerpc/aix-abs-reloc-1.ex b/ld/testsuite/ld-powerpc/aix-abs-reloc-1.ex
new file mode 100644 (file)
index 0000000..257cc56
--- /dev/null
@@ -0,0 +1 @@
+foo
diff --git a/ld/testsuite/ld-powerpc/aix-abs-reloc-1.im b/ld/testsuite/ld-powerpc/aix-abs-reloc-1.im
new file mode 100644 (file)
index 0000000..66f78a4
--- /dev/null
@@ -0,0 +1 @@
+bar    0xdeadbeef
diff --git a/ld/testsuite/ld-powerpc/aix-abs-reloc-1.od b/ld/testsuite/ld-powerpc/aix-abs-reloc-1.od
new file mode 100644 (file)
index 0000000..db65b4b
--- /dev/null
@@ -0,0 +1,7 @@
+
+.*
+
+DYNAMIC RELOCATION RECORDS \(none\)
+
+Contents of section \.data:
+ 10000000 deadbeef .*
diff --git a/ld/testsuite/ld-powerpc/aix-abs-reloc-1.s b/ld/testsuite/ld-powerpc/aix-abs-reloc-1.s
new file mode 100644 (file)
index 0000000..5eb3980
--- /dev/null
@@ -0,0 +1,4 @@
+       .globl  foo
+       .csect  foo[RW]
+foo:
+       .long   bar
index 09725573ca2920d91bc4b7947be18786421448b3..1263796b7207ef042ebea64139c8f0222bb2c8f8 100644 (file)
@@ -65,6 +65,12 @@ proc run_aix_test { size name ldopts asopts sources tools output } {
 }
 
 set aix52tests {
+    {"Relocations against absolute symbols 1"
+     "-shared -bI:aix-abs-reloc-1.im -bE:aix-abs-reloc-1.ex"
+     {} {aix-abs-reloc-1.s}
+     {{objdump -sRj.data aix-abs-reloc-1.od}}
+     "aix-abs-reloc-1.so"}
+
     {"Core sections test 1" "-shared -bE:aix-core-sec-1.ex"
      "" {aix-core-sec-1.s}
      {{objdump -h aix-core-sec-1.hd}}