objdump: Add configure time option to enable colored disassembly output by default.
authorNick Clifton <nickc@redhat.com>
Mon, 31 Oct 2022 09:35:16 +0000 (09:35 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 31 Oct 2022 09:35:16 +0000 (09:35 +0000)
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.

binutils/ChangeLog
binutils/NEWS
binutils/config.in
binutils/configure
binutils/configure.ac
binutils/doc/binutils.texi
binutils/objdump.c

index 807ac82a02fefd187c30d598e7d57b187acd1877..6c4fa9808e60f37a5cc998ce3bafbdf16024a10b 100644 (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.
index 9ccf401027b17385df11dc78f52a731885edf85b..b4978f590863f7a7c7889ca5079f1a88ef51a3e4 100644 (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
index bee8c07e2f778c39c7dfc5a52abe89001069b877..4d22a80971b80be05201a3b5274a0d76fef2de65 100644 (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
 
index 7a45037a82fe66f612422b7d87eb33be1e223e3d..2e33584e548e9106341564b8aa0f988d989effe6 100755 (executable)
@@ -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
+
+
+
+
+
 
 
 
index 9b75396d07e58c2bdd2d2e0acc8daad5e5697ee9..97789a595197002114619cee3d1b5958eb69a942 100644 (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])
index 6eea08fb91bb6e606cfa5ec64ef66447252ad4c5..2ca114d57749f7b066ff2ce668971b8a2b390bc0 100644 (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.
+
+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.
 
-If this option is not specified then the default is to enable color
-output if displaying to a terminal, but not otherwise.
+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]
index 0825e051ef62bc8b46d5293d1011ac086fad79bd..7630986f59a31f5fff164efeae285b217e3792fa 100644 (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=terminal  Enable disassembler color output if displaying on a terminal. (default)\n"));
+#else
+      fprintf (stream, _("\
+      --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=color Use basic colors in disassembler output.\n\n"));
+      --disassembler-color=on        Enable disassembler color output.\n"));
       fprintf (stream, _("\
-      --disassembler-color=extended-color Use 8-bit colors in disassembler output.\n\n"));
+      --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"));