* [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
@ 2010-09-14 23:31 Maciej W. Rozycki
2010-09-18 8:40 ` Richard Sandiford
0 siblings, 1 reply; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-09-14 23:31 UTC (permalink / raw)
To: binutils
Hi,
There is a bug in BFD for MIPS ELF targets that affects symbol processing
by the linker. The prerequisite is a pair objects being linked together
-- a shared object and a relocatable object -- for the purpose of creating
an executable. They have to multiply-define a symbol, which has to be a
regular definition in the shared object and a common one in the
relocatable object. Additionally there has to be a relocation from an
unallocatable (e.g. debug) section referring to the symbol in the
relocatable object.
If a symbol is multiply-defined like this, then the regular definition
should override the common one and the latter should be converted to an
undefined reference. The relocation, if from a debug section, can be
discarded and resolve to nil as the symbol debug records describe is no
longer there; this is what other targets do and also what the MIPS target
did before non-PIC support was added. If not from a debug section, then
other targets complain and fail, because a dynamic relocation cannot work
from an unallocatable section.
What the MIPS target does now is as follows:
1. If copy relocations are enabled, then the common definition is retained
in the relocatable object and the relocation is statically resolved
against it. This invalid symbol definition may be discarded by the
dynamic linker, covering the bug; I have not checked it.
2. If copy relocations are disabled, then the static link fails,
complaining about the inability to convert the relocation to a dynamic
one.
Here is a fix that works for me. Following the practice from other
targets I decided to explicitly check for the SEC_DEBUGGING flag (rather
than SEC_ALLOC). This makes our code work for the two cases mentioned
above as proved by the test case below.
The case of a non-debug non-alloc section is not covered; this is a rare
corner case and I haven't looked into it (not that it shouldn't be fixed).
Tested with the mips-linux-gnu target; generic test cases also tested
with i686-linux-gnu (both with -m32 and with -m64) and powerpc-linux-gnu.
The MIPS-specific test case extends coverage across all the three Linux
ABIs and the two cases of copy relocations being enabled or disabled.
The generic test case covers the default configuration only.
2010-09-15 Maciej W. Rozycki <macro@codesourcery.com>
PR ld/10144
bfd/
* elfxx-mips.c (_bfd_mips_elf_check_relocs)
[R_MIPS_32, R_MIPS_REL32, R_MIPS_64]: Ignore relocs from
SEC_DEBUGGING sections.
ld/testsuite/
* lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
directories.
(run_ld_link_exec_tests): Likewise.
(run_cc_link_tests): Likewise.
* ld-elf/comm-data1.sd: New test.
* ld-elf/comm-data1.s: Source for the new test.
* ld-elf/comm-data2.sd: New test.
* ld-elf/comm-data2.rd: Likewise.
* ld-elf/comm-data2.xd: Likewise.
* ld-elf/comm-data2.s: Source for the new tests.
* ld-elf/comm-data.exp: Run the new tests.
* ld-mips-elf/comm-data.exp: Likewise.
Maciej
binutils-2.20.51-20100914-mips-debug-reloc-3.patch
Index: ld/testsuite/ld-elf/comm-data1.s
===================================================================
--- ld/testsuite/ld-elf/comm-data1.s (revision 0)
+++ ld/testsuite/ld-elf/comm-data1.s (revision 0)
@@ -0,0 +1,6 @@
+ .section .rodata,"a",%progbits
+ .balign 8
+ .globl foo
+ .type foo,%object
+foo:
+ .skip 4, 0
Index: ld/testsuite/ld-elf/comm-data2.xd
===================================================================
--- ld/testsuite/ld-elf/comm-data2.xd (revision 0)
+++ ld/testsuite/ld-elf/comm-data2.xd (revision 0)
@@ -0,0 +1,2 @@
+Hex dump of section '\.debug_foo':
+ +0x0+ +00000000 00000000 00000000 00000000 +\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.
Index: ld/testsuite/ld-elf/comm-data2.s
===================================================================
--- ld/testsuite/ld-elf/comm-data2.s (revision 0)
+++ ld/testsuite/ld-elf/comm-data2.s (revision 0)
@@ -0,0 +1,14 @@
+ .text
+ .globl _start
+ .globl __start
+_start:
+__start:
+ .comm foo, 4, 4
+ .section .debug_foo,"",%progbits
+ .balign 16
+ .ifdef ELF64
+ .8byte foo
+ .else
+ .4byte foo
+ .endif
+ .balign 16
Index: ld/testsuite/ld-elf/comm-data.exp
===================================================================
--- ld/testsuite/ld-elf/comm-data.exp (revision 0)
+++ ld/testsuite/ld-elf/comm-data.exp (revision 0)
@@ -0,0 +1,76 @@
+# Expect script for common symbol override.
+#
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+#
+# Written by Maciej W. Rozycki <macro@codesourcery.com>
+#
+
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ return
+}
+
+# Exclude non-Linux targets; feel free to include your favourite one
+# if you like.
+if ![istarget *-*-linux*] {
+ return
+}
+
+set testname "Common symbol override test"
+
+# Define a global symbol.
+run_ld_link_tests [list \
+ [list \
+ "$testname (auxiliary shared object build)" \
+ "-shared" \
+ "" \
+ { comm-data1.s } \
+ { \
+ { readelf -s comm-data1.sd } \
+ } \
+ "libcomm-data.so" \
+ ] \
+]
+
+# Set the pointer size according to the ELF flavour.
+set AFLAGS ""
+if [is_elf64 "tmpdir/libcomm-data.so"] {
+ append AFLAGS " --defsym ELF64=1"
+}
+
+# Verify that a common symbol has been converted to an undefined
+# reference to the global symbol of the same name defined above
+# and that the debug reference has been dropped.
+run_ld_link_tests [list \
+ [list \
+ "$testname" \
+ "-Ltmpdir -lcomm-data" \
+ "$AFLAGS" \
+ { comm-data2.s } \
+ { \
+ { readelf -s comm-data2.sd } \
+ { readelf -r comm-data2.rd } \
+ { readelf "-x .debug_foo" comm-data2.xd } \
+ } \
+ "comm-data" \
+ ] \
+]
Index: ld/testsuite/ld-elf/comm-data1.sd
===================================================================
--- ld/testsuite/ld-elf/comm-data1.sd (revision 0)
+++ ld/testsuite/ld-elf/comm-data1.sd (revision 0)
@@ -0,0 +1,10 @@
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +[0-9a-f]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo
+#...
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +[0-9a-f]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo
+#pass
Index: ld/testsuite/ld-elf/comm-data2.rd
===================================================================
--- ld/testsuite/ld-elf/comm-data2.rd (revision 0)
+++ ld/testsuite/ld-elf/comm-data2.rd (revision 0)
@@ -0,0 +1 @@
+There are no relocations in this file\.
Index: ld/testsuite/ld-elf/comm-data2.sd
===================================================================
--- ld/testsuite/ld-elf/comm-data2.sd (revision 0)
+++ ld/testsuite/ld-elf/comm-data2.sd (revision 0)
@@ -0,0 +1,10 @@
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +0+ +0 +OBJECT +GLOBAL +DEFAULT +UND +foo
+#...
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +0+ +0 +OBJECT +GLOBAL +DEFAULT +UND +foo
+#pass
Index: ld/testsuite/lib/ld-lib.exp
===================================================================
--- ld/testsuite/lib/ld-lib.exp (revision 297468)
+++ ld/testsuite/lib/ld-lib.exp (working copy)
@@ -1226,11 +1226,12 @@ proc run_ld_link_tests { ldtests } {
# Assemble each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
if { [file extension $src_file] == ".c" } {
- set as_file "tmpdir/[file rootname $src_file].s"
+ set as_file "tmpdir/$fileroot.s"
if ![ld_compile "$CC -S $CFLAGS $cflags" $srcdir/$subdir/$src_file $as_file] {
set is_unresolved 1
break
@@ -1420,7 +1421,8 @@ proc run_ld_link_exec_tests { targets_to
# Assemble each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
# We ignore warnings since some compilers may generate
@@ -1539,7 +1541,8 @@ proc run_cc_link_tests { ldtests } {
# Compile each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
# We ignore warnings since some compilers may generate
Index: ld/testsuite/ld-mips-elf/comm-data.exp
===================================================================
--- ld/testsuite/ld-mips-elf/comm-data.exp (revision 0)
+++ ld/testsuite/ld-mips-elf/comm-data.exp (revision 0)
@@ -0,0 +1,88 @@
+# Expect script for common symbol override, MIPS variation.
+#
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+#
+# Written by Maciej W. Rozycki <macro@codesourcery.com>
+#
+
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ return
+}
+
+# Exclude non-Linux targets; feel free to include your favourite one
+# if you like.
+if ![istarget mips*-*-linux*] {
+ return
+}
+
+proc mips_comm_data_test { abi flag emul reloc } {
+
+ set testname "MIPS $abi/$reloc common symbol override test"
+ set AFLAGS "$flag -EB"
+ set LDFLAGS "-m$emul"
+
+ # Define a global symbol.
+ run_ld_link_tests [list \
+ [list \
+ "$testname (auxiliary shared object build)" \
+ "$LDFLAGS -shared" \
+ "$AFLAGS -call_shared" \
+ { ../ld-elf/comm-data1.s } \
+ { \
+ { readelf -s ../ld-elf/comm-data1.sd } \
+ } \
+ "libmips-$abi-$reloc-comm-data.so" \
+ ] \
+ ]
+
+ # Set the pointer size according to the ABI.
+ if { $abi == "n64" } {
+ append AFLAGS " --defsym ELF64=1"
+ }
+
+ # Verify that a common symbol has been converted to an undefined
+ # reference to the global symbol of the same name defined above
+ # and that the debug reference has been dropped.
+ run_ld_link_tests [list \
+ [list \
+ "$testname" \
+ "$LDFLAGS -z $reloc -Ltmpdir -lmips-$abi-$reloc-comm-data" \
+ "$AFLAGS -call_nonpic" \
+ { ../ld-elf/comm-data2.s } \
+ { \
+ { readelf -s ../ld-elf/comm-data2.sd } \
+ { readelf -r ../ld-elf/comm-data2.rd } \
+ { readelf "-x .debug_foo" ../ld-elf/comm-data2.xd } \
+ } \
+ "mips-$abi-$reloc-comm-data" \
+ ] \
+ ]
+}
+
+set abis { o32 -32 elf32btsmip n32 -n32 elf32btsmipn32 n64 -64 elf64btsmip }
+set relocs { copyreloc nocopyreloc }
+foreach { abi flag emul } $abis {
+ foreach reloc $relocs {
+ mips_comm_data_test $abi $flag $emul $reloc
+ }
+}
Index: bfd/elfxx-mips.c
===================================================================
--- bfd/elfxx-mips.c (revision 297469)
+++ bfd/elfxx-mips.c (working copy)
@@ -7834,6 +7834,19 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
elf_hash_table (info)->dynobj = dynobj = abfd;
break;
}
+ /* Ignore relocs from SEC_DEBUGGING sections because such
+ sections are not SEC_ALLOC and thus ld.so will not process
+ them. Don't set has_static_relocs for the corresponding
+ symbol.
+
+ This is needed in cases such as a global symbol definition
+ in a shared library causing a common symbol from an object
+ file to be converted to an undefined reference. If that
+ happens, then all the relocations against this symbol from
+ SEC_DEBUGGING sections in the object file will resolve to
+ nil. */
+ if ((sec->flags & SEC_DEBUGGING) != 0)
+ break;
/* Fall through. */
default:
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-09-14 23:31 [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic Maciej W. Rozycki
@ 2010-09-18 8:40 ` Richard Sandiford
2010-11-04 15:09 ` Maciej W. Rozycki
0 siblings, 1 reply; 30+ messages in thread
From: Richard Sandiford @ 2010-09-18 8:40 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: binutils
"Maciej W. Rozycki" <macro@codesourcery.com> writes:
> There is a bug in BFD for MIPS ELF targets that affects symbol processing
> by the linker. The prerequisite is a pair objects being linked together
> -- a shared object and a relocatable object -- for the purpose of creating
> an executable. They have to multiply-define a symbol, which has to be a
> regular definition in the shared object and a common one in the
> relocatable object. Additionally there has to be a relocation from an
> unallocatable (e.g. debug) section referring to the symbol in the
> relocatable object.
>
> If a symbol is multiply-defined like this, then the regular definition
> should override the common one and the latter should be converted to an
> undefined reference. The relocation, if from a debug section, can be
> discarded and resolve to nil as the symbol debug records describe is no
> longer there; this is what other targets do and also what the MIPS target
> did before non-PIC support was added. If not from a debug section, then
> other targets complain and fail, because a dynamic relocation cannot work
> from an unallocatable section.
>
> What the MIPS target does now is as follows:
>
> 1. If copy relocations are enabled, then the common definition is retained
> in the relocatable object and the relocation is statically resolved
> against it. This invalid symbol definition may be discarded by the
> dynamic linker, covering the bug; I have not checked it.
>
> 2. If copy relocations are disabled, then the static link fails,
> complaining about the inability to convert the relocation to a dynamic
> one.
>
> Here is a fix that works for me. Following the practice from other
> targets I decided to explicitly check for the SEC_DEBUGGING flag (rather
> than SEC_ALLOC). This makes our code work for the two cases mentioned
> above as proved by the test case below.
>
> The case of a non-debug non-alloc section is not covered; this is a rare
> corner case and I haven't looked into it (not that it shouldn't be fixed).
This is what worries me. The first part of the comment, which I realise
you've taken from elsewhere:
> + /* Ignore relocs from SEC_DEBUGGING sections because such
> + sections are not SEC_ALLOC and thus ld.so will not process
> + them. Don't set has_static_relocs for the corresponding
> + symbol.
> +
> + This is needed in cases such as a global symbol definition
> + in a shared library causing a common symbol from an object
> + file to be converted to an undefined reference. If that
> + happens, then all the relocations against this symbol from
> + SEC_DEBUGGING sections in the object file will resolve to
> + nil. */
> + if ((sec->flags & SEC_DEBUGGING) != 0)
> + break;
> /* Fall through. */
makes it sound like we're doing something that would be acceptable for
all !SEC_ALLOC sections, which then raises the question why we're only
testing SEC_DEBUGGING. If I've understood correctly, we're really
saying something like "We know what debugging sections are for. It's
OK to silently set external addresses to 0: at worst it will impair
the debugging information." I.e. it's _not_ something we can safely
apply to all SEC_ALLOC sections.
There also seems to be the implicit judgement call: "If the only
reference to a symbol is via debugging information, it's not worth
creating a copy reloc for it." That has nothing to do with ld.so;
it's a decision we can make entirely in the static linker. And it's
a perfectly sensible call of course, and maybe the thinking was that
it was so obvious it didn't need to be stated, but still, the comment
seems to gloss over the rationale.
(E.g. with the simple case you're describing:
--------------------------------------------------------------
cat <<EOF >foo.c
int x = 1;
EOF
cat <<EOF >bar.c
int x;
int main (void)
{
return 0;
}
EOF
cat <<EOF >commands
break main
run
print x
EOF
gcc foo.c -o foo.so -shared -g
gcc bar.c foo.so -o bar -g
LD_LIBRARY_PATH=. gdb --batch --command=commands bar
--------------------------------------------------------------
I get:
--------------------------------------------------------------
Breakpoint 1 at 0x4005c8: file bar.c, line 4.
Breakpoint 1, main () at bar.c:4
4 return 0;
/tmp/commands:3: Error in sourced command file:
Cannot access memory at address 0x0
--------------------------------------------------------------
on my x86_64 box. With a copy reloc I'd be able to see "1" instead.)
All of which is fine with me. And even if it wasn't, I wouldn't
suggest MIPS should be different from other targets. It's just that
the comments we're using to justify the code seem a little lacking.
So with all that, the patch is OK, thanks. However, I think you
could change:
.ifdef ELF64
.8byte foo
.else
.4byte foo
.endif
to:
dc.a foo
and avoid the ELF64 symbol. If that fails for any target, I think we
could legitimately say it's a bug in the target and Not Your Fault.
The test certainly looks nicely generic.
Also, in the MIPS test:
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ return
+}
+
+# Exclude non-Linux targets; feel free to include your favourite one
+# if you like.
+if ![istarget mips*-*-linux*] {
+ return
+}
I think we can safely dispense with the first check. I realise you're
doing it for consistency with the target-independent version,
but I wouldn't expect to have to test both of these elsewhere
in ld-mips-elf.
Richard
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-09-18 8:40 ` Richard Sandiford
@ 2010-11-04 15:09 ` Maciej W. Rozycki
2010-11-04 17:28 ` Richard Sandiford
0 siblings, 1 reply; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-11-04 15:09 UTC (permalink / raw)
To: Richard Sandiford; +Cc: binutils
Hi Richard,
Back to this change as I think it would be best fixed before 2.21 is out.
> > There is a bug in BFD for MIPS ELF targets that affects symbol processing
> > by the linker. The prerequisite is a pair objects being linked together
> > -- a shared object and a relocatable object -- for the purpose of creating
> > an executable. They have to multiply-define a symbol, which has to be a
> > regular definition in the shared object and a common one in the
> > relocatable object. Additionally there has to be a relocation from an
> > unallocatable (e.g. debug) section referring to the symbol in the
> > relocatable object.
> >
> > If a symbol is multiply-defined like this, then the regular definition
> > should override the common one and the latter should be converted to an
> > undefined reference. The relocation, if from a debug section, can be
> > discarded and resolve to nil as the symbol debug records describe is no
> > longer there; this is what other targets do and also what the MIPS target
> > did before non-PIC support was added. If not from a debug section, then
> > other targets complain and fail, because a dynamic relocation cannot work
> > from an unallocatable section.
> >
> > What the MIPS target does now is as follows:
> >
> > 1. If copy relocations are enabled, then the common definition is retained
> > in the relocatable object and the relocation is statically resolved
> > against it. This invalid symbol definition may be discarded by the
> > dynamic linker, covering the bug; I have not checked it.
> >
> > 2. If copy relocations are disabled, then the static link fails,
> > complaining about the inability to convert the relocation to a dynamic
> > one.
> >
> > Here is a fix that works for me. Following the practice from other
> > targets I decided to explicitly check for the SEC_DEBUGGING flag (rather
> > than SEC_ALLOC). This makes our code work for the two cases mentioned
> > above as proved by the test case below.
> >
> > The case of a non-debug non-alloc section is not covered; this is a rare
> > corner case and I haven't looked into it (not that it shouldn't be fixed).
>
> This is what worries me. The first part of the comment, which I realise
> you've taken from elsewhere:
>
> > + /* Ignore relocs from SEC_DEBUGGING sections because such
> > + sections are not SEC_ALLOC and thus ld.so will not process
> > + them. Don't set has_static_relocs for the corresponding
> > + symbol.
> > +
> > + This is needed in cases such as a global symbol definition
> > + in a shared library causing a common symbol from an object
> > + file to be converted to an undefined reference. If that
> > + happens, then all the relocations against this symbol from
> > + SEC_DEBUGGING sections in the object file will resolve to
> > + nil. */
> > + if ((sec->flags & SEC_DEBUGGING) != 0)
> > + break;
> > /* Fall through. */
>
> makes it sound like we're doing something that would be acceptable for
> all !SEC_ALLOC sections, which then raises the question why we're only
> testing SEC_DEBUGGING. If I've understood correctly, we're really
> saying something like "We know what debugging sections are for. It's
> OK to silently set external addresses to 0: at worst it will impair
> the debugging information." I.e. it's _not_ something we can safely
> apply to all SEC_ALLOC sections.
Yes, that's what I inferred applies elsewhere. The SEC_ALLOC attribute
is referred to, because it's the lack of it that is causing problems, but
if the SEC_DEBUGGING attribute is set at the same time, then we can avoid
them at a negligible cost.
> There also seems to be the implicit judgement call: "If the only
> reference to a symbol is via debugging information, it's not worth
> creating a copy reloc for it." That has nothing to do with ld.so;
> it's a decision we can make entirely in the static linker. And it's
> a perfectly sensible call of course, and maybe the thinking was that
> it was so obvious it didn't need to be stated, but still, the comment
> seems to gloss over the rationale.
IMHO creating a copy reloc for a read-only data object is the wrong thing
to do too in the first place, as far as I understand copy reloc's
semantics -- the original segment's write protection attribute will not be
carried over to the copy of the symbol (and propagated to the MMU via
mprotect(2) as applicable) as this is not the intended use of the copy
reloc, right?
> (E.g. with the simple case you're describing:
>
> --------------------------------------------------------------
> cat <<EOF >foo.c
> int x = 1;
> EOF
> cat <<EOF >bar.c
> int x;
> int main (void)
> {
> return 0;
> }
> EOF
> cat <<EOF >commands
> break main
> run
> print x
> EOF
> gcc foo.c -o foo.so -shared -g
> gcc bar.c foo.so -o bar -g
> LD_LIBRARY_PATH=. gdb --batch --command=commands bar
> --------------------------------------------------------------
>
> I get:
>
> --------------------------------------------------------------
> Breakpoint 1 at 0x4005c8: file bar.c, line 4.
>
> Breakpoint 1, main () at bar.c:4
> 4 return 0;
> /tmp/commands:3: Error in sourced command file:
> Cannot access memory at address 0x0
> --------------------------------------------------------------
>
> on my x86_64 box. With a copy reloc I'd be able to see "1" instead.)
>
> All of which is fine with me. And even if it wasn't, I wouldn't
> suggest MIPS should be different from other targets. It's just that
> the comments we're using to justify the code seem a little lacking.
Frankly what I would be comfortable with the most is an arrangement where
we would simply discard the corresponding DWARF-2 records altogether. My
understanding is LD is not immediately capable of doing such section
surgery.
> So with all that, the patch is OK, thanks. However, I think you
> could change:
>
> .ifdef ELF64
> .8byte foo
> .else
> .4byte foo
> .endif
>
> to:
>
> dc.a foo
>
> and avoid the ELF64 symbol. If that fails for any target, I think we
> could legitimately say it's a bug in the target and Not Your Fault.
Sneaky! I didn't know about this pseudo-op; I wouldn't mind if such bits
were actually documented, sigh... Is this meant to emit a data entity of
the address size? If so, then it's broken for MIPS/n32 -- it produces a
64-bit relocatable field. Given this obvious failure, how confident do
you feel this directive is reliable across other targets? It looks like a
relatively recent addition to me.
The MIPS/n32 failure may be trivial to fix, but I may not have time
immediately available to look into it. I'll see what I can do though.
> Also, in the MIPS test:
>
> +# Exclude non-ELF targets.
> +if ![is_elf_format] {
> + return
> +}
> +
> +# Exclude non-Linux targets; feel free to include your favourite one
> +# if you like.
> +if ![istarget mips*-*-linux*] {
> + return
> +}
>
> I think we can safely dispense with the first check. I realise you're
> doing it for consistency with the target-independent version,
> but I wouldn't expect to have to test both of these elsewhere
> in ld-mips-elf.
My understanding is the base framework just runs */*.exp from within
ld/testsuite/ and it is the responsibility of the scripts themselves to
filter the targets of concern. Certainly the two preexisting scripts in
ld-mips-elf/ do check for ![is_elf_format] explicitly.
I have updated the comment as well taking your concerns into account.
Please let me know if the new comment -- a bit lengthy, but there you go
-- sounds reasonable to you. I have regression-tested the new change for
the mips-sde-elf target with no problems.
2010-11-04 Maciej W. Rozycki <macro@codesourcery.com>
PR ld/10144
bfd/
* elfxx-mips.c (_bfd_mips_elf_check_relocs)
[R_MIPS_32, R_MIPS_REL32, R_MIPS_64]: Ignore relocs from
SEC_DEBUGGING sections.
ld/testsuite/
* lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
directories.
(run_ld_link_exec_tests): Likewise.
(run_cc_link_tests): Likewise.
* ld-elf/comm-data1.sd: New test.
* ld-elf/comm-data1.s: Source for the new test.
* ld-elf/comm-data2.sd: New test.
* ld-elf/comm-data2.rd: Likewise.
* ld-elf/comm-data2.xd: Likewise.
* ld-elf/comm-data2.s: Source for the new tests.
* ld-elf/comm-data.exp: Run the new tests.
* ld-mips-elf/comm-data.exp: Likewise.
Maciej
binutils-mips-debug-reloc.patch
Index: binutils-fsf-trunk-quilt/bfd/elfxx-mips.c
===================================================================
--- binutils-fsf-trunk-quilt.orig/bfd/elfxx-mips.c 2010-11-04 14:26:19.000000000 +0000
+++ binutils-fsf-trunk-quilt/bfd/elfxx-mips.c 2010-11-04 14:58:41.000000000 +0000
@@ -7583,6 +7583,25 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
elf_hash_table (info)->dynobj = dynobj = abfd;
break;
}
+ /* For sections that are not SEC_ALLOC a copy reloc would be
+ output if possible (implying questionable semantics for
+ read-only data objects) or otherwise the final link would
+ fail as ld.so will not process them and could not therefore
+ handle any outstanding dynamic relocations.
+
+ For such sections that are also SEC_DEBUGGING, we can avoid
+ these problems by simply ignoring any relocs as these
+ sections have a predefined use and we know it is safe to do
+ so.
+
+ This is needed in cases such as a global symbol definition
+ in a shared library causing a common symbol from an object
+ file to be converted to an undefined reference. If that
+ happens, then all the relocations against this symbol from
+ SEC_DEBUGGING sections in the object file will resolve to
+ nil. */
+ if ((sec->flags & SEC_DEBUGGING) != 0)
+ break;
/* Fall through. */
default:
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data.exp 2010-11-04 14:29:17.000000000 +0000
@@ -0,0 +1,70 @@
+# Expect script for common symbol override.
+#
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+#
+# Written by Maciej W. Rozycki <macro@codesourcery.com>
+#
+
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ return
+}
+
+# Exclude non-Linux targets; feel free to include your favourite one
+# if you like.
+if ![istarget *-*-linux*] {
+ return
+}
+
+set testname "Common symbol override test"
+
+# Define a global symbol.
+run_ld_link_tests [list \
+ [list \
+ "$testname (auxiliary shared object build)" \
+ "-shared" \
+ "" \
+ { comm-data1.s } \
+ { \
+ { readelf -s comm-data1.sd } \
+ } \
+ "libcomm-data.so" \
+ ] \
+]
+
+# Verify that a common symbol has been converted to an undefined
+# reference to the global symbol of the same name defined above
+# and that the debug reference has been dropped.
+run_ld_link_tests [list \
+ [list \
+ "$testname" \
+ "-Ltmpdir -lcomm-data" \
+ "" \
+ { comm-data2.s } \
+ { \
+ { readelf -s comm-data2.sd } \
+ { readelf -r comm-data2.rd } \
+ { readelf "-x .debug_foo" comm-data2.xd } \
+ } \
+ "comm-data" \
+ ] \
+]
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.s
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.s 2010-11-04 14:26:44.000000000 +0000
@@ -0,0 +1,6 @@
+ .section .rodata,"a",%progbits
+ .balign 8
+ .globl foo
+ .type foo,%object
+foo:
+ .skip 4, 0
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.sd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.sd 2010-11-04 14:26:44.000000000 +0000
@@ -0,0 +1,10 @@
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +[0-9a-f]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo
+#...
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +[0-9a-f]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo
+#pass
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.rd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.rd 2010-11-04 14:26:44.000000000 +0000
@@ -0,0 +1 @@
+There are no relocations in this file\.
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.s
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.s 2010-11-04 14:29:59.000000000 +0000
@@ -0,0 +1,10 @@
+ .text
+ .globl _start
+ .globl __start
+_start:
+__start:
+ .comm foo, 4, 4
+ .section .debug_foo,"",%progbits
+ .balign 16
+ .dc.a foo
+ .balign 16
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.sd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.sd 2010-11-04 14:26:44.000000000 +0000
@@ -0,0 +1,10 @@
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +0+ +0 +OBJECT +GLOBAL +DEFAULT +UND +foo
+#...
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +0+ +0 +OBJECT +GLOBAL +DEFAULT +UND +foo
+#pass
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.xd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.xd 2010-11-04 14:26:44.000000000 +0000
@@ -0,0 +1,2 @@
+Hex dump of section '\.debug_foo':
+ +0x0+ +00000000 00000000 00000000 00000000 +\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/comm-data.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/comm-data.exp 2010-11-04 14:30:59.000000000 +0000
@@ -0,0 +1,83 @@
+# Expect script for common symbol override, MIPS variation.
+#
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+#
+# Written by Maciej W. Rozycki <macro@codesourcery.com>
+#
+
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ return
+}
+
+# Exclude non-Linux targets; feel free to include your favourite one
+# if you like.
+if ![istarget mips*-*-linux*] {
+ return
+}
+
+proc mips_comm_data_test { abi flag emul reloc } {
+
+ set testname "MIPS $abi/$reloc common symbol override test"
+ set AFLAGS "$flag -EB"
+ set LDFLAGS "-m$emul"
+
+ # Define a global symbol.
+ run_ld_link_tests [list \
+ [list \
+ "$testname (auxiliary shared object build)" \
+ "$LDFLAGS -shared" \
+ "$AFLAGS -call_shared" \
+ { ../ld-elf/comm-data1.s } \
+ { \
+ { readelf -s ../ld-elf/comm-data1.sd } \
+ } \
+ "libmips-$abi-$reloc-comm-data.so" \
+ ] \
+ ]
+
+ # Verify that a common symbol has been converted to an undefined
+ # reference to the global symbol of the same name defined above
+ # and that the debug reference has been dropped.
+ run_ld_link_tests [list \
+ [list \
+ "$testname" \
+ "$LDFLAGS -z $reloc -Ltmpdir -lmips-$abi-$reloc-comm-data" \
+ "$AFLAGS -call_nonpic" \
+ { ../ld-elf/comm-data2.s } \
+ { \
+ { readelf -s ../ld-elf/comm-data2.sd } \
+ { readelf -r ../ld-elf/comm-data2.rd } \
+ { readelf "-x .debug_foo" ../ld-elf/comm-data2.xd } \
+ } \
+ "mips-$abi-$reloc-comm-data" \
+ ] \
+ ]
+}
+
+set abis { o32 -32 elf32btsmip n32 -n32 elf32btsmipn32 n64 -64 elf64btsmip }
+set relocs { copyreloc nocopyreloc }
+foreach { abi flag emul } $abis {
+ foreach reloc $relocs {
+ mips_comm_data_test $abi $flag $emul $reloc
+ }
+}
Index: binutils-fsf-trunk-quilt/ld/testsuite/lib/ld-lib.exp
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/lib/ld-lib.exp 2010-11-04 14:26:19.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/lib/ld-lib.exp 2010-11-04 14:26:44.000000000 +0000
@@ -1266,11 +1266,12 @@ proc run_ld_link_tests { ldtests } {
# Assemble each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
if { [file extension $src_file] == ".c" } {
- set as_file "tmpdir/[file rootname $src_file].s"
+ set as_file "tmpdir/$fileroot.s"
if ![ld_compile "$CC -S $CFLAGS $cflags" $srcdir/$subdir/$src_file $as_file] {
set is_unresolved 1
break
@@ -1476,7 +1477,8 @@ proc run_ld_link_exec_tests { targets_to
# Assemble each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
# We ignore warnings since some compilers may generate
@@ -1595,7 +1597,8 @@ proc run_cc_link_tests { ldtests } {
# Compile each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
# We ignore warnings since some compilers may generate
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-04 15:09 ` Maciej W. Rozycki
@ 2010-11-04 17:28 ` Richard Sandiford
2010-11-04 17:48 ` Maciej W. Rozycki
2010-11-10 17:16 ` Richard Sandiford
0 siblings, 2 replies; 30+ messages in thread
From: Richard Sandiford @ 2010-11-04 17:28 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: binutils
"Maciej W. Rozycki" <macro@codesourcery.com> writes:
>> So with all that, the patch is OK, thanks. However, I think you
>> could change:
>>
>> .ifdef ELF64
>> .8byte foo
>> .else
>> .4byte foo
>> .endif
>>
>> to:
>>
>> dc.a foo
>>
>> and avoid the ELF64 symbol. If that fails for any target, I think we
>> could legitimately say it's a bug in the target and Not Your Fault.
>
> Sneaky! I didn't know about this pseudo-op; I wouldn't mind if such bits
> were actually documented, sigh... Is this meant to emit a data entity of
> the address size? If so, then it's broken for MIPS/n32 -- it produces a
> 64-bit relocatable field. Given this obvious failure, how confident do
> you feel this directive is reliable across other targets? It looks like a
> relatively recent addition to me.
OK, will try to fix that this weekend. I still think dc.a is the
right thing for the test, but see below.
>> Also, in the MIPS test:
>>
>> +# Exclude non-ELF targets.
>> +if ![is_elf_format] {
>> + return
>> +}
>> +
>> +# Exclude non-Linux targets; feel free to include your favourite one
>> +# if you like.
>> +if ![istarget mips*-*-linux*] {
>> + return
>> +}
>>
>> I think we can safely dispense with the first check. I realise you're
>> doing it for consistency with the target-independent version,
>> but I wouldn't expect to have to test both of these elsewhere
>> in ld-mips-elf.
>
> My understanding is the base framework just runs */*.exp from within
> ld/testsuite/ and it is the responsibility of the scripts themselves to
> filter the targets of concern.
Right. My point was that [istarget mips*-*-linux*] => [is_elf_format];
we don't support any non-ELF form of GNU/Linux on MIPS. So I wouldn't
expect to have to check is_elf_format if we're checking the second
condition as well. I'd still like to see that condition removed.
Oh, yeah, much as it pains me to say it: s/favourite/favorite/.
Anyway, the new comment looks good, thanks. Please install the
elfxx-mips.c change now. We can apply the testsuite patch once
the dc.a thing is sorted out.
Richard
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-04 17:28 ` Richard Sandiford
@ 2010-11-04 17:48 ` Maciej W. Rozycki
2010-11-10 17:16 ` Richard Sandiford
1 sibling, 0 replies; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-11-04 17:48 UTC (permalink / raw)
To: Richard Sandiford; +Cc: binutils
On Thu, 4 Nov 2010, Richard Sandiford wrote:
> > My understanding is the base framework just runs */*.exp from within
> > ld/testsuite/ and it is the responsibility of the scripts themselves to
> > filter the targets of concern.
>
> Right. My point was that [istarget mips*-*-linux*] => [is_elf_format];
> we don't support any non-ELF form of GNU/Linux on MIPS. So I wouldn't
> expect to have to check is_elf_format if we're checking the second
> condition as well. I'd still like to see that condition removed.
Good point. This can be added if a need arises from any other targets
added.
> Oh, yeah, much as it pains me to say it: s/favourite/favorite/.
Indeed -- I recall seeing a language convention reference posted to the
list yesterday. As a non-British it may be less of a pain to me, but
still I try to stay consistent with the language I use (I wonder how the
rule is going to play with the style of expression rather than just
spelling, especially when American spelling is mixed with British style).
Oh well... There may be more of such subtleties in some of my outstanding
patches -- I'll try to catch them as I go.
> Anyway, the new comment looks good, thanks. Please install the
> elfxx-mips.c change now. We can apply the testsuite patch once
> the dc.a thing is sorted out.
I am assuming you're trying to minimise the risk of a cross-target
avalanche of failures from the generic test case with the imminent release
in mind; certainly the lone MIPS/n32 misbehaviour (which doesn't trigger a
failure here) cannot justify such an extreme caution.
Thanks for your review; I'm proceeding with the elfxx-mips.c change
straight away.
Maciej
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-04 17:28 ` Richard Sandiford
2010-11-04 17:48 ` Maciej W. Rozycki
@ 2010-11-10 17:16 ` Richard Sandiford
2010-11-10 17:58 ` Maciej W. Rozycki
1 sibling, 1 reply; 30+ messages in thread
From: Richard Sandiford @ 2010-11-10 17:16 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: binutils
Richard Sandiford <rdsandiford@googlemail.com> writes:
> "Maciej W. Rozycki" <macro@codesourcery.com> writes:
>>> So with all that, the patch is OK, thanks. However, I think you
>>> could change:
>>>
>>> .ifdef ELF64
>>> .8byte foo
>>> .else
>>> .4byte foo
>>> .endif
>>>
>>> to:
>>>
>>> dc.a foo
>>>
>>> and avoid the ELF64 symbol. If that fails for any target, I think we
>>> could legitimately say it's a bug in the target and Not Your Fault.
>>
>> Sneaky! I didn't know about this pseudo-op; I wouldn't mind if such bits
>> were actually documented, sigh... Is this meant to emit a data entity of
>> the address size? If so, then it's broken for MIPS/n32 -- it produces a
>> 64-bit relocatable field. Given this obvious failure, how confident do
>> you feel this directive is reliable across other targets? It looks like a
>> relatively recent addition to me.
>
> OK, will try to fix that this weekend. I still think dc.a is the
> right thing for the test, but see below.
So, I looked at it this weekend, and I longer think dc.a is the right
thing for the test. It seemed so well suited, but as you point out,
it's based on the ISA address size rather than the ABI or file
format address size, which probably makes it of limited use. Oh well.
Please go ahead with your original is_elf64 patch, and sorry for the noise.
Richard
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-10 17:16 ` Richard Sandiford
@ 2010-11-10 17:58 ` Maciej W. Rozycki
2010-11-11 0:27 ` Matthias Klose
2010-11-11 10:11 ` Richard Sandiford
0 siblings, 2 replies; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-11-10 17:58 UTC (permalink / raw)
To: Richard Sandiford; +Cc: binutils
On Wed, 10 Nov 2010, Richard Sandiford wrote:
> > OK, will try to fix that this weekend. I still think dc.a is the
> > right thing for the test, but see below.
>
> So, I looked at it this weekend, and I longer think dc.a is the right
> thing for the test. It seemed so well suited, but as you point out,
> it's based on the ISA address size rather than the ABI or file
> format address size, which probably makes it of limited use. Oh well.
I agreed with you .dc.a is the right approach and have only been
concerned about the correctness of the implementation for MIPS targets or
elsewhere.
Given your consideration I have just now looked into it as well and it
looks to me our MIPS target should simply override TC_ADDRESS_BYTES with
its own function that will return 8 for the n64 ABI and the EABI and 4
with all the other ABIs (I reckon o64 assumes 32-bit addresses too,
correct?), or the currently selected ISA-implied address size if no ABI
has been selected, such as with the ECOFF targets -- we have that logic
implemented elsewhere already, so the return value of function should
reduce to an expression along the lines of (4 << HAVE_64BIT_ADDRESSES).
The existence of the macro itself suggests this is something that was
intended for some platforms to do with the original implementation even
though no target makes such an override at the moment.
Or do you have a documentation reference for .dc.a that claims it should
behave otherwise? Where have these .dc.* pseudo-ops come from anyway?
We seem to have collected plenty of various directives providing
overlapping functionality with confusingly subtle semantics differences,
sigh...
And while at it I have noticed the #ifdef TC_ADDRESS_BYTES clauses
throughout gas/read.c are rather pointless as the file defines the macro
if not already present. Was there a specific reason to have them? If
not, then I'll make a patch to remove them. There's also related dead
code in gas/config/tc-cr16.c -- not sure what to do about it.
> Please go ahead with your original is_elf64 patch, and sorry for the noise.
I'd rather fixed .dc.a, sorry. As this is not something critical for
2.21, let me defer it until I'm done with the next (I dare not say "last")
iteration of the microMIPS change.
Maciej
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-10 17:58 ` Maciej W. Rozycki
@ 2010-11-11 0:27 ` Matthias Klose
2010-11-11 1:44 ` Maciej W. Rozycki
2010-11-11 10:11 ` Richard Sandiford
1 sibling, 1 reply; 30+ messages in thread
From: Matthias Klose @ 2010-11-11 0:27 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: Richard Sandiford, binutils
On 10.11.2010 18:57, Maciej W. Rozycki wrote:
> On Wed, 10 Nov 2010, Richard Sandiford wrote:
> I'd rather fixed .dc.a, sorry. As this is not something critical for
> 2.21, let me defer it until I'm done with the next (I dare not say "last")
> iteration of the microMIPS change.
hmm, according to the debian mips maintainers this patch was needed to fix some
build failures (in 2.20). I'd like to see this in 2.21, if possible.
Matthias
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-11 0:27 ` Matthias Klose
@ 2010-11-11 1:44 ` Maciej W. Rozycki
0 siblings, 0 replies; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-11-11 1:44 UTC (permalink / raw)
To: Matthias Klose; +Cc: Richard Sandiford, binutils
On Thu, 11 Nov 2010, Matthias Klose wrote:
> > I'd rather fixed .dc.a, sorry. As this is not something critical for
> > 2.21, let me defer it until I'm done with the next (I dare not say "last")
> > iteration of the microMIPS change.
>
> hmm, according to the debian mips maintainers this patch was needed to fix
> some build failures (in 2.20). I'd like to see this in 2.21, if possible.
The bug fix itself went in as recorded in the PR; we're discussing issues
related to the complementing testsuite additions. These are of course
good to have (additions, not issues, that is ;) ), but their absence does
not impact the fix itself. And now that the 2.21 branch has been created
switching its contents into the maintenance mode, no future changes
applied should cause the fix to regress, so the lack of a test case on the
branch is probably negligible.
As the new generic test case included with the changes discussed may
possibly trigger failures for other targets, I think it'll be best applied
to trunk only and any fallout sorted out there, with any fixes possibly
backported to 2.21 if deemed appropriate.
I hope this clears the situation a bit -- let me know otherwise.
Maciej
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-10 17:58 ` Maciej W. Rozycki
2010-11-11 0:27 ` Matthias Klose
@ 2010-11-11 10:11 ` Richard Sandiford
2010-11-12 17:39 ` Maciej W. Rozycki
1 sibling, 1 reply; 30+ messages in thread
From: Richard Sandiford @ 2010-11-11 10:11 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: binutils
"Maciej W. Rozycki" <macro@codesourcery.com> writes:
> On Wed, 10 Nov 2010, Richard Sandiford wrote:
>
>> > OK, will try to fix that this weekend. I still think dc.a is the
>> > right thing for the test, but see below.
>>
>> So, I looked at it this weekend, and I longer think dc.a is the right
>> thing for the test. It seemed so well suited, but as you point out,
>> it's based on the ISA address size rather than the ABI or file
>> format address size, which probably makes it of limited use. Oh well.
>
> I agreed with you .dc.a is the right approach and have only been
> concerned about the correctness of the implementation for MIPS targets or
> elsewhere.
>
> Given your consideration I have just now looked into it as well and it
> looks to me our MIPS target should simply override TC_ADDRESS_BYTES with
> its own function that will return 8 for the n64 ABI and the EABI and 4
> with all the other ABIs (I reckon o64 assumes 32-bit addresses too,
> correct?), or the currently selected ISA-implied address size if no ABI
> has been selected, such as with the ECOFF targets -- we have that logic
> implemented elsewhere already, so the return value of function should
> reduce to an expression along the lines of (4 << HAVE_64BIT_ADDRESSES).
> The existence of the macro itself suggests this is something that was
> intended for some platforms to do with the original implementation even
> though no target makes such an override at the moment.
>
> Or do you have a documentation reference for .dc.a that claims it should
> behave otherwise?
Well, the point is: this kind of situation is by no means exclusive
to MIPS. Plenty of other targets allow 64-bit architecturees to use a
32-bit ABI and a 32-bit file format. If .dc.a was supposed to select
the ABI address size, it could/should/would have used other hooks to
get that size. E.g. the code in bfd.c:is32bit would probably have
been a better starting point.
As it stands, .dc.a means the architecture address size for all platforms.
We shouldn't change the meaning on MIPS alone and introduce an inconsistency.
And IMO we shouldn't change the meaning at all, given that the directive
has already been released into the wild. We could of course add a new
directive, but I personally don't think it's worth it. You'd have to
convince another maintainer if you wanted to do that. :-)
Please just go ahead with your original is_elf64 test.
Richard
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-11 10:11 ` Richard Sandiford
@ 2010-11-12 17:39 ` Maciej W. Rozycki
2010-11-15 8:32 ` Alan Modra
0 siblings, 1 reply; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-11-12 17:39 UTC (permalink / raw)
To: Richard Sandiford; +Cc: Alan Modra, binutils
On Thu, 11 Nov 2010, Richard Sandiford wrote:
> > I agreed with you .dc.a is the right approach and have only been
> > concerned about the correctness of the implementation for MIPS targets or
> > elsewhere.
> >
> > Given your consideration I have just now looked into it as well and it
> > looks to me our MIPS target should simply override TC_ADDRESS_BYTES with
> > its own function that will return 8 for the n64 ABI and the EABI and 4
> > with all the other ABIs (I reckon o64 assumes 32-bit addresses too,
> > correct?), or the currently selected ISA-implied address size if no ABI
> > has been selected, such as with the ECOFF targets -- we have that logic
> > implemented elsewhere already, so the return value of function should
> > reduce to an expression along the lines of (4 << HAVE_64BIT_ADDRESSES).
> > The existence of the macro itself suggests this is something that was
> > intended for some platforms to do with the original implementation even
> > though no target makes such an override at the moment.
> >
> > Or do you have a documentation reference for .dc.a that claims it should
> > behave otherwise?
>
> Well, the point is: this kind of situation is by no means exclusive
> to MIPS. Plenty of other targets allow 64-bit architecturees to use a
> 32-bit ABI and a 32-bit file format. If .dc.a was supposed to select
> the ABI address size, it could/should/would have used other hooks to
> get that size. E.g. the code in bfd.c:is32bit would probably have
> been a better starting point.
Maybe, maybe not. This piece doesn't seem to be used particularly
extensively and we have many 64-bit targets that support a 32-bit ABI, so
internally they must have come up with their own ways of determining the
size of the address, just as we did with the MIPS target.
> As it stands, .dc.a means the architecture address size for all platforms.
> We shouldn't change the meaning on MIPS alone and introduce an inconsistency.
> And IMO we shouldn't change the meaning at all, given that the directive
> has already been released into the wild. We could of course add a new
> directive, but I personally don't think it's worth it. You'd have to
> convince another maintainer if you wanted to do that. :-)
OK, cc-ed Alan Modra, the original offender. ;) Perhaps he'll be able to
provide input about the directive and its origins.
I stand by what I stated. The pseudo-op has been out, but it's broken
and useless for an ILP32 ABI running on a 64-bit target. There's no
notion of a 64-bit address for such targets, and they need not even
provide a 64-bit reloc that the pseudo-op requires. We happen to have
such a reloc in our n32 backend, but frankly I have no idea what it was
added for -- perhaps anticipating this directive. ;)
Anyone relying on the current implementation of .dc.a on such a target
should have filed a bug in the first place and I don't think we are
obligated to provide bug compatibility for such obvious problems. I
suspect the knowledge of this pseudo-op is limited and hardly anybody uses
it, mainly because it's not documented in the GAS manual (I doubt anyone
seriously considers studying sources for feature discovery), so you're
almost certainly worrying about a scenario the probability of which is
epsilon.
Actually the problem with n32 (and the unexpected R_MIPS_64 reloc) is no
psABI has ever been written up; at least I have never heard of such a
document. The closest I know of are SGI's: "MIPSpro N32 ABI Handbook" and
"MIPSpro Assembly Language Programmer's Guide," but they are more
programmer-oriented manuals than proper ELF-level specifications. In the
end my understanding is our implementation has been crafted based on a
combination of the two said manuals, n64's "64-bit ELF Object File
Specification" and o32's "MIPS RISC Processor Supplement" to the SVR4 ABI,
as well as observation of what IRIX tools do.
> Please just go ahead with your original is_elf64 test.
Hmm, I guess we can fix it up if we ever come up with a constructive
conclusion wrt the .dc.a mess.
Maciej
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-12 17:39 ` Maciej W. Rozycki
@ 2010-11-15 8:32 ` Alan Modra
2010-12-07 20:27 ` Maciej W. Rozycki
0 siblings, 1 reply; 30+ messages in thread
From: Alan Modra @ 2010-11-15 8:32 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: Richard Sandiford, binutils
On Fri, Nov 12, 2010 at 05:39:04PM +0000, Maciej W. Rozycki wrote:
> OK, cc-ed Alan Modra, the original offender. ;) Perhaps he'll be able to
> provide input about the directive and its origins.
.dc.a was invented for use in our testsuite. No other use is
supported, which is why it hasn't been documented. I won't stand in
the way of anyone who wants to change mips .dc.a behaviour,
particularly if doing so makes it easier to write generic tests for
mips.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-11-15 8:32 ` Alan Modra
@ 2010-12-07 20:27 ` Maciej W. Rozycki
2010-12-09 21:20 ` Richard Sandiford
0 siblings, 1 reply; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-12-07 20:27 UTC (permalink / raw)
To: Alan Modra, Richard Sandiford; +Cc: binutils
On Mon, 15 Nov 2010, Alan Modra wrote:
> > OK, cc-ed Alan Modra, the original offender. ;) Perhaps he'll be able to
> > provide input about the directive and its origins.
>
> .dc.a was invented for use in our testsuite. No other use is
> supported, which is why it hasn't been documented. I won't stand in
> the way of anyone who wants to change mips .dc.a behaviour,
> particularly if doing so makes it easier to write generic tests for
> mips.
Alan, thanks for the clarification.
Richard, I believe the above explanation clears your concerns. Here's a
change to make .dc.a emit a 32-bit or 64-bit entity as expected:
$ cat comm-data2.s
.text
.globl _start
.globl __start
_start:
__start:
.comm foo, 4, 4
.section .debug_foo,"",%progbits
.balign 16
.dc.a foo
.balign 16
$ mips-sde-elf-objdump -r comm-data2-32.o
comm-data2-32.o: file format elf32-tradbigmips
RELOCATION RECORDS FOR [.debug_foo]:
OFFSET TYPE VALUE
00000000 R_MIPS_32 foo
$ mips-sde-elf-objdump -r comm-data2-n32.o
comm-data2-n32.o: file format elf32-ntradbigmips
RELOCATION RECORDS FOR [.debug_foo]:
OFFSET TYPE VALUE
00000000 R_MIPS_32 foo
$ mips-sde-elf-objdump -r comm-data2-64.o
comm-data2-64.o: file format elf64-tradbigmips
RELOCATION RECORDS FOR [.debug_foo]:
OFFSET TYPE VALUE
0000000000000000 R_MIPS_64 foo
0000000000000000 R_MIPS_NONE *ABS*
0000000000000000 R_MIPS_NONE *ABS*
$
Regression tested with mips-sde-elf and mips-gnu-linux.
2010-12-07 Maciej W. Rozycki <macro@codesourcery.com>
gas/
* config/tc-mips.h (TC_ADDRESS_BYTES): New macro.
(mips_address_bytes): New prototype.
* config/tc-mips.c (mips_address_bytes): New function.
OK to apply?
Maciej
binutils-gas-mips-address-bits.diff
Index: binutils-fsf-trunk-quilt/gas/config/tc-mips.c
===================================================================
--- binutils-fsf-trunk-quilt.orig/gas/config/tc-mips.c 2010-12-07 18:03:09.000000000 +0000
+++ binutils-fsf-trunk-quilt/gas/config/tc-mips.c 2010-12-07 18:21:46.000000000 +0000
@@ -1235,6 +1235,15 @@ static const pseudo_typeS mips_nonecoff_
{ NULL, NULL, 0 },
};
+/* Export the ABI address size for use by TC_ADDRESS_BYTES for the
+ purpose of the `.dc.a' internal pseudo-op. */
+
+int
+mips_address_bytes (void)
+{
+ return HAVE_64BIT_ADDRESSES ? 8 : 4;
+}
+
extern void pop_insert (const pseudo_typeS *);
void
Index: binutils-fsf-trunk-quilt/gas/config/tc-mips.h
===================================================================
--- binutils-fsf-trunk-quilt.orig/gas/config/tc-mips.h 2010-12-07 18:03:09.000000000 +0000
+++ binutils-fsf-trunk-quilt/gas/config/tc-mips.h 2010-12-07 18:13:47.000000000 +0000
@@ -42,6 +42,9 @@ struct expressionS;
#define MAX_RELOC_EXPANSION 3
#define LOCAL_LABELS_FB 1
+#define TC_ADDRESS_BYTES mips_address_bytes
+extern int mips_address_bytes (void);
+
/* Maximum symbol offset that can be encoded in a BFD_RELOC_GPREL16
relocation. */
#define MAX_GPREL_OFFSET (0x7FF0)
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-12-07 20:27 ` Maciej W. Rozycki
@ 2010-12-09 21:20 ` Richard Sandiford
2010-12-10 14:32 ` Maciej W. Rozycki
0 siblings, 1 reply; 30+ messages in thread
From: Richard Sandiford @ 2010-12-09 21:20 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: Alan Modra, binutils
"Maciej W. Rozycki" <macro@codesourcery.com> writes:
> 2010-12-07 Maciej W. Rozycki <macro@codesourcery.com>
>
> gas/
> * config/tc-mips.h (TC_ADDRESS_BYTES): New macro.
> (mips_address_bytes): New prototype.
> * config/tc-mips.c (mips_address_bytes): New function.
OK
Richard
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-12-09 21:20 ` Richard Sandiford
@ 2010-12-10 14:32 ` Maciej W. Rozycki
2010-12-11 10:21 ` Richard Sandiford
0 siblings, 1 reply; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-12-10 14:32 UTC (permalink / raw)
To: Richard Sandiford; +Cc: Alan Modra, binutils
On Thu, 9 Dec 2010, Richard Sandiford wrote:
> > 2010-12-07 Maciej W. Rozycki <macro@codesourcery.com>
> >
> > gas/
> > * config/tc-mips.h (TC_ADDRESS_BYTES): New macro.
> > (mips_address_bytes): New prototype.
> > * config/tc-mips.c (mips_address_bytes): New function.
>
> OK
Thanks, I'll be applying the following change on top of that change then,
unless you have any further concerns.
2010-12-10 Maciej W. Rozycki <macro@codesourcery.com>
PR ld/10144
ld/testsuite/
* lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
directories.
(run_ld_link_exec_tests): Likewise.
(run_cc_link_tests): Likewise.
* ld-elf/comm-data1.sd: New test.
* ld-elf/comm-data1.s: Source for the new test.
* ld-elf/comm-data2.sd: New test.
* ld-elf/comm-data2.rd: Likewise.
* ld-elf/comm-data2.xd: Likewise.
* ld-elf/comm-data2.s: Source for the new tests.
* ld-elf/comm-data.exp: Run the new tests.
* ld-mips-elf/comm-data.exp: Likewise.
Maciej
binutils-20101210-mips-debug-reloc.patch
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data.exp 2010-12-09 02:34:50.000000000 +0000
@@ -0,0 +1,70 @@
+# Expect script for common symbol override.
+#
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+#
+# Written by Maciej W. Rozycki <macro@codesourcery.com>
+#
+
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ return
+}
+
+# Exclude non-Linux targets; feel free to include your favorite one
+# if you like.
+if ![istarget *-*-linux*] {
+ return
+}
+
+set testname "Common symbol override test"
+
+# Define a global symbol.
+run_ld_link_tests [list \
+ [list \
+ "$testname (auxiliary shared object build)" \
+ "-shared" \
+ "" \
+ { comm-data1.s } \
+ { \
+ { readelf -s comm-data1.sd } \
+ } \
+ "libcomm-data.so" \
+ ] \
+]
+
+# Verify that a common symbol has been converted to an undefined
+# reference to the global symbol of the same name defined above
+# and that the debug reference has been dropped.
+run_ld_link_tests [list \
+ [list \
+ "$testname" \
+ "-Ltmpdir -lcomm-data" \
+ "" \
+ { comm-data2.s } \
+ { \
+ { readelf -s comm-data2.sd } \
+ { readelf -r comm-data2.rd } \
+ { readelf "-x .debug_foo" comm-data2.xd } \
+ } \
+ "comm-data" \
+ ] \
+]
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.s
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.s 2010-12-09 02:34:50.000000000 +0000
@@ -0,0 +1,6 @@
+ .section .rodata,"a",%progbits
+ .balign 8
+ .globl foo
+ .type foo,%object
+foo:
+ .skip 4, 0
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.sd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.sd 2010-12-09 02:34:50.000000000 +0000
@@ -0,0 +1,10 @@
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +[0-9a-f]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo
+#...
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +[0-9a-f]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo
+#pass
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.rd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.rd 2010-12-09 02:34:50.000000000 +0000
@@ -0,0 +1 @@
+There are no relocations in this file\.
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.s
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.s 2010-12-09 02:34:50.000000000 +0000
@@ -0,0 +1,10 @@
+ .text
+ .globl _start
+ .globl __start
+_start:
+__start:
+ .comm foo, 4, 4
+ .section .debug_foo,"",%progbits
+ .balign 16
+ .dc.a foo
+ .balign 16
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.sd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.sd 2010-12-09 02:34:50.000000000 +0000
@@ -0,0 +1,10 @@
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +0+ +0 +OBJECT +GLOBAL +DEFAULT +UND +foo
+#...
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +0+ +0 +OBJECT +GLOBAL +DEFAULT +UND +foo
+#pass
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.xd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.xd 2010-12-09 02:34:50.000000000 +0000
@@ -0,0 +1,2 @@
+Hex dump of section '\.debug_foo':
+ +0x0+ +00000000 00000000 00000000 00000000 +\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/comm-data.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/comm-data.exp 2010-12-09 02:34:50.000000000 +0000
@@ -0,0 +1,78 @@
+# Expect script for common symbol override, MIPS variation.
+#
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+#
+# Written by Maciej W. Rozycki <macro@codesourcery.com>
+#
+
+# Exclude non-Linux targets; feel free to include your favorite one
+# if you like.
+if ![istarget mips*-*-linux*] {
+ return
+}
+
+proc mips_comm_data_test { abi flag emul reloc } {
+
+ set testname "MIPS $abi/$reloc common symbol override test"
+ set AFLAGS "$flag -EB"
+ set LDFLAGS "-m$emul"
+
+ # Define a global symbol.
+ run_ld_link_tests [list \
+ [list \
+ "$testname (auxiliary shared object build)" \
+ "$LDFLAGS -shared" \
+ "$AFLAGS -call_shared" \
+ { ../ld-elf/comm-data1.s } \
+ { \
+ { readelf -s ../ld-elf/comm-data1.sd } \
+ } \
+ "libmips-$abi-$reloc-comm-data.so" \
+ ] \
+ ]
+
+ # Verify that a common symbol has been converted to an undefined
+ # reference to the global symbol of the same name defined above
+ # and that the debug reference has been dropped.
+ run_ld_link_tests [list \
+ [list \
+ "$testname" \
+ "$LDFLAGS -z $reloc -Ltmpdir -lmips-$abi-$reloc-comm-data" \
+ "$AFLAGS -call_nonpic" \
+ { ../ld-elf/comm-data2.s } \
+ { \
+ { readelf -s ../ld-elf/comm-data2.sd } \
+ { readelf -r ../ld-elf/comm-data2.rd } \
+ { readelf "-x .debug_foo" ../ld-elf/comm-data2.xd } \
+ } \
+ "mips-$abi-$reloc-comm-data" \
+ ] \
+ ]
+}
+
+set abis { o32 -32 elf32btsmip n32 -n32 elf32btsmipn32 n64 -64 elf64btsmip }
+set relocs { copyreloc nocopyreloc }
+foreach { abi flag emul } $abis {
+ foreach reloc $relocs {
+ mips_comm_data_test $abi $flag $emul $reloc
+ }
+}
Index: binutils-fsf-trunk-quilt/ld/testsuite/lib/ld-lib.exp
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/lib/ld-lib.exp 2010-12-09 02:34:47.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/lib/ld-lib.exp 2010-12-09 02:34:50.000000000 +0000
@@ -961,11 +961,12 @@ proc run_ld_link_tests { ldtests } {
# Assemble each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
if { [file extension $src_file] == ".c" } {
- set as_file "tmpdir/[file rootname $src_file].s"
+ set as_file "tmpdir/$fileroot.s"
if ![ld_compile "$CC -S $CFLAGS $cflags" $srcdir/$subdir/$src_file $as_file] {
set is_unresolved 1
break
@@ -1171,7 +1172,8 @@ proc run_ld_link_exec_tests { targets_to
# Assemble each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
# We ignore warnings since some compilers may generate
@@ -1290,7 +1292,8 @@ proc run_cc_link_tests { ldtests } {
# Compile each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
# We ignore warnings since some compilers may generate
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-12-10 14:32 ` Maciej W. Rozycki
@ 2010-12-11 10:21 ` Richard Sandiford
2010-12-13 16:51 ` Maciej W. Rozycki
0 siblings, 1 reply; 30+ messages in thread
From: Richard Sandiford @ 2010-12-11 10:21 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: Alan Modra, binutils
"Maciej W. Rozycki" <macro@codesourcery.com> writes:
> On Thu, 9 Dec 2010, Richard Sandiford wrote:
>
>> > 2010-12-07 Maciej W. Rozycki <macro@codesourcery.com>
>> >
>> > gas/
>> > * config/tc-mips.h (TC_ADDRESS_BYTES): New macro.
>> > (mips_address_bytes): New prototype.
>> > * config/tc-mips.c (mips_address_bytes): New function.
>>
>> OK
>
> Thanks, I'll be applying the following change on top of that change then,
> unless you have any further concerns.
I think this is likely to break other targets that have 32-bit ABIs
and 64-bit architectures. A general fix along the lines of the
bfd.c:is32bit thing that I mentioned upthread would be needed first.
(That fix would also have worked for your three examples, without
the need for a MIPS-specific patch. The reason I didn't insist
is that a MIPS-specific change is needed for EABI64 (32-bit ELF,
64-bit addresses, ick.).)
Richard
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-12-11 10:21 ` Richard Sandiford
@ 2010-12-13 16:51 ` Maciej W. Rozycki
2011-10-31 12:22 ` Maciej W. Rozycki
0 siblings, 1 reply; 30+ messages in thread
From: Maciej W. Rozycki @ 2010-12-13 16:51 UTC (permalink / raw)
To: Richard Sandiford, M R Swami Reddy; +Cc: Alan Modra, binutils
On Sat, 11 Dec 2010, Richard Sandiford wrote:
> > Thanks, I'll be applying the following change on top of that change then,
> > unless you have any further concerns.
>
> I think this is likely to break other targets that have 32-bit ABIs
> and 64-bit architectures. A general fix along the lines of the
> bfd.c:is32bit thing that I mentioned upthread would be needed first.
TBH I don't think putting a lot of infrastructure into an internal
feature meant for testing only is worth the effort unless proved
otherwise. I propose to include my testcases as is now and then the
respective platform maintainers to implement TC_ADDRESS_BYTES as a need
arises, i.e. someone notices breakage or they feel like looking for work.
We've got around a year until the next release now, so there's plenty of
time to catch any problems and I find the idea of rejecting a test case
because "it may reveal breakage somewhere" backwards, sorry. This is
exactly what test cases are for.
If enough evidence is found this is worth abstracting, then the
bfd.c:is32bit idea you propose may be implemented (though I'd be more
comfortable with a function returning a quantitative result -- there are
undoubtedly addressing submode variations other to 64/32, e.g. 32/16,
24/16, etc.). The TC_ADDRESS_BYTES macro is distinct enough for all the
places to be easily identified at that stage.
As I believe these test cases are good enough in the current form, I will
not make any further development in this area. I'll be happy to commit my
proposal as posted, but otherwise I'll dismiss it -- feel free to pick it
up yourself, share with somebody or discard altogether.
> (That fix would also have worked for your three examples, without
> the need for a MIPS-specific patch. The reason I didn't insist
> is that a MIPS-specific change is needed for EABI64 (32-bit ELF,
> 64-bit addresses, ick.).)
Well, I believe TC_ADDRESS_BYTES is the least of concern with getting the
address size right.
While at it: M R Swami, as the CR16 maintainer would you please have a
look at CR16 implementation of l_cons() in gas/config/tc-cr16.c? This
function refers to TC_ADDRESS_BYTES that is nowhere defined in that
configuration and the .dc.a pseudo-op is therefore likely broken for that
target. I suspect the function has been copied and pasted from gas/read.c
without the bit referring to TC_ADDRESS_BYTES updated accordingly. Thank
you.
Maciej
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2010-12-13 16:51 ` Maciej W. Rozycki
@ 2011-10-31 12:22 ` Maciej W. Rozycki
2011-11-24 20:59 ` Richard Sandiford
` (2 more replies)
0 siblings, 3 replies; 30+ messages in thread
From: Maciej W. Rozycki @ 2011-10-31 12:22 UTC (permalink / raw)
To: Richard Sandiford; +Cc: Alan Modra, binutils
Hi Richard,
On Mon, 13 Dec 2010, Maciej W. Rozycki wrote:
> On Sat, 11 Dec 2010, Richard Sandiford wrote:
>
> > > Thanks, I'll be applying the following change on top of that change then,
> > > unless you have any further concerns.
> >
> > I think this is likely to break other targets that have 32-bit ABIs
> > and 64-bit architectures. A general fix along the lines of the
> > bfd.c:is32bit thing that I mentioned upthread would be needed first.
>
> TBH I don't think putting a lot of infrastructure into an internal
> feature meant for testing only is worth the effort unless proved
> otherwise. I propose to include my testcases as is now and then the
> respective platform maintainers to implement TC_ADDRESS_BYTES as a need
> arises, i.e. someone notices breakage or they feel like looking for work.
> We've got around a year until the next release now, so there's plenty of
> time to catch any problems and I find the idea of rejecting a test case
> because "it may reveal breakage somewhere" backwards, sorry. This is
> exactly what test cases are for.
>
> If enough evidence is found this is worth abstracting, then the
> bfd.c:is32bit idea you propose may be implemented (though I'd be more
> comfortable with a function returning a quantitative result -- there are
> undoubtedly addressing submode variations other to 64/32, e.g. 32/16,
> 24/16, etc.). The TC_ADDRESS_BYTES macro is distinct enough for all the
> places to be easily identified at that stage.
>
> As I believe these test cases are good enough in the current form, I will
> not make any further development in this area. I'll be happy to commit my
> proposal as posted, but otherwise I'll dismiss it -- feel free to pick it
> up yourself, share with somebody or discard altogether.
>
> > (That fix would also have worked for your three examples, without
> > the need for a MIPS-specific patch. The reason I didn't insist
> > is that a MIPS-specific change is needed for EABI64 (32-bit ELF,
> > 64-bit addresses, ick.).)
>
> Well, I believe TC_ADDRESS_BYTES is the least of concern with getting the
> address size right.
Since you've clearly been unconvinced, here's a regenerated version of
the proposal with code switched back to the ELF64 conditional. There's
clearly no point in holding an otherwise useful test case over such an
unimportant detail.
Aside from that and copyright years, ld-mips-elf/comm-data.exp has been
updated to handle a recent change to reject unknown -z options.
Regression re-tested with mips-sde-elf and mips-linux-gnu. OK to apply?
2011-10-31 Maciej W. Rozycki <macro@codesourcery.com>
PR ld/10144
* lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
directories.
(run_ld_link_exec_tests): Likewise.
(run_cc_link_tests): Likewise.
* ld-elf/comm-data1.sd: New test.
* ld-elf/comm-data1.s: Source for the new test.
* ld-elf/comm-data2.sd: New test.
* ld-elf/comm-data2.rd: Likewise.
* ld-elf/comm-data2.xd: Likewise.
* ld-elf/comm-data2.s: Source for the new tests.
* ld-elf/comm-data.exp: Run the new tests.
* ld-mips-elf/comm-data.exp: Likewise.
Maciej
binutils-mips-debug-reloc.patch
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data.exp 2011-10-31 11:51:16.915860689 +0000
@@ -0,0 +1,76 @@
+# Expect script for common symbol override.
+#
+# Copyright 2011 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+#
+# Written by Maciej W. Rozycki <macro@codesourcery.com>
+#
+
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ return
+}
+
+# Exclude non-Linux targets; feel free to include your favorite one
+# if you like.
+if ![istarget *-*-linux*] {
+ return
+}
+
+set testname "Common symbol override test"
+
+# Define a global symbol.
+run_ld_link_tests [list \
+ [list \
+ "$testname (auxiliary shared object build)" \
+ "-shared" \
+ "" \
+ { comm-data1.s } \
+ { \
+ { readelf -s comm-data1.sd } \
+ } \
+ "libcomm-data.so" \
+ ] \
+]
+
+# Set the pointer size according to the ELF flavor.
+set AFLAGS ""
+if [is_elf64 "tmpdir/libcomm-data.so"] {
+ append AFLAGS " --defsym ELF64=1"
+}
+
+# Verify that a common symbol has been converted to an undefined
+# reference to the global symbol of the same name defined above
+# and that the debug reference has been dropped.
+run_ld_link_tests [list \
+ [list \
+ "$testname" \
+ "-Ltmpdir -lcomm-data" \
+ "$AFLAGS" \
+ { comm-data2.s } \
+ { \
+ { readelf -s comm-data2.sd } \
+ { readelf -r comm-data2.rd } \
+ { readelf "-x .debug_foo" comm-data2.xd } \
+ } \
+ "comm-data" \
+ ] \
+]
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.s
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.s 2011-10-31 00:00:00.000000000 +0000
@@ -0,0 +1,6 @@
+ .section .rodata,"a",%progbits
+ .balign 8
+ .globl foo
+ .type foo,%object
+foo:
+ .skip 4, 0
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.sd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data1.sd 2011-10-31 00:00:00.000000000 +0000
@@ -0,0 +1,10 @@
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +[0-9a-f]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo
+#...
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +[0-9a-f]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +foo
+#pass
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.rd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.rd 2011-10-31 00:00:00.000000000 +0000
@@ -0,0 +1 @@
+There are no relocations in this file\.
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.s
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.s 2011-10-31 00:00:00.000000000 +0000
@@ -0,0 +1,14 @@
+ .text
+ .globl _start
+ .globl __start
+_start:
+__start:
+ .comm foo, 4, 4
+ .section .debug_foo,"",%progbits
+ .balign 16
+ .ifdef ELF64
+ .8byte foo
+ .else
+ .4byte foo
+ .endif
+ .balign 16
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.sd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.sd 2011-10-31 00:00:00.000000000 +0000
@@ -0,0 +1,10 @@
+Symbol table '\.dynsym' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +0+ +0 +OBJECT +GLOBAL +DEFAULT +UND +foo
+#...
+Symbol table '\.symtab' contains [0-9]+ entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+#...
+ +[0-9]+: +0+ +0 +OBJECT +GLOBAL +DEFAULT +UND +foo
+#pass
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.xd
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-elf/comm-data2.xd 2011-10-31 00:00:00.000000000 +0000
@@ -0,0 +1,2 @@
+Hex dump of section '\.debug_foo':
+ +0x0+ +00000000 00000000 00000000 00000000 +\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/comm-data.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/comm-data.exp 2011-10-31 11:53:50.935864982 +0000
@@ -0,0 +1,86 @@
+# Expect script for common symbol override, MIPS variation.
+#
+# Copyright 2011 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+#
+# Written by Maciej W. Rozycki <macro@codesourcery.com>
+#
+
+# Exclude non-Linux targets; feel free to include your favorite one
+# if you like.
+if ![istarget mips*-*-linux*] {
+ return
+}
+
+proc mips_comm_data_test { abi flag emul reloc } {
+
+ set testname "MIPS $abi/$reloc common symbol override test"
+
+ # There's no "-z copyreloc" option, deal with it.
+ set ZFLAG [string map [list copyreloc "" nocopyreloc "-z $reloc"] $reloc]
+ set AFLAGS "$flag -EB"
+ set LDFLAGS "-m$emul"
+
+ # Define a global symbol.
+ run_ld_link_tests [list \
+ [list \
+ "$testname (auxiliary shared object build)" \
+ "$LDFLAGS -shared" \
+ "$AFLAGS -call_shared" \
+ { ../ld-elf/comm-data1.s } \
+ { \
+ { readelf -s ../ld-elf/comm-data1.sd } \
+ } \
+ "libmips-$abi-$reloc-comm-data.so" \
+ ] \
+ ]
+
+ # Set the pointer size according to the ABI.
+ if { $abi == "n64" } {
+ append AFLAGS " --defsym ELF64=1"
+ }
+
+ # Verify that a common symbol has been converted to an undefined
+ # reference to the global symbol of the same name defined above
+ # and that the debug reference has been dropped.
+ run_ld_link_tests [list \
+ [list \
+ "$testname" \
+ "$LDFLAGS $ZFLAG -Ltmpdir -lmips-$abi-$reloc-comm-data" \
+ "$AFLAGS -call_nonpic" \
+ { ../ld-elf/comm-data2.s } \
+ { \
+ { readelf -s ../ld-elf/comm-data2.sd } \
+ { readelf -r ../ld-elf/comm-data2.rd } \
+ { readelf "-x .debug_foo" ../ld-elf/comm-data2.xd } \
+ } \
+ "mips-$abi-$reloc-comm-data" \
+ ] \
+ ]
+}
+
+set abis { o32 -32 elf32btsmip n32 -n32 elf32btsmipn32 n64 -64 elf64btsmip }
+set relocs { copyreloc nocopyreloc }
+foreach { abi flag emul } $abis {
+ foreach reloc $relocs {
+ mips_comm_data_test $abi $flag $emul $reloc
+ }
+}
Index: binutils-fsf-trunk-quilt/ld/testsuite/lib/ld-lib.exp
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/lib/ld-lib.exp 2011-10-27 19:48:39.000000000 +0100
+++ binutils-fsf-trunk-quilt/ld/testsuite/lib/ld-lib.exp 2011-10-31 11:50:18.235861872 +0000
@@ -964,11 +964,12 @@ proc run_ld_link_tests { ldtests } {
# Assemble each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
if { [file extension $src_file] == ".c" } {
- set as_file "tmpdir/[file rootname $src_file].s"
+ set as_file "tmpdir/$fileroot.s"
if ![ld_compile "$CC -S $CFLAGS $cflags" $srcdir/$subdir/$src_file $as_file] {
set is_unresolved 1
break
@@ -1162,7 +1163,8 @@ proc run_ld_link_exec_tests { targets_to
# Assemble each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
# We ignore warnings since some compilers may generate
@@ -1284,7 +1286,8 @@ proc run_cc_link_tests { ldtests } {
# Compile each file in the test.
foreach src_file $src_files {
- set objfile "tmpdir/[file rootname $src_file].o"
+ set fileroot "[file rootname [file tail $src_file]]"
+ set objfile "tmpdir/$fileroot.o"
lappend objfiles $objfile
# We ignore warnings since some compilers may generate
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2011-10-31 12:22 ` Maciej W. Rozycki
@ 2011-11-24 20:59 ` Richard Sandiford
2011-11-29 12:43 ` Maciej W. Rozycki
2011-12-01 2:52 ` Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic" Hans-Peter Nilsson
2012-02-15 23:03 ` [PATCH] de-Linuxification Thomas Schwinge
2 siblings, 1 reply; 30+ messages in thread
From: Richard Sandiford @ 2011-11-24 20:59 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: Alan Modra, binutils
"Maciej W. Rozycki" <macro@codesourcery.com> writes:
> 2011-10-31 Maciej W. Rozycki <macro@codesourcery.com>
>
> PR ld/10144
> * lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
> directories.
> (run_ld_link_exec_tests): Likewise.
> (run_cc_link_tests): Likewise.
> * ld-elf/comm-data1.sd: New test.
> * ld-elf/comm-data1.s: Source for the new test.
> * ld-elf/comm-data2.sd: New test.
> * ld-elf/comm-data2.rd: Likewise.
> * ld-elf/comm-data2.xd: Likewise.
> * ld-elf/comm-data2.s: Source for the new tests.
> * ld-elf/comm-data.exp: Run the new tests.
> * ld-mips-elf/comm-data.exp: Likewise.
Looks good, thanks.
Richard
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic
2011-11-24 20:59 ` Richard Sandiford
@ 2011-11-29 12:43 ` Maciej W. Rozycki
0 siblings, 0 replies; 30+ messages in thread
From: Maciej W. Rozycki @ 2011-11-29 12:43 UTC (permalink / raw)
To: Richard Sandiford; +Cc: Alan Modra, binutils
On Thu, 24 Nov 2011, Richard Sandiford wrote:
> > PR ld/10144
> > * lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
> > directories.
> > (run_ld_link_exec_tests): Likewise.
> > (run_cc_link_tests): Likewise.
> > * ld-elf/comm-data1.sd: New test.
> > * ld-elf/comm-data1.s: Source for the new test.
> > * ld-elf/comm-data2.sd: New test.
> > * ld-elf/comm-data2.rd: Likewise.
> > * ld-elf/comm-data2.xd: Likewise.
> > * ld-elf/comm-data2.s: Source for the new tests.
> > * ld-elf/comm-data.exp: Run the new tests.
> > * ld-mips-elf/comm-data.exp: Likewise.
>
> Looks good, thanks.
Applied now, thanks.
Maciej
^ permalink raw reply [flat|nested] 30+ messages in thread
* Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic"
2011-10-31 12:22 ` Maciej W. Rozycki
2011-11-24 20:59 ` Richard Sandiford
@ 2011-12-01 2:52 ` Hans-Peter Nilsson
2011-12-01 8:14 ` Tristan Gingold
2011-12-01 10:46 ` Mikael Pettersson
2012-02-15 23:03 ` [PATCH] de-Linuxification Thomas Schwinge
2 siblings, 2 replies; 30+ messages in thread
From: Hans-Peter Nilsson @ 2011-12-01 2:52 UTC (permalink / raw)
To: binutils; +Cc: gingold
> From: "Maciej W. Rozycki" <macro@codesourcery.com>
> Date: Mon, 31 Oct 2011 13:21:52 +0100
> 2011-10-31 Maciej W. Rozycki <macro@codesourcery.com>
>
> PR ld/10144
> * lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
> directories.
> (run_ld_link_exec_tests): Likewise.
> (run_cc_link_tests): Likewise.
> * ld-elf/comm-data1.sd: New test.
> * ld-elf/comm-data1.s: Source for the new test.
> * ld-elf/comm-data2.sd: New test.
> * ld-elf/comm-data2.rd: Likewise.
> * ld-elf/comm-data2.xd: Likewise.
> * ld-elf/comm-data2.s: Source for the new tests.
> * ld-elf/comm-data.exp: Run the new tests.
> * ld-mips-elf/comm-data.exp: Likewise.
This new test caused the following failure to appear for
cris-axis-linux-gnu:
Running /tmp/hpautotest-binutils/bsrc/src/ld/testsuite/ld-elf/comm-data.exp ...
FAIL: Common symbol override test
...but it turned out to be a target bug, so...thanks, I guess. :)
I see this test fails for m68k-linux too, if someone feels pity
(no listed maintainer).
No regressions tested cris-elf cris-linux.
Can I put this on the 2.22 branch too?
bfd:
* elf32-cris.c (cris_elf_check_relocs) <plt accounting for
R_CRIS_8, R_CRIS_16, and R_CRIS_32>: Move early break for
non-SEC_ALLOC sections before GOT and PLT accounting.
Index: elf32-cris.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-cris.c,v
retrieving revision 1.117
diff -p -u -r1.117 elf32-cris.c
--- elf32-cris.c 19 Oct 2011 07:17:13 -0000 1.117
+++ elf32-cris.c 1 Dec 2011 02:47:49 -0000
@@ -3583,6 +3583,12 @@ cris_elf_check_relocs (bfd *abfd,
sec,
cris_elf_howto_table[r_type].name);
}
+
+ /* We don't need to handle relocs into sections not going into
+ the "real" output. */
+ if ((sec->flags & SEC_ALLOC) == 0)
+ break;
+
if (h != NULL)
{
h->non_got_ref = 1;
@@ -3612,11 +3618,6 @@ cris_elf_check_relocs (bfd *abfd,
if (! info->shared)
break;
- /* We don't need to handle relocs into sections not going into
- the "real" output. */
- if ((sec->flags & SEC_ALLOC) == 0)
- break;
-
/* We may need to create a reloc section in the dynobj and made room
for this reloc. */
if (sreloc == NULL)
brgds, H-P
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic"
2011-12-01 2:52 ` Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic" Hans-Peter Nilsson
@ 2011-12-01 8:14 ` Tristan Gingold
2011-12-01 10:46 ` Mikael Pettersson
1 sibling, 0 replies; 30+ messages in thread
From: Tristan Gingold @ 2011-12-01 8:14 UTC (permalink / raw)
To: Hans-Peter Nilsson; +Cc: binutils
On Dec 1, 2011, at 3:52 AM, Hans-Peter Nilsson wrote:
>> From: "Maciej W. Rozycki" <macro@codesourcery.com>
>> Date: Mon, 31 Oct 2011 13:21:52 +0100
>
>> 2011-10-31 Maciej W. Rozycki <macro@codesourcery.com>
>>
>> PR ld/10144
>> * lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
>> directories.
>> (run_ld_link_exec_tests): Likewise.
>> (run_cc_link_tests): Likewise.
>> * ld-elf/comm-data1.sd: New test.
>> * ld-elf/comm-data1.s: Source for the new test.
>> * ld-elf/comm-data2.sd: New test.
>> * ld-elf/comm-data2.rd: Likewise.
>> * ld-elf/comm-data2.xd: Likewise.
>> * ld-elf/comm-data2.s: Source for the new tests.
>> * ld-elf/comm-data.exp: Run the new tests.
>> * ld-mips-elf/comm-data.exp: Likewise.
>
> This new test caused the following failure to appear for
> cris-axis-linux-gnu:
>
> Running /tmp/hpautotest-binutils/bsrc/src/ld/testsuite/ld-elf/comm-data.exp ...
> FAIL: Common symbol override test
>
> ...but it turned out to be a target bug, so...thanks, I guess. :)
>
> I see this test fails for m68k-linux too, if someone feels pity
> (no listed maintainer).
>
> No regressions tested cris-elf cris-linux.
> Can I put this on the 2.22 branch too?
Sure.
>
> bfd:
> * elf32-cris.c (cris_elf_check_relocs) <plt accounting for
> R_CRIS_8, R_CRIS_16, and R_CRIS_32>: Move early break for
> non-SEC_ALLOC sections before GOT and PLT accounting.
>
> Index: elf32-cris.c
> ===================================================================
> RCS file: /cvs/src/src/bfd/elf32-cris.c,v
> retrieving revision 1.117
> diff -p -u -r1.117 elf32-cris.c
> --- elf32-cris.c 19 Oct 2011 07:17:13 -0000 1.117
> +++ elf32-cris.c 1 Dec 2011 02:47:49 -0000
> @@ -3583,6 +3583,12 @@ cris_elf_check_relocs (bfd *abfd,
> sec,
> cris_elf_howto_table[r_type].name);
> }
> +
> + /* We don't need to handle relocs into sections not going into
> + the "real" output. */
> + if ((sec->flags & SEC_ALLOC) == 0)
> + break;
> +
> if (h != NULL)
> {
> h->non_got_ref = 1;
> @@ -3612,11 +3618,6 @@ cris_elf_check_relocs (bfd *abfd,
> if (! info->shared)
> break;
>
> - /* We don't need to handle relocs into sections not going into
> - the "real" output. */
> - if ((sec->flags & SEC_ALLOC) == 0)
> - break;
> -
> /* We may need to create a reloc section in the dynobj and made room
> for this reloc. */
> if (sreloc == NULL)
>
> brgds, H-P
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic"
2011-12-01 2:52 ` Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic" Hans-Peter Nilsson
2011-12-01 8:14 ` Tristan Gingold
@ 2011-12-01 10:46 ` Mikael Pettersson
2011-12-01 15:52 ` nick clifton
2011-12-02 8:12 ` Tristan Gingold
1 sibling, 2 replies; 30+ messages in thread
From: Mikael Pettersson @ 2011-12-01 10:46 UTC (permalink / raw)
To: Hans-Peter Nilsson; +Cc: binutils, gingold, Andreas Schwab, Maxim Kuvyrkov
Hans-Peter Nilsson writes:
> > From: "Maciej W. Rozycki" <macro@codesourcery.com>
> > Date: Mon, 31 Oct 2011 13:21:52 +0100
>
> > 2011-10-31 Maciej W. Rozycki <macro@codesourcery.com>
> >
> > PR ld/10144
> > * lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
> > directories.
> > (run_ld_link_exec_tests): Likewise.
> > (run_cc_link_tests): Likewise.
> > * ld-elf/comm-data1.sd: New test.
> > * ld-elf/comm-data1.s: Source for the new test.
> > * ld-elf/comm-data2.sd: New test.
> > * ld-elf/comm-data2.rd: Likewise.
> > * ld-elf/comm-data2.xd: Likewise.
> > * ld-elf/comm-data2.s: Source for the new tests.
> > * ld-elf/comm-data.exp: Run the new tests.
> > * ld-mips-elf/comm-data.exp: Likewise.
>
> This new test caused the following failure to appear for
> cris-axis-linux-gnu:
>
> Running /tmp/hpautotest-binutils/bsrc/src/ld/testsuite/ld-elf/comm-data.exp ...
> FAIL: Common symbol override test
>
> ...but it turned out to be a target bug, so...thanks, I guess. :)
>
> I see this test fails for m68k-linux too, if someone feels pity
> (no listed maintainer).
>
> No regressions tested cris-elf cris-linux.
> Can I put this on the 2.22 branch too?
>
> bfd:
> * elf32-cris.c (cris_elf_check_relocs) <plt accounting for
> R_CRIS_8, R_CRIS_16, and R_CRIS_32>: Move early break for
> non-SEC_ALLOC sections before GOT and PLT accounting.
>
> Index: elf32-cris.c
> ===================================================================
> RCS file: /cvs/src/src/bfd/elf32-cris.c,v
> retrieving revision 1.117
> diff -p -u -r1.117 elf32-cris.c
> --- elf32-cris.c 19 Oct 2011 07:17:13 -0000 1.117
> +++ elf32-cris.c 1 Dec 2011 02:47:49 -0000
> @@ -3583,6 +3583,12 @@ cris_elf_check_relocs (bfd *abfd,
> sec,
> cris_elf_howto_table[r_type].name);
> }
> +
> + /* We don't need to handle relocs into sections not going into
> + the "real" output. */
> + if ((sec->flags & SEC_ALLOC) == 0)
> + break;
> +
> if (h != NULL)
> {
> h->non_got_ref = 1;
> @@ -3612,11 +3618,6 @@ cris_elf_check_relocs (bfd *abfd,
> if (! info->shared)
> break;
>
> - /* We don't need to handle relocs into sections not going into
> - the "real" output. */
> - if ((sec->flags & SEC_ALLOC) == 0)
> - break;
> -
> /* We may need to create a reloc section in the dynobj and made room
> for this reloc. */
> if (sreloc == NULL)
>
> brgds, H-P
I've implemented a similar change for elf32-m68k.c which fixes
ld-elf/comm-data.exp for m68k-linux, with no testsuite regressions
on head or the 2.22 release.
As for m68k maintainers, I looked around in recent ChangeLogs,
and both Andreas Schwab and Maxim Kuvyrkov seem likely candidates
so I've added them to the Cc: list.
Ok for head and 2.22 branch?
(If approved I'll need for someone else to do the commits.)
/Mikael
bfd/
2011-12-01 Mikael Pettersson <mikpe@it.uu.se>
* elf32-m68k.c (elf_m68k_check_relocs) <R_68K_8, R68K_16, R_68K_32>: For
non-SEC_ALLOC sections break before GOT and PLT accounting.
--- binutils-2.22.51/bfd/elf32-m68k.c.~1~ 2011-10-19 09:17:14.000000000 +0200
+++ binutils-2.22.51/bfd/elf32-m68k.c 2011-12-01 10:41:31.000000000 +0100
@@ -2816,6 +2816,11 @@ elf_m68k_check_relocs (abfd, info, sec,
case R_68K_8:
case R_68K_16:
case R_68K_32:
+ /* We don't need to handle relocs into sections not going into
+ the "real" output. */
+ if ((sec->flags & SEC_ALLOC) == 0)
+ break;
+
if (h != NULL)
{
/* Make sure a plt entry is created for this symbol if it
@@ -2829,8 +2834,7 @@ elf_m68k_check_relocs (abfd, info, sec,
/* If we are creating a shared library, we need to copy the
reloc into the shared library. */
- if (info->shared
- && (sec->flags & SEC_ALLOC) != 0)
+ if (info->shared)
{
/* When creating a shared object, we must copy these
reloc types into the output file. We create a reloc
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic"
2011-12-01 10:46 ` Mikael Pettersson
@ 2011-12-01 15:52 ` nick clifton
2011-12-02 8:12 ` Tristan Gingold
1 sibling, 0 replies; 30+ messages in thread
From: nick clifton @ 2011-12-01 15:52 UTC (permalink / raw)
To: Mikael Pettersson
Cc: Hans-Peter Nilsson, binutils, gingold, Andreas Schwab, Maxim Kuvyrkov
Hi Mikael,
> 2011-12-01 Mikael Pettersson<mikpe@it.uu.se>
>
> * elf32-m68k.c (elf_m68k_check_relocs)<R_68K_8, R68K_16, R_68K_32>: For
> non-SEC_ALLOC sections break before GOT and PLT accounting.
Approved and applied.
Cheers
Nick
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic"
2011-12-01 10:46 ` Mikael Pettersson
2011-12-01 15:52 ` nick clifton
@ 2011-12-02 8:12 ` Tristan Gingold
2011-12-02 12:12 ` Hans-Peter Nilsson
1 sibling, 1 reply; 30+ messages in thread
From: Tristan Gingold @ 2011-12-02 8:12 UTC (permalink / raw)
To: Mikael Pettersson
Cc: Hans-Peter Nilsson, binutils, Andreas Schwab, Maxim Kuvyrkov
On Dec 1, 2011, at 11:46 AM, Mikael Pettersson wrote:
> Hans-Peter Nilsson writes:
>>> From: "Maciej W. Rozycki" <macro@codesourcery.com>
>>> Date: Mon, 31 Oct 2011 13:21:52 +0100
>>
>>> 2011-10-31 Maciej W. Rozycki <macro@codesourcery.com>
>>>
>>> PR ld/10144
>>> * lib/ld-lib.exp (run_ld_link_tests): Handle sources from other
>>> directories.
>>> (run_ld_link_exec_tests): Likewise.
>>> (run_cc_link_tests): Likewise.
>>> * ld-elf/comm-data1.sd: New test.
>>> * ld-elf/comm-data1.s: Source for the new test.
>>> * ld-elf/comm-data2.sd: New test.
>>> * ld-elf/comm-data2.rd: Likewise.
>>> * ld-elf/comm-data2.xd: Likewise.
>>> * ld-elf/comm-data2.s: Source for the new tests.
>>> * ld-elf/comm-data.exp: Run the new tests.
>>> * ld-mips-elf/comm-data.exp: Likewise.
>>
>> This new test caused the following failure to appear for
>> cris-axis-linux-gnu:
>>
>> Running /tmp/hpautotest-binutils/bsrc/src/ld/testsuite/ld-elf/comm-data.exp ...
>> FAIL: Common symbol override test
>>
>> ...but it turned out to be a target bug, so...thanks, I guess. :)
>>
>> I see this test fails for m68k-linux too, if someone feels pity
>> (no listed maintainer).
>>
>> No regressions tested cris-elf cris-linux.
>> Can I put this on the 2.22 branch too?
Yes.
>>
>> bfd:
>> * elf32-cris.c (cris_elf_check_relocs) <plt accounting for
>> R_CRIS_8, R_CRIS_16, and R_CRIS_32>: Move early break for
>> non-SEC_ALLOC sections before GOT and PLT accounting.
>>
>> Index: elf32-cris.c
>> ===================================================================
>> RCS file: /cvs/src/src/bfd/elf32-cris.c,v
>> retrieving revision 1.117
>> diff -p -u -r1.117 elf32-cris.c
>> --- elf32-cris.c 19 Oct 2011 07:17:13 -0000 1.117
>> +++ elf32-cris.c 1 Dec 2011 02:47:49 -0000
>> @@ -3583,6 +3583,12 @@ cris_elf_check_relocs (bfd *abfd,
>> sec,
>> cris_elf_howto_table[r_type].name);
>> }
>> +
>> + /* We don't need to handle relocs into sections not going into
>> + the "real" output. */
>> + if ((sec->flags & SEC_ALLOC) == 0)
>> + break;
>> +
>> if (h != NULL)
>> {
>> h->non_got_ref = 1;
>> @@ -3612,11 +3618,6 @@ cris_elf_check_relocs (bfd *abfd,
>> if (! info->shared)
>> break;
>>
>> - /* We don't need to handle relocs into sections not going into
>> - the "real" output. */
>> - if ((sec->flags & SEC_ALLOC) == 0)
>> - break;
>> -
>> /* We may need to create a reloc section in the dynobj and made room
>> for this reloc. */
>> if (sreloc == NULL)
>>
>> brgds, H-P
>
> I've implemented a similar change for elf32-m68k.c which fixes
> ld-elf/comm-data.exp for m68k-linux, with no testsuite regressions
> on head or the 2.22 release.
>
> As for m68k maintainers, I looked around in recent ChangeLogs,
> and both Andreas Schwab and Maxim Kuvyrkov seem likely candidates
> so I've added them to the Cc: list.
>
> Ok for head and 2.22 branch?
>
> (If approved I'll need for someone else to do the commits.)
>
> /Mikael
>
>
> bfd/
>
> 2011-12-01 Mikael Pettersson <mikpe@it.uu.se>
>
> * elf32-m68k.c (elf_m68k_check_relocs) <R_68K_8, R68K_16, R_68K_32>: For
> non-SEC_ALLOC sections break before GOT and PLT accounting.
>
> --- binutils-2.22.51/bfd/elf32-m68k.c.~1~ 2011-10-19 09:17:14.000000000 +0200
> +++ binutils-2.22.51/bfd/elf32-m68k.c 2011-12-01 10:41:31.000000000 +0100
> @@ -2816,6 +2816,11 @@ elf_m68k_check_relocs (abfd, info, sec,
> case R_68K_8:
> case R_68K_16:
> case R_68K_32:
> + /* We don't need to handle relocs into sections not going into
> + the "real" output. */
> + if ((sec->flags & SEC_ALLOC) == 0)
> + break;
> +
> if (h != NULL)
> {
> /* Make sure a plt entry is created for this symbol if it
> @@ -2829,8 +2834,7 @@ elf_m68k_check_relocs (abfd, info, sec,
>
> /* If we are creating a shared library, we need to copy the
> reloc into the shared library. */
> - if (info->shared
> - && (sec->flags & SEC_ALLOC) != 0)
> + if (info->shared)
> {
> /* When creating a shared object, we must copy these
> reloc types into the output file. We create a reloc
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic"
2011-12-02 8:12 ` Tristan Gingold
@ 2011-12-02 12:12 ` Hans-Peter Nilsson
2011-12-02 12:50 ` Tristan Gingold
0 siblings, 1 reply; 30+ messages in thread
From: Hans-Peter Nilsson @ 2011-12-02 12:12 UTC (permalink / raw)
To: gingold; +Cc: mikpe, binutils, schwab, maxim
> From: Tristan Gingold <gingold@adacore.com>
> Date: Fri, 2 Dec 2011 09:12:12 +0100
> On Dec 1, 2011, at 11:46 AM, Mikael Pettersson wrote:
>
> > Hans-Peter Nilsson writes:
> >> I see this test fails for m68k-linux too, if someone feels pity
> >> (no listed maintainer).
> >>
> >> No regressions tested cris-elf cris-linux.
> >> Can I put this on the 2.22 branch too?
>
> Yes.
Did you mean to reply to Mikael Pettersson's patch and request
for 2.22? (More likely than replying to me a second time, but
better safe than sorry. :)
Mikael, I don't see you mentioned in copyright.list, so if
unless it's already in progress, I'd suggest you take care of
the GNU copyright assignment paperwork, even if IMHO this
particular patch was a small enough.
> >> bfd:
> >> * elf32-cris.c (cris_elf_check_relocs) <plt accounting for
> >> R_CRIS_8, R_CRIS_16, and R_CRIS_32>: Move early break for
> >> non-SEC_ALLOC sections before GOT and PLT accounting.
> > I've implemented a similar change for elf32-m68k.c which fixes
> > ld-elf/comm-data.exp for m68k-linux, with no testsuite regressions
> > on head or the 2.22 release.
> >
> > As for m68k maintainers, I looked around in recent ChangeLogs,
> > and both Andreas Schwab and Maxim Kuvyrkov seem likely candidates
> > so I've added them to the Cc: list.
> >
> > Ok for head and 2.22 branch?
> > 2011-12-01 Mikael Pettersson <mikpe@it.uu.se>
> >
> > * elf32-m68k.c (elf_m68k_check_relocs) <R_68K_8, R68K_16, R_68K_32>: For
> > non-SEC_ALLOC sections break before GOT and PLT accounting.
brgds, H-P
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic"
2011-12-02 12:12 ` Hans-Peter Nilsson
@ 2011-12-02 12:50 ` Tristan Gingold
2011-12-02 13:39 ` Hans-Peter Nilsson
0 siblings, 1 reply; 30+ messages in thread
From: Tristan Gingold @ 2011-12-02 12:50 UTC (permalink / raw)
To: Hans-Peter Nilsson; +Cc: mikpe, binutils, schwab, maxim
On Dec 2, 2011, at 1:12 PM, Hans-Peter Nilsson wrote:
>> From: Tristan Gingold <gingold@adacore.com>
>> Date: Fri, 2 Dec 2011 09:12:12 +0100
>
>> On Dec 1, 2011, at 11:46 AM, Mikael Pettersson wrote:
>>
>>> Hans-Peter Nilsson writes:
>>>> I see this test fails for m68k-linux too, if someone feels pity
>>>> (no listed maintainer).
>>>>
>>>> No regressions tested cris-elf cris-linux.
>>>> Can I put this on the 2.22 branch too?
>>
>> Yes.
>
> Did you mean to reply to Mikael Pettersson's patch and request
> for 2.22? (More likely than replying to me a second time, but
> better safe than sorry. :)
I ok'ed the backport for 2.22. I can't approve the patch for trunk.
(sorry for not having been clear).
> Mikael, I don't see you mentioned in copyright.list, so if
> unless it's already in progress, I'd suggest you take care of
> the GNU copyright assignment paperwork, even if IMHO this
> particular patch was a small enough.
>
>>>> bfd:
>>>> * elf32-cris.c (cris_elf_check_relocs) <plt accounting for
>>>> R_CRIS_8, R_CRIS_16, and R_CRIS_32>: Move early break for
>>>> non-SEC_ALLOC sections before GOT and PLT accounting.
>
>>> I've implemented a similar change for elf32-m68k.c which fixes
>>> ld-elf/comm-data.exp for m68k-linux, with no testsuite regressions
>>> on head or the 2.22 release.
>>>
>>> As for m68k maintainers, I looked around in recent ChangeLogs,
>>> and both Andreas Schwab and Maxim Kuvyrkov seem likely candidates
>>> so I've added them to the Cc: list.
>>>
>>> Ok for head and 2.22 branch?
>
>>> 2011-12-01 Mikael Pettersson <mikpe@it.uu.se>
>>>
>>> * elf32-m68k.c (elf_m68k_check_relocs) <R_68K_8, R68K_16, R_68K_32>: For
>>> non-SEC_ALLOC sections break before GOT and PLT accounting.
>
> brgds, H-P
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic"
2011-12-02 12:50 ` Tristan Gingold
@ 2011-12-02 13:39 ` Hans-Peter Nilsson
0 siblings, 0 replies; 30+ messages in thread
From: Hans-Peter Nilsson @ 2011-12-02 13:39 UTC (permalink / raw)
To: gingold; +Cc: maxim, mikpe, binutils, schwab
> From: Tristan Gingold <gingold@adacore.com>
> Date: Fri, 2 Dec 2011 13:50:28 +0100
> On Dec 2, 2011, at 1:12 PM, Hans-Peter Nilsson wrote:
> > Did you mean to reply to Mikael Pettersson's patch and request
> > for 2.22? (More likely than replying to me a second time, but
> > better safe than sorry. :)
>
> I ok'ed the backport for 2.22. I can't approve the patch for trunk.
Nick approved and committed it to trunk and I've applied it to
the 2.22-branch now. Thanks.
brgds, H-P
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH] de-Linuxification
2011-10-31 12:22 ` Maciej W. Rozycki
2011-11-24 20:59 ` Richard Sandiford
2011-12-01 2:52 ` Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic" Hans-Peter Nilsson
@ 2012-02-15 23:03 ` Thomas Schwinge
2012-02-20 1:53 ` Alan Modra
2 siblings, 1 reply; 30+ messages in thread
From: Thomas Schwinge @ 2012-02-15 23:03 UTC (permalink / raw)
To: binutils; +Cc: macro
From: Thomas Schwinge <thomas@schwinge.name>
ld/testsuite/
* ld-elf/comm-data.exp: Do not return for GNU systems.
---
ld/testsuite/ld-elf/comm-data.exp | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/ld/testsuite/ld-elf/comm-data.exp b/ld/testsuite/ld-elf/comm-data.exp
index 86e95d1..3bc8484 100644
--- a/ld/testsuite/ld-elf/comm-data.exp
+++ b/ld/testsuite/ld-elf/comm-data.exp
@@ -1,6 +1,6 @@
# Expect script for common symbol override.
#
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011, 2012 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
@@ -29,9 +29,10 @@ if ![is_elf_format] {
return
}
-# Exclude non-Linux targets; feel free to include your favorite one
+# Exclude some more targets; feel free to include your favorite one
# if you like.
-if ![istarget *-*-linux*] {
+if { ![istarget *-*-linux*]
+ && ![istarget *-*-gnu*] } {
return
}
--
tg: (fe30cfd..) t/de-Linuxification (depends on: baseline)
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH] de-Linuxification
2012-02-15 23:03 ` [PATCH] de-Linuxification Thomas Schwinge
@ 2012-02-20 1:53 ` Alan Modra
0 siblings, 0 replies; 30+ messages in thread
From: Alan Modra @ 2012-02-20 1:53 UTC (permalink / raw)
To: Thomas Schwinge; +Cc: binutils, macro
On Thu, Feb 16, 2012 at 12:02:54AM +0100, Thomas Schwinge wrote:
> * ld-elf/comm-data.exp: Do not return for GNU systems.
Applied.
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2012-02-20 1:53 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-14 23:31 [PATCH][PR ld/10144] MIPS/BFD: Don't make debug section relocs dynamic Maciej W. Rozycki
2010-09-18 8:40 ` Richard Sandiford
2010-11-04 15:09 ` Maciej W. Rozycki
2010-11-04 17:28 ` Richard Sandiford
2010-11-04 17:48 ` Maciej W. Rozycki
2010-11-10 17:16 ` Richard Sandiford
2010-11-10 17:58 ` Maciej W. Rozycki
2010-11-11 0:27 ` Matthias Klose
2010-11-11 1:44 ` Maciej W. Rozycki
2010-11-11 10:11 ` Richard Sandiford
2010-11-12 17:39 ` Maciej W. Rozycki
2010-11-15 8:32 ` Alan Modra
2010-12-07 20:27 ` Maciej W. Rozycki
2010-12-09 21:20 ` Richard Sandiford
2010-12-10 14:32 ` Maciej W. Rozycki
2010-12-11 10:21 ` Richard Sandiford
2010-12-13 16:51 ` Maciej W. Rozycki
2011-10-31 12:22 ` Maciej W. Rozycki
2011-11-24 20:59 ` Richard Sandiford
2011-11-29 12:43 ` Maciej W. Rozycki
2011-12-01 2:52 ` Fix CRIS bug exposed by "MIPS/BFD: Don't make debug section relocs dynamic" Hans-Peter Nilsson
2011-12-01 8:14 ` Tristan Gingold
2011-12-01 10:46 ` Mikael Pettersson
2011-12-01 15:52 ` nick clifton
2011-12-02 8:12 ` Tristan Gingold
2011-12-02 12:12 ` Hans-Peter Nilsson
2011-12-02 12:50 ` Tristan Gingold
2011-12-02 13:39 ` Hans-Peter Nilsson
2012-02-15 23:03 ` [PATCH] de-Linuxification Thomas Schwinge
2012-02-20 1:53 ` Alan Modra
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).