objdump: Add configure time option to enable colored disassembly output by default.

PR 29457
	* configure.ac: Add --enable-colored-disassembly.
	* objdump.c: Add --disassembler-color=terminal.
	* doc/binutils.texi (objdump): Document the new option.
	* NEWS: Mention new feature.
	* config.in: Regenerate in.
	* configure: Regenerate.
This commit is contained in:
Nick Clifton
2022-10-31 09:35:16 +00:00
parent 0882710510
commit 18bf56434d
7 changed files with 106 additions and 20 deletions

View File

@ -1,3 +1,13 @@
2022-10-31 Nick Clifton <nickc@redhat.com>
PR 29457
* configure.ac: Add --enable-colored-disassembly.
* objdump.c: Add --disassembler-color=terminal.
* doc/binutils.texi (objdump): Document the new option.
* NEWS: Mention new feature.
* config.in: Regenerate in.
* configure: Regenerate.
2022-10-19 Nick Clifton <nickc@redhat.com>
* MAINTAINERS: Add section on patches, copyright and DCO.

View File

@ -1,5 +1,9 @@
-*- text -*-
* Add --enable-colored-disassembly configure time option to enable colored
disassembly output by default, if the output device is a terminal. Note,
this configure option is disabled by default.
* DCO signed contributions are now accepted.
* objcopy --decompress-debug-sections now supports zstd compressed debug

View File

@ -10,6 +10,9 @@
/* Should ar and ranlib use -D behavior by default? */
#undef DEFAULT_AR_DETERMINISTIC
/* Have objdump use colors in its disassembly by default */
#undef DEFAULT_FOR_COLORED_DISASSEMBLY
/* Have readelf and objdump follow debug links by default */
#undef DEFAULT_FOR_FOLLOW_LINKS

30
binutils/configure vendored
View File

@ -827,6 +827,7 @@ enable_deterministic_archives
enable_default_strings_all
enable_f_for_ifunc_symbols
enable_follow_debug_links
enable_colored_disassembly
with_debuginfod
enable_libctf
enable_werror
@ -1504,6 +1505,9 @@ Optional Features:
--enable-follow-debug-links
Have readelf and objdump follow debug links by
default
--enable-colored-disassembly
Have objdump use colors in its disassembly by
default
--enable-libctf Handle .ctf type-info sections [default=yes]
--enable-werror treat compile warnings as errors
--enable-build-warnings enable build-time compiler warnings
@ -10813,7 +10817,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 10816 "configure"
#line 10820 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -10919,7 +10923,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 10922 "configure"
#line 10926 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -11633,6 +11637,28 @@ _ACEOF
# Check whether --enable-colored-disassembly was given.
if test "${enable_colored_disassembly+set}" = set; then :
enableval=$enable_colored_disassembly;
if test "${enableval}" = no; then
default_for_colored_disassembly=0
else
default_for_colored_disassembly=1
fi
else
default_for_colored_disassembly=0
fi
cat >>confdefs.h <<_ACEOF
#define DEFAULT_FOR_COLORED_DISASSEMBLY $default_for_colored_disassembly
_ACEOF

View File

@ -109,6 +109,21 @@ AC_DEFINE_UNQUOTED(DEFAULT_FOR_FOLLOW_LINKS, $default_for_follow_links,
[Have readelf and objdump follow debug links by default])
AC_ARG_ENABLE(colored-disassembly,
[AS_HELP_STRING([--enable-colored-disassembly],
[Have objdump use colors in its disassembly by default])], [
if test "${enableval}" = no; then
default_for_colored_disassembly=0
else
default_for_colored_disassembly=1
fi], [default_for_colored_disassembly=0])
AC_DEFINE_UNQUOTED(DEFAULT_FOR_COLORED_DISASSEMBLY, $default_for_colored_disassembly,
[Have objdump use colors in its disassembly by default])
AC_DEBUGINFOD
GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections])

View File

