aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2022-08-09 14:57:48 +0100
committerNick Clifton <nickc@redhat.com>2022-08-09 14:57:48 +0100
commita88c79b77036e4778e70d62081c3cfd1044bb8e3 (patch)
tree3897a05c5d447fd3d44babc8312e0c8ad7dac417 /binutils
parent80d362484999634e11d2b9f9e6d69e2cd4fdba12 (diff)
downloadbinutils-a88c79b77036e4778e70d62081c3cfd1044bb8e3.zip
binutils-a88c79b77036e4778e70d62081c3cfd1044bb8e3.tar.gz
binutils-a88c79b77036e4778e70d62081c3cfd1044bb8e3.tar.bz2
Default to enabling colored disassembly if output is to a terminal.
PR 29457 * objdump.c (disassembler_color): Change type to an enum. (disassembler_extended_color): Remove. (usage): Update. (objdump_color_for_assembler_style): Update. (main): Update initialisation of disassembler_color. If not initialised via a command line option, set based upon terminal output. * doc/binutils.texi: Update description of disassmbler-color option. * testsuite/binutils-all/arc/objdump.exp: Add --disassembler-color=off option when disassembling. * testsuite/binutils-all/arm/objdump.exp: Likewise.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog16
-rw-r--r--binutils/doc/binutils.texi3
-rw-r--r--binutils/objdump.c67
-rw-r--r--binutils/testsuite/binutils-all/arc/objdump.exp2
-rw-r--r--binutils/testsuite/binutils-all/arm/objdump.exp2
5 files changed, 71 insertions, 19 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 2bf2506..e911f44 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,19 @@
+2022-08-09 Nick Clifton <nickc@redhat.com>
+
+ PR 29457
+ * objdump.c (disassembler_color): Change type to an enum.
+ (disassembler_extended_color): Remove.
+ (usage): Update.
+ (objdump_color_for_assembler_style): Update.
+ (main): Update initialisation of disassembler_color. If not
+ initialised via a command line option, set based upon terminal
+ output.
+ * doc/binutils.texi: Update description of disassmbler-color
+ option.
+ * testsuite/binutils-all/arc/objdump.exp: Add
+ --disassembler-color=off option when disassembling.
+ * testsuite/binutils-all/arm/objdump.exp: Likewise.
+
2022-08-08 Nick Clifton <nickc@redhat.com>
* README-how-to-make-a-release: Add a link to the NEWS files in
diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi
index 81be746..41f38f4 100644
--- a/binutils/doc/binutils.texi
+++ b/binutils/doc/binutils.texi
@@ -2828,6 +2828,9 @@ If it is necessary to disable the @option{--disassembler-color} option
after it has previously been enabled then use
@option{--disassembler-color=off}.
+If this option is not specified then the default is to enable color
+output if displaying to a terminal, but not otherwise.
+
@item -W[lLiaprmfFsoORtUuTgAckK]
@itemx --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]
@include debug.options.texi
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 4076587..08c3354 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -130,8 +130,14 @@ static bool visualize_jumps = false; /* --visualize-jumps. */
static bool color_output = false; /* --visualize-jumps=color. */
static bool extended_color_output = false; /* --visualize-jumps=extended-color. */
static int process_links = false; /* --process-links. */
-static bool disassembler_color = false; /* --disassembler-color=color. */
-static bool disassembler_extended_color = false; /* --disassembler-color=extended-color. */
+
+static enum color_selection
+ {
+ on_if_terminal_output,
+ on, /* --disassembler-color=color. */
+ off, /* --disassembler-color=off. */
+ extended /* --disassembler-color=extended-color. */
+ } disassembler_color = on_if_terminal_output;
static int dump_any_debugging;
static int demangle_flags = DMGL_ANSI | DMGL_PARAMS;
@@ -409,6 +415,8 @@ usage (FILE *stream, int status)
--disassembler-color=off Disable disassembler color output.\n\n"));
fprintf (stream, _("\
--disassembler-color=color Use basic colors in disassembler output.\n\n"));
+ fprintf (stream, _("\
+ --disassembler-color=extended-color Use 8-bit colors in disassembler output.\n\n"));
list_supported_targets (program_name, stream);
list_supported_architectures (program_name, stream);
@@ -2158,44 +2166,66 @@ objdump_color_for_disassembler_style (enum disassembler_style style)
if (style == dis_style_comment_start)
disassembler_in_comment = true;
- if (disassembler_color)
+ if (disassembler_color == on)
{
if (disassembler_in_comment)
return color;
switch (style)
{
- case dis_style_symbol: color = 32; break;
+ case dis_style_symbol:
+ color = 32;
+ break;
case dis_style_assembler_directive:
case dis_style_sub_mnemonic:
- case dis_style_mnemonic: color = 33; break;
- case dis_style_register: color = 34; break;
+ case dis_style_mnemonic:
+ color = 33;
+ break;
+ case dis_style_register:
+ color = 34;
+ break;
case dis_style_address:
case dis_style_address_offset:
- case dis_style_immediate: color = 35; break;
+ case dis_style_immediate:
+ color = 35;
+ break;
default:
- case dis_style_text: color = -1; break;
+ case dis_style_text:
+ color = -1;
+ break;
}
}
- else if (disassembler_extended_color)
+ else if (disassembler_color == extended)
{
if (disassembler_in_comment)
return 250;
switch (style)
{
- case dis_style_symbol: color = 40; break;
+ case dis_style_symbol:
+ color = 40;
+ break;
case dis_style_assembler_directive:
case dis_style_sub_mnemonic:
- case dis_style_mnemonic: color = 142; break;
- case dis_style_register: color = 27; break;
+ case dis_style_mnemonic:
+ color = 142;
+ break;
+ case dis_style_register:
+ color = 27;
+ break;
case dis_style_address:
case dis_style_address_offset:
- case dis_style_immediate: color = 134; break;
+ case dis_style_immediate:
+ color = 134;
+ break;
default:
- case dis_style_text: color = -1; break;
+ case dis_style_text:
+ color = -1;
+ break;
}
}
+ else if (disassembler_color != off)
+ bfd_fatal (_("disassembly color not correctly selected"));
return color;
}
@@ -5683,11 +5713,11 @@ main (int argc, char **argv)
break;
case OPTION_DISASSEMBLER_COLOR:
if (streq (optarg, "off"))
- disassembler_color = false;
+ disassembler_color = off;
else if (streq (optarg, "color"))
- disassembler_color = true;
+ disassembler_color = on;
else if (streq (optarg, "extended-color"))
- disassembler_extended_color = true;
+ disassembler_color = extended;
else
nonfatal (_("unrecognized argument to --disassembler-color"));
break;
@@ -5900,6 +5930,9 @@ main (int argc, char **argv)
}
}
+ if (disassembler_color == on_if_terminal_output)
+ disassembler_color = isatty (1) ? on : off;
+
if (show_version)
print_version ("objdump");
diff --git a/binutils/testsuite/binutils-all/arc/objdump.exp b/binutils/testsuite/binutils-all/arc/objdump.exp
index fe69855..6ade013 100644
--- a/binutils/testsuite/binutils-all/arc/objdump.exp
+++ b/binutils/testsuite/binutils-all/arc/objdump.exp
@@ -56,7 +56,7 @@ proc check_assembly { testname objfile expected { disas_flags "" } } {
fail $testname
return
}
- set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble $disas_flags \
+ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble --disassembler-color=off $disas_flags \
$objfile"]
if [regexp $expected $got] then {
diff --git a/binutils/testsuite/binutils-all/arm/objdump.exp b/binutils/testsuite/binutils-all/arm/objdump.exp
index 059ef1e..9cd057e 100644
--- a/binutils/testsuite/binutils-all/arm/objdump.exp
+++ b/binutils/testsuite/binutils-all/arm/objdump.exp
@@ -41,7 +41,7 @@ if {![binutils_assemble $srcdir/$subdir/thumb2-cond.s tmpdir/thumb2-cond.o]} the
# Make sure that conditional instructions are correctly decoded.
- set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble --start-address=6 $objfile"]
+ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble --disassembler-color=off --start-address=6 $objfile"]
set want "bcc.w\[ \t\]*e12.*bx\[ \t\]*lr"