From 1c5e64470287c5496a45bc0698b99ce9fd7c60cf Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Sun, 17 Feb 2002 21:38:03 +0000 Subject: [PATCH] * emultempl/mmo.em (mmo_after_open): Don't call _bfd_mmix_check_all_relocs when producing ELF output. --- ld/ChangeLog | 5 +++++ ld/emultempl/mmo.em | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index f56d8059da0..089f441eb3f 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2002-02-17 Hans-Peter Nilsson + + * emultempl/mmo.em (mmo_after_open): Don't call + _bfd_mmix_check_all_relocs when producing ELF output. + 2002-02-15 Richard Henderson * emulparams/elf64alpha.sh (NOP): Adjust for big-endian diff --git a/ld/emultempl/mmo.em b/ld/emultempl/mmo.em index 1a3941d3884..32be230122f 100644 --- a/ld/emultempl/mmo.em +++ b/ld/emultempl/mmo.em @@ -238,12 +238,20 @@ mmo_finish () static void mmo_after_open () { - LANG_FOR_EACH_INPUT_STATEMENT (is) + /* When there's a mismatch between the output format and the emulation + (using weird combinations like "-m mmo --oformat elf64-mmix" for + example), we'd count relocs twice because they'd also be counted + along the usual route for ELF-only linking, which would lead to an + internal accounting error. */ + if (bfd_get_flavour (output_bfd) != bfd_target_elf_flavour) { - if (bfd_get_flavour (is->the_bfd) == bfd_target_elf_flavour - && !_bfd_mmix_check_all_relocs (is->the_bfd, &link_info)) - einfo ("%X%P: Internal problems scanning %B after opening it", - is->the_bfd); + LANG_FOR_EACH_INPUT_STATEMENT (is) + { + if (bfd_get_flavour (is->the_bfd) == bfd_target_elf_flavour + && !_bfd_mmix_check_all_relocs (is->the_bfd, &link_info)) + einfo ("%X%P: Internal problems scanning %B after opening it", + is->the_bfd); + } } } EOF -- 2.30.2