summaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2009-03-14 09:32:33 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2009-03-14 09:32:33 +0000
commit3df13c4a63ba23bb8e9b0b38f2dcd98d8d0b4a4b (patch)
tree569295d13eea738ab099607bba95e81b1079a654 /ld
parente450936a6fce7a4af7c9aac18db44cad94343ff1 (diff)
downloadbinutils-3df13c4a63ba23bb8e9b0b38f2dcd98d8d0b4a4b.tar.gz
binutils-3df13c4a63ba23bb8e9b0b38f2dcd98d8d0b4a4b.tar.bz2
binutils-3df13c4a63ba23bb8e9b0b38f2dcd98d8d0b4a4b.zip
bfd/
* libcoff-in.h (xcoff_tdata): Add a lineno_counts field. * libcoff.h: Regenerate. * xcofflink.c (xcoff_link_add_symbols): Record per-symbol line-number counts in the bfd's lineno_counts field. Don't keep per-csect line-number counts. (xcoff_sweep): Don't update per-csect line-number counts. (bfd_xcoff_size_dynamic_sections): Count the number of line-number entries in each output section. (xcoff_link_input_bfd): Get the number of line numbers from the bfd's lineno_counts field, rather than recalculating it from scratch. Fix the range check when updating C_BINCL and C_EINCL symbols. (_bfd_xcoff_bfd_final_link): Don't count the output line numbers here. Don't expect csects to have line-number counts. ld/testsuite/ * ld-powerpc/aix-lineno-1.s, ld-powerpc/aix-lineno-1.txt, ld-powerpc/aix-lineno-1a.dd, ld-powerpc/aix-lineno-1a.nd, ld-powerpc/aix-lineno-1b.dd, ld-powerpc/aix-lineno-1b.nd: New tests. * ld-powerpc/aix52.exp: Run them. Copy aix-lineno-1.txt to tmpdir.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog7
-rw-r--r--ld/testsuite/ld-powerpc/aix-lineno-1.s25
-rw-r--r--ld/testsuite/ld-powerpc/aix-lineno-1.txt8
-rw-r--r--ld/testsuite/ld-powerpc/aix-lineno-1a.dd24
-rw-r--r--ld/testsuite/ld-powerpc/aix-lineno-1a.nd8
-rw-r--r--ld/testsuite/ld-powerpc/aix-lineno-1b.dd16
-rw-r--r--ld/testsuite/ld-powerpc/aix-lineno-1b.nd3
-rw-r--r--ld/testsuite/ld-powerpc/aix52.exp14
8 files changed, 105 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index cb7c24ea565..ebb5120a298 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,5 +1,12 @@
2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+ * ld-powerpc/aix-lineno-1.s, ld-powerpc/aix-lineno-1.txt,
+ ld-powerpc/aix-lineno-1a.dd, ld-powerpc/aix-lineno-1a.nd,
+ ld-powerpc/aix-lineno-1b.dd, ld-powerpc/aix-lineno-1b.nd: New tests.
+ * ld-powerpc/aix52.exp: Run them. Copy aix-lineno-1.txt to tmpdir.
+
+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
* ld-powerpc/aix-toc-1.ex, ld-powerpc/aix-toc-1a.s,
ld-powerpc/aix-toc-1b.s, ld-powerpc/aix-toc-1-32.dd,
ld-powerpc/aix-toc-1-64.dd: New tests.
diff --git a/ld/testsuite/ld-powerpc/aix-lineno-1.s b/ld/testsuite/ld-powerpc/aix-lineno-1.s
new file mode 100644
index 00000000000..196e012f206
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-lineno-1.s
@@ -0,0 +1,25 @@
+ .file "tmpdir/aix-lineno-1.txt"
+ .csect .foo[PR]
+ .function .foo,.foo
+.foo:
+ .bf 1
+ nop
+ .line 2
+ nop
+ .line 3
+ nop
+ .line 4
+ nop
+ .line 5
+ nop
+ .ef 1
+
+ .globl .main
+ .csect .main[PR]
+ .function .main,.main
+.main:
+ .bf 7
+ bl .foo
+ .line 2
+ nop
+ .ef 7
diff --git a/ld/testsuite/ld-powerpc/aix-lineno-1.txt b/ld/testsuite/ld-powerpc/aix-lineno-1.txt
new file mode 100644
index 00000000000..0e8dc16560a
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-lineno-1.txt
@@ -0,0 +1,8 @@
+Four
+and
+twenty
+blackbirds
+baked
+in
+a
+pie
diff --git a/ld/testsuite/ld-powerpc/aix-lineno-1a.dd b/ld/testsuite/ld-powerpc/aix-lineno-1a.dd
new file mode 100644
index 00000000000..72410c9d96a
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-lineno-1a.dd
@@ -0,0 +1,24 @@
+
+.*
+
+
+Disassembly of section \.text:
+
+0*10000000 <\.foo>:
+Four
+ *10000000: 60 00 00 00 (oril r0,r0,0|nop)
+and
+ *10000004: 60 00 00 00 (oril r0,r0,0|nop)
+twenty
+ *10000008: 60 00 00 00 (oril r0,r0,0|nop)
+blackbirds
+ *1000000c: 60 00 00 00 (oril r0,r0,0|nop)
+baked
+ *10000010: 60 00 00 00 (oril r0,r0,0|nop)
+
+0*10000014 <\.main>:
+in
+a
+ *10000014: 4b ff ff ed bl 10000000 <\.foo>
+pie
+ *10000018: 60 00 00 00 (oril r0,r0,0|nop)
diff --git a/ld/testsuite/ld-powerpc/aix-lineno-1a.nd b/ld/testsuite/ld-powerpc/aix-lineno-1a.nd
new file mode 100644
index 00000000000..5e841885673
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-lineno-1a.nd
@@ -0,0 +1,8 @@
+0*10000000 t \.bf
+0*10000014 t \.bf
+0*10000014 t \.ef
+0*1000001c t \.ef
+0*10000000 t \.foo
+0*10000000 t \.foo
+0*10000014 t \.main
+0*10000014 T \.main
diff --git a/ld/testsuite/ld-powerpc/aix-lineno-1b.dd b/ld/testsuite/ld-powerpc/aix-lineno-1b.dd
new file mode 100644
index 00000000000..64c08df5688
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-lineno-1b.dd
@@ -0,0 +1,16 @@
+
+.*
+
+
+Disassembly of section \.text:
+
+0*10000000 <\.foo>:
+ *10000000: 60 00 00 00 (oril r0,r0,0|nop)
+ *10000004: 60 00 00 00 (oril r0,r0,0|nop)
+ *10000008: 60 00 00 00 (oril r0,r0,0|nop)
+ *1000000c: 60 00 00 00 (oril r0,r0,0|nop)
+ *10000010: 60 00 00 00 (oril r0,r0,0|nop)
+
+0*10000014 <\.main>:
+ *10000014: 4b ff ff ed bl 10000000 <\.foo>
+ *10000018: 60 00 00 00 (oril r0,r0,0|nop)
diff --git a/ld/testsuite/ld-powerpc/aix-lineno-1b.nd b/ld/testsuite/ld-powerpc/aix-lineno-1b.nd
new file mode 100644
index 00000000000..d3414705659
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/aix-lineno-1b.nd
@@ -0,0 +1,3 @@
+0*10000000 t \.foo
+0*10000014 t \.main
+0*10000014 T \.main
diff --git a/ld/testsuite/ld-powerpc/aix52.exp b/ld/testsuite/ld-powerpc/aix52.exp
index 247b2d1ae4a..2178316fa13 100644
--- a/ld/testsuite/ld-powerpc/aix52.exp
+++ b/ld/testsuite/ld-powerpc/aix52.exp
@@ -64,6 +64,10 @@ proc run_aix_test { size name ldopts asopts sources tools output } {
$output]]
}
+foreach file { "aix-lineno-1.txt" } {
+ remote_upload host "$srcdir/$subdir/$file" "tmpdir/$file"
+}
+
set aix52tests {
{"Absolute branch test 1"
"-shared -bI:aix-abs-branch-1.im -bE:aix-abs-branch-1.ex"
@@ -98,6 +102,16 @@ set aix52tests {
{{objdump {-D -j.text -j.data} aix-glink-1-SIZE.dd}}
"aix-glink-1.so"}
+ {"Line number test 1 (no discards)" "-e.main"
+ "" {aix-lineno-1.s}
+ {{objdump -dS aix-lineno-1a.dd} {nm {} aix-lineno-1a.nd}}
+ "aix-lineno-1a.exe"}
+
+ {"Line number test 1 (discard locals)" "-e.main -x"
+ "" {aix-lineno-1.s}
+ {{objdump -dS aix-lineno-1b.dd} {nm {} aix-lineno-1b.nd}}
+ "aix-lineno-1b.exe"}
+
{"TOC test 1" "-shared -bE:aix-toc-1.ex"
"" {aix-toc-1a.s aix-toc-1b.s}
{{objdump -dr aix-toc-1-SIZE.dd}}