From: Simon Marchi <simon.marchi@polymtl.ca>
To: Andreas Arnez <arnez@linux.vnet.ibm.com>
Cc: Yao Qi <qiyaoltc@gmail.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH] GDB testsuite: Suppress GCC's colored output
Date: Wed, 09 Aug 2017 10:01:00 -0000 [thread overview]
Message-ID: <1461aead8d4862c5cd995114de5c55dc@polymtl.ca> (raw)
In-Reply-To: <m3mv7929tc.fsf@oc1027705133.ibm.com>
On 2017-08-08 20:28, Andreas Arnez wrote:
> On Fri, Aug 04 2017, Yao Qi wrote:
>
>> Andreas Arnez <arnez@linux.vnet.ibm.com> writes:
>>
>> Hi Andreas,
>>
>>> + # Stop the compiler from producing colored output.
>>> + setenv GCC_COLORS ""
>>> +
>>
>> This doesn't work for remote host.
>
> Hm, what scenario are you referring to? It *does* work with
> "--target_board=native-gdbserver", at least on the system I've tested
> it
> on. And a cross-target config should work as well, right?
I believe Yao meant "host" in the build/host/target sense. The debugger
and compiler you are producing run on the host machine, doing some
compiling/debugging about the target architecture. Let's say you're
working on x86, cross-compiling a GDB that should run on ARM to debug
native programs on ARM. You have
build: x86
host: arm
target: arm
When you run the GDB testsuite, it's on your x86 machine, but the GDB
you built has to run on an ARM board, therefore you will have a remote
host. You would then most likely specify the same host and target
(though they could be different), with --host_board=my-arm-board
--target_board=my-arm-board. The compilation of test cases also happens
on the host, which means it will also be remote. And that's where
unsetting the GCC_COLORS environment variable on the build machine
doesn't help.
>> How about passing option -fno-color-diagnostics to compiler which
>> supports that option? Both gcc (4.9 and later) and clang has this
>> option.
>
> Actually, clang only, AFAIK. And I don't know that there is a
> compatible option between GCC and clang for disabling colored
> diagnostics. Clang's manual page (1) mentions
>
> -f[no-]color-diagnostics
>
> whereas GCC has
>
> -fdiagnostics-color[=WHEN]
> -fno-diagnostics-color
>
> So unless I missed something, we have to handle clang and GCC
> separately.
>
> See below for an alternative patch that tries the GCC option
> "-fdiagnostics-color=never". We could possibly enrich this and try
> clang's "-fno-color-diagnostics" if that fails.
clang actually supports -fdiagnostics-color=never from what I saw, even
though it may not be documented. So we can rely on that.
> * (1) https://clang.llvm.org/docs/UsersManual.html
>
> --
> Andreas
>
>
> Subject: [PATCH v2] GDB testsuite: Suppress GCC's colored output
>
> Newer GCC versions yield colored diagnostic messages by default, which
> may
> be useful when executing GDB interactively from a terminal. But when
> run
> from a GDB test case, the compiler output is written into gdb.log,
> where
> such escape sequences are usually more inhibiting than helpful to the
> evaluation of test results. So this patch suppresses that.
>
> gdb/testsuite/ChangeLog:
>
> * lib/gdb.exp (universal_compile_options): New caching proc.
> (gdb_compile): Suppress GCC's coloring of messages.
> ---
> gdb/testsuite/lib/gdb.exp | 30 +++++++++++++++++++++++++++++-
> 1 file changed, 29 insertions(+), 1 deletion(-)
>
> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index 3d3eaab..51bf848 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -3368,6 +3368,34 @@ proc gdb_wrapper_init { args } {
> set gdb_wrapper_target [current_target_name]
> }
>
> +# Determine options that we always want to pass to the compiler.
> +gdb_caching_proc universal_compile_options {
> + set me "universal_compile_options"
> + set options {}
> +
> + set src [standard_temp_file ccopts[pid].c]
> + set obj [standard_temp_file ccopts[pid].o]
> +
> + gdb_produce_source $src {
> + int foo(void) { return 0; }
> + }
> +
> + # Try an option for disabling colored diagnostics. Some compilers
> + # yield colored diagnostics by default (when run from a tty)
> unless
> + # such an option is specified.
> + set opt "additional_flags=-fdiagnostics-color=never"
> + set lines [target_compile $src $obj object [list "quiet" $opt]]
> + if [string match "" $lines] then {
> + # Seems to have worked; use the option.
> + lappend options $opt
> + }
> + file delete $src
> + file delete $obj
> +
> + verbose "$me: returning $options" 2
> + return $options
> +}
> +
> # Some targets need to always link a special object in. Save its path
> here.
> global gdb_saved_set_unbuffered_mode_obj
> set gdb_saved_set_unbuffered_mode_obj ""
> @@ -3419,7 +3447,7 @@ proc gdb_compile {source dest type options} {
>
> # Add platform-specific options if a shared library was specified
> using
> # "shlib=librarypath" in OPTIONS.
> - set new_options ""
> + set new_options [universal_compile_options]
> set shlib_found 0
> set shlib_load 0
> foreach opt $options {
I have not tried it yet, but at first glance it seems on the right path.
Thanks,
Simon
next prev parent reply other threads:[~2017-08-09 10:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-02 17:35 Andreas Arnez
2017-08-02 20:22 ` Simon Marchi
2017-08-03 11:13 ` Andreas Arnez
[not found] ` <86h8xn3833.fsf@gmail.com>
2017-08-04 12:19 ` Simon Marchi
2017-08-04 13:00 ` Yao Qi
2017-08-08 18:29 ` Andreas Arnez
2017-08-09 10:01 ` Simon Marchi [this message]
2017-08-09 10:29 ` Yao Qi
2017-08-14 18:32 ` Andreas Arnez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1461aead8d4862c5cd995114de5c55dc@polymtl.ca \
--to=simon.marchi@polymtl.ca \
--cc=arnez@linux.vnet.ibm.com \
--cc=gdb-patches@sourceware.org \
--cc=qiyaoltc@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox