This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Committed: fix some regressions for MMIX due to early fail for -r --relax
- From: Hans-Peter Nilsson <hp at bitrange dot com>
- To: binutils at sourceware dot org
- Cc: nathan at codesourcery dot com
- Date: Tue, 28 Jul 2009 19:52:35 -0400 (EDT)
- Subject: Committed: fix some regressions for MMIX due to early fail for -r --relax
The May change reverted below was mistaken; the function
elf64-mmix.c:mmix_elf_relax_section handles relaxed relocatable links
quite nicely. It really does handle it, not just by returning early.
Actually, --relax is forced on always for this target. That -r works
(with the implicit --relax) is covered in the ld-mmix test-suite,
which should have been readily observable as regressions for that
patch. Alas I have been lax myself in running the binutils
test-suites for MMIX. Perhaps there was also confusion over the
failure of some test-cases involving -r:
...
Running /home/hp/binutils/src/ld/testsuite/ld-gc/gc.exp ...
FAIL: --gc-sections -r without -e
...
Running /home/hp/binutils/src/ld/testsuite/ld-libs/libs.exp ...
FAIL: -l: test
...
An additional "-m elf64-mmix" is required for "-r" to work properly;
else the output is in the mmo object format, which is not relocatable
(causing "-l: test" to fail). Emitting non-relocatable output for -r
by default of course does not make sense, so I'll change it to emit
"elf64-mmix" rather than "mmo" when -r is active. Also, an ENTRY is
mistakenly emitted in the default -r link-script, which causes mismatch
in the expected error message for "--gc-sections -r without -e".
This patch fixes the following regressions (others remaining):
Running /home/hp/binutils/src/ld/testsuite/ld-libs/libs.exp ...
FAIL: -l: test (preparation)
...
Running /home/hp/binutils/src/ld/testsuite/ld-mmix/mmix.exp ...
...
FAIL: ld-mmix/pushjs1r
FAIL: ld-mmix/pushjs2r
FAIL: ld-mmix/pushjs3r
FAIL: ld-mmix/pushjs4r
Committed.
* elf64-mmix.c (mmix_elf_relax_section): Revert 2009-05-27
change. Add note to head comment.
Index: bfd/elf64-mmix.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-mmix.c,v
retrieving revision 1.59
diff -p -u -r1.59 elf64-mmix.c
--- bfd/elf64-mmix.c 27 May 2009 13:31:23 -0000 1.59
+++ bfd/elf64-mmix.c 28 Jul 2009 22:58:08 -0000
@@ -2557,7 +2557,7 @@ mmix_dump_bpo_gregs (link_info, pf)
when the last such reloc is done, an index-array is sorted according to
the values and iterated over to produce register numbers (indexed by 0
from the first allocated register number) and offsets for use in real
- relocation.
+ relocation. (N.B.: Relocatable runs are handled, not just punted.)
PUSHJ stub accounting is also done here.
@@ -2590,10 +2590,6 @@ mmix_elf_relax_section (abfd, sec, link_
/* Assume nothing changes. */
*again = FALSE;
- if (link_info->relocatable)
- (*link_info->callbacks->einfo)
- (_("%P%F: --relax and -r may not be used together\n"));
-
/* We don't have to do anything if this section does not have relocs, or
if this is not a code section. */
if ((sec->flags & SEC_RELOC) == 0
brgds, H-P