From e922bcabdffb3f36677c587e5ff04e90488837b6 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 14 Jan 2011 12:37:17 +0000 Subject: [PATCH] * ldmain.c (main): Flush stdout before and stderr after printing message. * ldmisc.c (einfo): Similarly. * plugin.c (message): Likewise. * emultempl/ppc64elf.em: Likewise. * emultempl/xtensaelf.em: Likewise. * emulparams/elf32mcore.sh: Use einfo rather than printf. * emultempl/beos.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. --- ld/ChangeLog | 13 +++++++++++++ ld/emulparams/elf32mcore.sh | 7 +------ ld/emultempl/beos.em | 6 +----- ld/emultempl/pe.em | 7 +------ ld/emultempl/pep.em | 7 +------ ld/emultempl/ppc64elf.em | 4 +++- ld/emultempl/xtensaelf.em | 2 ++ ld/ldmain.c | 4 +++- ld/ldmisc.c | 4 +++- ld/plugin.c | 4 +++- 10 files changed, 31 insertions(+), 27 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 886207b0e33..7a00e7d14df 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,16 @@ +2011-01-14 Alan Modra + + * ldmain.c (main): Flush stdout before and stderr after printing + message. + * ldmisc.c (einfo): Similarly. + * plugin.c (message): Likewise. + * emultempl/ppc64elf.em: Likewise. + * emultempl/xtensaelf.em: Likewise. + * emulparams/elf32mcore.sh: Use einfo rather than printf. + * emultempl/beos.em: Likewise. + * emultempl/pe.em: Likewise. + * emultempl/pep.em: Likewise. + 2011-01-14 Alan Modra * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh index 60479501bc9..512a9b0f3a7 100644 --- a/ld/emulparams/elf32mcore.sh +++ b/ld/emulparams/elf32mcore.sh @@ -49,11 +49,6 @@ PARSE_AND_LIST_ARGS_CASES=' case OPTION_BASE_FILE: link_info.base_file = fopen (optarg, FOPEN_WB); if (link_info.base_file == NULL) - { - /* xgettext:c-format */ - fprintf (stderr, _("%s: Cannot open base file %s\n"), - program_name, optarg); - xexit (1); - } + einfo (_("%F%P: cannot open base file %s\n"), optarg); break; ' diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em index 708a2a9d3b7..6dc63754160 100644 --- a/ld/emultempl/beos.em +++ b/ld/emultempl/beos.em @@ -270,11 +270,7 @@ gld${EMULATION_NAME}_handle_option (int optc) case OPTION_BASE_FILE: link_info.base_file = fopen (optarg, FOPEN_WB); if (link_info.base_file == NULL) - { - fprintf (stderr, "%s: Can't open base file %s\n", - program_name, optarg); - xexit (1); - } + einfo (_("%F%P: cannot open base file %s\n"), optarg); break; /* PE options */ diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em index 0231fa77a7a..a3e4cddabf5 100644 --- a/ld/emultempl/pe.em +++ b/ld/emultempl/pe.em @@ -688,12 +688,7 @@ gld${EMULATION_NAME}_handle_option (int optc) case OPTION_BASE_FILE: link_info.base_file = fopen (optarg, FOPEN_WB); if (link_info.base_file == NULL) - { - /* xgettext:c-format */ - fprintf (stderr, _("%s: Can't open base file %s\n"), - program_name, optarg); - xexit (1); - } + einfo (_("%F%P: cannot open base file %s\n"), optarg); break; /* PE options. */ diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em index 56687d673ea..a307c143500 100644 --- a/ld/emultempl/pep.em +++ b/ld/emultempl/pep.em @@ -611,12 +611,7 @@ gld${EMULATION_NAME}_handle_option (int optc) case OPTION_BASE_FILE: link_info.base_file = fopen (optarg, FOPEN_WB); if (link_info.base_file == NULL) - { - /* xgettext:c-format */ - fprintf (stderr, _("%s: Can't open base file %s\n"), - program_name, optarg); - xexit (1); - } + einfo (_("%F%P: cannot open base file %s\n"), optarg); break; /* PE options. */ diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em index cb8e7841e8d..0c995920f4e 100644 --- a/ld/emultempl/ppc64elf.em +++ b/ld/emultempl/ppc64elf.em @@ -1,5 +1,5 @@ # This shell script emits a C file. -*- C -*- -# Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +# Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # Free Software Foundation, Inc. # # This file is part of the GNU Binutils. @@ -545,6 +545,7 @@ gld${EMULATION_NAME}_finish (void) config.stats ? &msg : NULL)) einfo ("%X%P: can not build stubs: %E\n"); + fflush (stdout); for (line = msg; line != NULL; line = endline) { endline = strchr (line, '\n'); @@ -552,6 +553,7 @@ gld${EMULATION_NAME}_finish (void) *endline++ = '\0'; fprintf (stderr, "%s: %s\n", program_name, line); } + fflush (stderr); if (msg != NULL) free (msg); } diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em index ed015a23c6a..b37a67b2fe7 100644 --- a/ld/emultempl/xtensaelf.em +++ b/ld/emultempl/xtensaelf.em @@ -1817,8 +1817,10 @@ ld_local_file_relocations_fit (lang_statement_union_type *statement, bfd_vma target_addr = e->tgt->output_offset & ~3; if (l32r_addr < target_addr) { + fflush (stdout); fprintf (stderr, "Warning: " "l32r target section before l32r\n"); + fflush (stderr); return FALSE; } diff --git a/ld/ldmain.c b/ld/ldmain.c index 5530dcaed1f..19c42d98ac3 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -1,6 +1,6 @@ /* Main program of GNU linker. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Written by Steve Chamberlain steve@cygnus.com @@ -551,12 +551,14 @@ main (int argc, char **argv) #endif long run_time = get_run_time () - start_time; + fflush (stdout); fprintf (stderr, _("%s: total time in link: %ld.%06ld\n"), program_name, run_time / 1000000, run_time % 1000000); #ifdef HAVE_SBRK fprintf (stderr, _("%s: data size %ld\n"), program_name, (long) (lim - (char *) &environ)); #endif + fflush (stderr); } /* Prevent remove_output from doing anything, after a successful link. */ diff --git a/ld/ldmisc.c b/ld/ldmisc.c index 74baa985839..369580001d0 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -1,6 +1,6 @@ /* ldmisc.c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support. @@ -440,9 +440,11 @@ einfo (const char *fmt, ...) { va_list arg; + fflush (stdout); va_start (arg, fmt); vfinfo (stderr, fmt, arg, TRUE); va_end (arg); + fflush (stderr); } void diff --git a/ld/plugin.c b/ld/plugin.c index 10314a4d485..05379b8e610 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -1,5 +1,5 @@ /* Plugin control for the GNU linker. - Copyright 2010 Free Software Foundation, Inc. + Copyright 2010, 2011 Free Software Foundation, Inc. This file is part of the GNU Binutils. @@ -596,7 +596,9 @@ message (int level, const char *format, ...) char *newfmt = ACONCAT ((level == LDPL_FATAL ? "%P%F: " : "%P%X: ", format, "\n", NULL)); + fflush (stdout); vfinfo (stderr, newfmt, args, TRUE); + fflush (stderr); } break; } -- 2.30.2