@ -2282,7 +2282,7 @@ objdump [@option{-a}|@option{--archive-headers}]
[@option{--prefix-strip=}@var{level}]
[@option{--insn-width=}@var{width}]
[@option{--visualize-jumps[=color|=extended-color|=off]}
[@option{--disassembler-color=[color|extended-color|off]}
[@option{--disassembler-color=[off|terminal|on|extended]}
[@option{-U} @var{method}] [@option{--unicode=}@var{method}]
[@option{-V}|@option{--version}]
[@option{-H}|@option{--help}]
@ -2821,18 +2821,26 @@ If it is necessary to disable the @option{visualize-jumps} option
after it has previously been enabled then use
@option{visualize-jumps=off}.
@item --disassembler-color=[color|extended-color|off]
Apply syntax highlighting to the disassembler output. The
@option{color} argument adds color using simple terminal colors.
Alternatively the @option{extended-color} argument will use 8bit
colors, but these might not work on all terminals.
@item --disassembler-color=off
@itemx --disassembler-color=terminal
@itemx --disassembler-color=on|color|colour
@itemx --disassembler-color=extened|extended-color|extened-colour
Enables or disables the use of colored syntax highlighting in
disassembly output. The default behaviour is determined via a
configure time option. Note, not all architectures support colored
syntax highlighting, and depending upon the terminal used, colored
output may not actually be legible.
If it is necessary to disable the @option{--disassembler-color} option
after it has previously been enabled then use
@option{--disassembler-color=off}.
The @option{on} argument adds colors using simple terminal colors.
If this option is not specified then the default is to enable color
output if displaying to a terminal, but not otherwise.
The @option{terminal} argument does the same, but only if the output
device is a terminal.
The @option{extended-color} argument is similar to the @option{on}
argument, but it uses 8-bit colors. These may not work on all
terminals.
The @option{off} argument disables colored disassembly.
@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]

View File

@ -141,7 +141,12 @@ static enum color_selection
on, /* --disassembler-color=color. */
off, /* --disassembler-color=off. */
extended /* --disassembler-color=extended-color. */
} disassembler_color = on_if_terminal_output;
} disassembler_color =
#if DEFAULT_FOR_COLORED_DISASSEMBLY
on_if_terminal_output;
#else
off;
#endif
static int dump_any_debugging;
static int demangle_flags = DMGL_ANSI | DMGL_PARAMS;
@ -414,13 +419,22 @@ usage (FILE *stream, int status)
--visualize-jumps=extended-color\n\
Use extended 8-bit color codes\n"));
fprintf (stream, _("\
--visualize-jumps=off Disable jump visualization\n\n"));
--visualize-jumps=off Disable jump visualization\n"));
#if DEFAULT_FOR_COLORED_DISASSEMBLY
fprintf (stream, _("\
--disassembler-color=off Disable disassembler color output.\n\n"));
--disassembler-color=off Disable disassembler color output.\n"));
fprintf (stream, _("\
--disassembler-color=color Use basic colors in disassembler output.\n\n"));
--disassembler-color=terminal Enable disassembler color output if displaying on a terminal. (default)\n"));
#else
fprintf (stream, _("\
--disassembler-color=extended-color Use 8-bit colors in disassembler output.\n\n"));
--disassembler-color=off Disable disassembler color output. (default)\n"));
fprintf (stream, _("\
--disassembler-color=terminal Enable disassembler color output if displaying on a terminal.\n"));
#endif
fprintf (stream, _("\
--disassembler-color=on Enable disassembler color output.\n"));
fprintf (stream, _("\
--disassembler-color=extended Use 8-bit colors in disassembler output.\n\n"));
list_supported_targets (program_name, stream);
list_supported_architectures (program_name, stream);
@ -5890,9 +5904,15 @@ main (int argc, char **argv)
case OPTION_DISASSEMBLER_COLOR:
if (streq (optarg, "off"))
disassembler_color = off;
else if (streq (optarg, "color"))
else if (streq (optarg, "terminal"))
disassembler_color = on_if_terminal_output;
else if (streq (optarg, "color")
|| streq (optarg, "colour")
|| streq (optarg, "on"))
disassembler_color = on;
else if (streq (optarg, "extended-color"))
else if (streq (optarg, "extended")
|| streq (optarg, "extended-color")
|| streq (optarg, "extended-colour"))
disassembler_color = extended;
else
nonfatal (_("unrecognized argument to --disassembler-color"));