readelf and objdump help

Splitting up help strings makes it more likely that at least some of
the help translation survives adding new options.

	* readelf.c (parse_args): Call dwarf_select_sections_all on
	--debug-dump without optarg.
	(usage): Associate -w and --debug-dump options closely.
	Split up help message.  Remove extraneous blank lines around
	ctf help.
	* objdump.c (usage): Similarly.
This commit is contained in:
Alan Modra
2021-05-27 10:21:59 +09:30
parent f006d9e205
commit d6249f5f1c
3 changed files with 254 additions and 132 deletions

View File

@ -1,3 +1,12 @@
2021-05-29 Alan Modra <amodra@gmail.com>
* readelf.c (parse_args): Call dwarf_select_sections_all on
--debug-dump without optarg.
(usage): Associate -w and --debug-dump options closely.
Split up help message. Remove extraneous blank lines around
ctf help.
* objdump.c (usage): Similarly.
2021-05-29 Maciej W. Rozycki <macro@orcam.me.uk> 2021-05-29 Maciej W. Rozycki <macro@orcam.me.uk>
* testsuite/binutils-all/mips/mips-xpa-virt-1.d: Correct CFC0 * testsuite/binutils-all/mips/mips-xpa-virt-1.d: Correct CFC0

View File

@ -213,105 +213,164 @@ usage (FILE *stream, int status)
fprintf (stream, _(" Display information from object <file(s)>.\n")); fprintf (stream, _(" Display information from object <file(s)>.\n"));
fprintf (stream, _(" At least one of the following switches must be given:\n")); fprintf (stream, _(" At least one of the following switches must be given:\n"));
fprintf (stream, _("\ fprintf (stream, _("\
-a, --archive-headers Display archive header information\n\ -a, --archive-headers Display archive header information\n"));
-f, --file-headers Display the contents of the overall file header\n\ fprintf (stream, _("\
-p, --private-headers Display object format specific file header contents\n\ -f, --file-headers Display the contents of the overall file header\n"));
-P, --private=OPT,OPT... Display object format specific contents\n\ fprintf (stream, _("\
-h, --[section-]headers Display the contents of the section headers\n\ -p, --private-headers Display object format specific file header contents\n"));
-x, --all-headers Display the contents of all headers\n\ fprintf (stream, _("\
-d, --disassemble Display assembler contents of executable sections\n\ -P, --private=OPT,OPT... Display object format specific contents\n"));
-D, --disassemble-all Display assembler contents of all sections\n\ fprintf (stream, _("\
--disassemble=<sym> Display assembler contents from <sym>\n\ -h, --[section-]headers Display the contents of the section headers\n"));
-S, --source Intermix source code with disassembly\n\ fprintf (stream, _("\
--source-comment[=<txt>] Prefix lines of source code with <txt>\n\ -x, --all-headers Display the contents of all headers\n"));
-s, --full-contents Display the full contents of all sections requested\n\ fprintf (stream, _("\
-g, --debugging Display debug information in object file\n\ -d, --disassemble Display assembler contents of executable sections\n"));
-e, --debugging-tags Display debug information using ctags style\n\ fprintf (stream, _("\
-G, --stabs Display (in raw form) any STABS info in the file\n\ -D, --disassemble-all Display assembler contents of all sections\n"));
-W[lLiaprmfFsoORtUuTgAck] or\n\ fprintf (stream, _("\
--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n\ --disassemble=<sym> Display assembler contents from <sym>\n"));
=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,\n\ fprintf (stream, _("\
=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,\n\ -S, --source Intermix source code with disassembly\n"));
=addr,=cu_index,=links]\n\ fprintf (stream, _("\
Display DWARF info in the file\n\ --source-comment[=<txt>] Prefix lines of source code with <txt>\n"));
")); fprintf (stream, _("\
-s, --full-contents Display the full contents of all sections requested\n"));
fprintf (stream, _("\
-g, --debugging Display debug information in object file\n"));
fprintf (stream, _("\
-e, --debugging-tags Display debug information using ctags style\n"));
fprintf (stream, _("\
-G, --stabs Display (in raw form) any STABS info in the file\n"));
fprintf (stream, _("\
-W, --dwarf[a/=abbrev, A/=addr, r/=aranges, c/=cu_index, L/=decodedline,\n\
f/=frames, F/=frames-interp, g/=gdb_index, i/=info, o/=loc,\n\
m/=macro, p/=pubnames, t/=pubtypes, R/=Ranges, l/=rawline,\n\
s/=str, O/=str-offsets, u/=trace_abbrev, T/=trace_aranges,\n\
U/=trace_info]\n\
Display the contents of DWARF debug sections\n"));
fprintf (stream, _("\
-Wk,--dwarf=links Display the contents of sections that link to\n\
separate debuginfo files\n"));
#if DEFAULT_FOR_FOLLOW_LINKS #if DEFAULT_FOR_FOLLOW_LINKS
fprintf (stream, _("\ fprintf (stream, _("\
-WK,--dwarf=follow-links Follow links to separate debug info files (default)\n\ -WK,--dwarf=follow-links\
-WN,--dwarf=no-follow-links Do not follow links to separate debug info files\n\ Follow links to separate debug info files (default)\n"));
")); fprintf (stream, _("\
-WN,--dwarf=no-follow-links\
Do not follow links to separate debug info files\n"));
#else #else
fprintf (stream, _("\ fprintf (stream, _("\
-WK,--dwarf=follow-links Follow links to separate debug info files\n\ -WK,--dwarf=follow-links\
-WN,--dwarf=no-follow-links Do not follow links to separate debug info files (default)\n\ Follow links to separate debug info files\n"));
")); fprintf (stream, _("\
-WN,--dwarf=no-follow-links\
Do not follow links to separate debug info files\n\
(default)\n"));
#endif #endif
fprintf (stream, _("\ fprintf (stream, _("\
-L, --process-links Display the contents of non-debug sections in separate debuginfo files.\n\ -L, --process-links Display the contents of non-debug sections in\n\
")); separate debuginfo files. (Implies -WK)\n"));
#ifdef ENABLE_LIBCTF #ifdef ENABLE_LIBCTF
fprintf (stream, _("\ fprintf (stream, _("\
--ctf=SECTION Display CTF info from SECTION\n\ --ctf=SECTION Display CTF info from SECTION\n"));
"));
#endif #endif
fprintf (stream, _("\ fprintf (stream, _("\
-t, --syms Display the contents of the symbol table(s)\n\ -t, --syms Display the contents of the symbol table(s)\n"));
-T, --dynamic-syms Display the contents of the dynamic symbol table\n\ fprintf (stream, _("\
-r, --reloc Display the relocation entries in the file\n\ -T, --dynamic-syms Display the contents of the dynamic symbol table\n"));
-R, --dynamic-reloc Display the dynamic relocation entries in the file\n\ fprintf (stream, _("\
@<file> Read options from <file>\n\ -r, --reloc Display the relocation entries in the file\n"));
-v, --version Display this program's version number\n\ fprintf (stream, _("\
-i, --info List object formats and architectures supported\n\ -R, --dynamic-reloc Display the dynamic relocation entries in the file\n"));
-H, --help Display this information\n\ fprintf (stream, _("\
")); @<file> Read options from <file>\n"));
fprintf (stream, _("\
-v, --version Display this program's version number\n"));
fprintf (stream, _("\
-i, --info List object formats and architectures supported\n"));
fprintf (stream, _("\
-H, --help Display this information\n"));
if (status != 2) if (status != 2)
{ {
const struct objdump_private_desc * const *desc; const struct objdump_private_desc * const *desc;
fprintf (stream, _("\n The following switches are optional:\n")); fprintf (stream, _("\n The following switches are optional:\n"));
fprintf (stream, _("\ fprintf (stream, _("\
-b, --target=BFDNAME Specify the target object format as BFDNAME\n\ -b, --target=BFDNAME Specify the target object format as BFDNAME\n"));
-m, --architecture=MACHINE Specify the target architecture as MACHINE\n\ fprintf (stream, _("\
-j, --section=NAME Only display information for section NAME\n\ -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"));
-M, --disassembler-options=OPT Pass text OPT on to the disassembler\n\ fprintf (stream, _("\
-EB --endian=big Assume big endian format when disassembling\n\ -j, --section=NAME Only display information for section NAME\n"));
-EL --endian=little Assume little endian format when disassembling\n\ fprintf (stream, _("\
--file-start-context Include context from start of file (with -S)\n\ -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"));
-I, --include=DIR Add DIR to search list for source files\n\ fprintf (stream, _("\
-l, --line-numbers Include line numbers and filenames in output\n\ -EB --endian=big Assume big endian format when disassembling\n"));
-F, --file-offsets Include file offsets when displaying information\n\ fprintf (stream, _("\
-EL --endian=little Assume little endian format when disassembling\n"));
fprintf (stream, _("\
--file-start-context Include context from start of file (with -S)\n"));
fprintf (stream, _("\
-I, --include=DIR Add DIR to search list for source files\n"));
fprintf (stream, _("\
-l, --line-numbers Include line numbers and filenames in output\n"));
fprintf (stream, _("\
-F, --file-offsets Include file offsets when displaying information\n"));
fprintf (stream, _("\
-C, --demangle[=STYLE] Decode mangled/processed symbol names\n\ -C, --demangle[=STYLE] Decode mangled/processed symbol names\n\
The STYLE, if specified, can be `auto', `gnu',\n\ The STYLE, if specified, can be `auto', `gnu',\n\
`lucid', `arm', `hp', `edg', `gnu-v3', `java'\n\ `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n\
or `gnat'\n\ or `gnat'\n"));
--recurse-limit Enable a limit on recursion whilst demangling. [Default]\n\ fprintf (stream, _("\
--no-recurse-limit Disable a limit on recursion whilst demangling\n\ --recurse-limit Enable a limit on recursion whilst demangling\n\
-w, --wide Format output for more than 80 columns\n\ (default)\n"));
-z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n\ fprintf (stream, _("\
--start-address=ADDR Only process data whose address is >= ADDR\n\ --no-recurse-limit Disable a limit on recursion whilst demangling\n"));
--stop-address=ADDR Only process data whose address is < ADDR\n\ fprintf (stream, _("\
--no-addresses Do not print address alongside disassembly\n\ -w, --wide Format output for more than 80 columns\n"));
--prefix-addresses Print complete address alongside disassembly\n\ fprintf (stream, _("\
--[no-]show-raw-insn Display hex alongside symbolic disassembly\n\ -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"));
--insn-width=WIDTH Display WIDTH bytes on a single line for -d\n\ fprintf (stream, _("\
--adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n\ --start-address=ADDR Only process data whose address is >= ADDR\n"));
--special-syms Include special symbols in symbol dumps\n\ fprintf (stream, _("\
--inlines Print all inlines for source line (with -l)\n\ --stop-address=ADDR Only process data whose address is < ADDR\n"));
--prefix=PREFIX Add PREFIX to absolute paths for -S\n\ fprintf (stream, _("\
--no-addresses Do not print address alongside disassembly\n"));
fprintf (stream, _("\
--prefix-addresses Print complete address alongside disassembly\n"));
fprintf (stream, _("\
--[no-]show-raw-insn Display hex alongside symbolic disassembly\n"));
fprintf (stream, _("\
--insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"));
fprintf (stream, _("\
--adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"));
fprintf (stream, _("\
--special-syms Include special symbols in symbol dumps\n"));
fprintf (stream, _("\
--inlines Print all inlines for source line (with -l)\n"));
fprintf (stream, _("\
--prefix=PREFIX Add PREFIX to absolute paths for -S\n"));
fprintf (stream, _("\
--prefix-strip=LEVEL Strip initial directory names for -S\n")); --prefix-strip=LEVEL Strip initial directory names for -S\n"));
fprintf (stream, _("\ fprintf (stream, _("\
--dwarf-depth=N Do not display DIEs at depth N or greater\n\ --dwarf-depth=N Do not display DIEs at depth N or greater\n"));
--dwarf-start=N Display DIEs starting with N, at the same depth\n\ fprintf (stream, _("\
or deeper\n\ --dwarf-start=N Display DIEs starting at offset N\n"));
--dwarf-check Make additional dwarf internal consistency checks.\n")); fprintf (stream, _("\
--dwarf-check Make additional dwarf consistency checks.\n"));
#ifdef ENABLE_LIBCTF #ifdef ENABLE_LIBCTF
fprintf (stream, _("\ fprintf (stream, _("\
--ctf-parent=SECTION Use SECTION as the CTF parent\n")); --ctf-parent=SECTION Use SECTION as the CTF parent\n"));
#endif #endif
fprintf (stream, _("\ fprintf (stream, _("\
--visualize-jumps Visualize jumps by drawing ASCII art lines\n\ --visualize-jumps Visualize jumps by drawing ASCII art lines\n"));
--visualize-jumps=color Use colors in the ASCII art\n\ fprintf (stream, _("\
--visualize-jumps=extended-color Use extended 8-bit color codes\n\ --visualize-jumps=color Use colors in the ASCII art\n"));
fprintf (stream, _("\
--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\n"));
list_supported_targets (program_name, stream); list_supported_targets (program_name, stream);

View File

@ -4613,77 +4613,123 @@ usage (FILE * stream)
{ {
fprintf (stream, _("Usage: readelf <option(s)> elf-file(s)\n")); fprintf (stream, _("Usage: readelf <option(s)> elf-file(s)\n"));
fprintf (stream, _(" Display information about the contents of ELF format files\n")); fprintf (stream, _(" Display information about the contents of ELF format files\n"));
fprintf (stream, _(" Options are:\n\ fprintf (stream, _(" Options are:\n"));
-a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n\ fprintf (stream, _("\
-h --file-header Display the ELF file header\n\ -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"));
-l --program-headers Display the program headers\n\ fprintf (stream, _("\
--segments An alias for --program-headers\n\ -h --file-header Display the ELF file header\n"));
-S --section-headers Display the sections' header\n\ fprintf (stream, _("\
--sections An alias for --section-headers\n\ -l --program-headers Display the program headers\n"));
-g --section-groups Display the section groups\n\ fprintf (stream, _("\
-t --section-details Display the section details\n\ --segments An alias for --program-headers\n"));
-e --headers Equivalent to: -h -l -S\n\ fprintf (stream, _("\
-s --syms Display the symbol table\n\ -S --section-headers Display the sections' header\n"));
--symbols An alias for --syms\n\ fprintf (stream, _("\
--dyn-syms Display the dynamic symbol table\n\ --sections An alias for --section-headers\n"));
--lto-syms Display LTO symbol tables\n\ fprintf (stream, _("\
-g --section-groups Display the section groups\n"));
fprintf (stream, _("\
-t --section-details Display the section details\n"));
fprintf (stream, _("\
-e --headers Equivalent to: -h -l -S\n"));
fprintf (stream, _("\
-s --syms Display the symbol table\n"));
fprintf (stream, _("\
--symbols An alias for --syms\n"));
fprintf (stream, _("\
--dyn-syms Display the dynamic symbol table\n"));
fprintf (stream, _("\
--lto-syms Display LTO symbol tables\n"));
fprintf (stream, _("\
--sym-base=[0|8|10|16] \n\ --sym-base=[0|8|10|16] \n\
Force base for symbol sizes. The options are \n\ Force base for symbol sizes. The options are \n\
mixed (the default), octal, decimal, hexadecimal.\n\ mixed (the default), octal, decimal, hexadecimal.\n"));
fprintf (stream, _("\
-C --demangle[=STYLE] Decode low-level symbol names into user-level names\n\ -C --demangle[=STYLE] Decode low-level symbol names into user-level names\n\
The STYLE, if specified, can be `auto' (the default),\n\ The STYLE, if specified, can be `auto' (the default),\n\
`gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n\ `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n\
or `gnat'\n\ or `gnat'\n"));
--no-demangle Do not demangle low-level symbol names. (This is the default)\n\ fprintf (stream, _("\
--recurse-limit Enable a demangling recursion limit. (This is the default)\n\ --no-demangle Do not demangle low-level symbol names. (default)\n"));
--no-recurse-limit Disable a demangling recursion limit\n\ fprintf (stream, _("\
-n --notes Display the core notes (if present)\n\ --recurse-limit Enable a demangling recursion limit. (default)\n"));
-r --relocs Display the relocations (if present)\n\ fprintf (stream, _("\
-u --unwind Display the unwind info (if present)\n\ --no-recurse-limit Disable a demangling recursion limit\n"));
-d --dynamic Display the dynamic section (if present)\n\ fprintf (stream, _("\
-V --version-info Display the version sections (if present)\n\ -n --notes Display the core notes (if present)\n"));
-A --arch-specific Display architecture specific information (if any)\n\ fprintf (stream, _("\
-c --archive-index Display the symbol/file index in an archive\n\ -r --relocs Display the relocations (if present)\n"));
-D --use-dynamic Use the dynamic section info when displaying symbols\n\ fprintf (stream, _("\
-L --lint|--enable-checks Display warning messages for possible problems\n\ -u --unwind Display the unwind info (if present)\n"));
fprintf (stream, _("\
-d --dynamic Display the dynamic section (if present)\n"));
fprintf (stream, _("\
-V --version-info Display the version sections (if present)\n"));
fprintf (stream, _("\
-A --arch-specific Display architecture specific information (if any)\n"));
fprintf (stream, _("\
-c --archive-index Display the symbol/file index in an archive\n"));
fprintf (stream, _("\
-D --use-dynamic Use the dynamic section info when displaying symbols\n"));
fprintf (stream, _("\
-L --lint|--enable-checks\n\
Display warning messages for possible problems\n"));
fprintf (stream, _("\
-x --hex-dump=<number|name>\n\ -x --hex-dump=<number|name>\n\
Dump the contents of section <number|name> as bytes\n\ Dump the contents of section <number|name> as bytes\n"));
fprintf (stream, _("\
-p --string-dump=<number|name>\n\ -p --string-dump=<number|name>\n\
Dump the contents of section <number|name> as strings\n\ Dump the contents of section <number|name> as strings\n"));
fprintf (stream, _("\
-R --relocated-dump=<number|name>\n\ -R --relocated-dump=<number|name>\n\
Dump the contents of section <number|name> as relocated bytes\n\ Dump the relocated contents of section <number|name>\n"));
-z --decompress Decompress section before dumping it\n\ fprintf (stream, _("\
-w[lLiaprmfFsOoRtgUuTAc] or\n\ -z --decompress Decompress section before dumping it\n"));
--debug-dump=[rawline,decodedline,info,abbrev,pubnames,aranges,macro,frames,\n\ fprintf (stream, _("\
frames-interp,str,str-offsets,loc,Ranges,pubtypes,gdb_index,\n\ -w --debug-dump[a/=abbrev, A/=addr, r/=aranges, c/=cu_index, L/=decodedline,\n\
trace_info,trace_abbrev,trace_aranges,addr,cu_index]\n\ f/=frames, F/=frames-interp, g/=gdb_index, i/=info, o/=loc,\n\
Display the contents of DWARF debug sections\n\ m/=macro, p/=pubnames, t/=pubtypes, R/=Ranges, l/=rawline,\n\
-wk,--debug-dump=links Display the contents of sections that link to separate debuginfo files\n\ s/=str, O/=str-offsets, u/=trace_abbrev, T/=trace_aranges,\n\
-P,--process-links Display the contents of non-debug sections in separate debuginfo files. (Implies -wK)\n")); U/=trace_info]\n\
Display the contents of DWARF debug sections\n"));
fprintf (stream, _("\
-wk --debug-dump=links Display the contents of sections that link to separate\n\
debuginfo files\n"));
fprintf (stream, _("\
-P --process-links Display the contents of non-debug sections in separate\n\
debuginfo files. (Implies -wK)\n"));
#if DEFAULT_FOR_FOLLOW_LINKS #if DEFAULT_FOR_FOLLOW_LINKS
fprintf (stream, _("\ fprintf (stream, _("\
-wK,--debug-dump=follow-links Follow links to separate debug info files (default)\n\ -wK --debug-dump=follow-links\n\
-wN,--debug-dump=no-follow-links Do not follow links to separate debug info files\n\ Follow links to separate debug info files (default)\n"));
")); fprintf (stream, _("\
-wN --debug-dump=no-follow-links\n\
Do not follow links to separate debug info files\n"));
#else #else
fprintf (stream, _("\ fprintf (stream, _("\
-wK,--debug-dump=follow-links Follow links to separate debug info files\n\ -wK --debug-dump=follow-links\n\
-wN,--debug-dump=no-follow-links Do not follow links to separate debug info files (default)\n\ Follow links to separate debug info files\n"));
")); fprintf (stream, _("\
-wN --debug-dump=no-follow-links\n\
Do not follow links to separate debug info files\n\
(default)\n"));
#endif #endif
fprintf (stream, _("\ fprintf (stream, _("\
--dwarf-depth=N Do not display DIEs at depth N or greater\n\ --dwarf-depth=N Do not display DIEs at depth N or greater\n"));
--dwarf-start=N Display DIEs starting with N, at the same depth\n\ fprintf (stream, _("\
or deeper\n")); --dwarf-start=N Display DIEs starting at offset N\n"));
#ifdef ENABLE_LIBCTF #ifdef ENABLE_LIBCTF
fprintf (stream, _("\ fprintf (stream, _("\
--ctf=<number|name> Display CTF info from section <number|name>\n\ --ctf=<number|name> Display CTF info from section <number|name>\n"));
fprintf (stream, _("\
--ctf-parent=<number|name>\n\ --ctf-parent=<number|name>\n\
Use section <number|name> as the CTF parent\n\n\ Use section <number|name> as the CTF parent\n"));
fprintf (stream, _("\
--ctf-symbols=<number|name>\n\ --ctf-symbols=<number|name>\n\
Use section <number|name> as the CTF external symtab\n\n\ Use section <number|name> as the CTF external symtab\n"));
fprintf (stream, _("\
--ctf-strings=<number|name>\n\ --ctf-strings=<number|name>\n\
Use section <number|name> as the CTF external strtab\n\n")); Use section <number|name> as the CTF external strtab\n"));
#endif #endif
#ifdef SUPPORT_DISASSEMBLY #ifdef SUPPORT_DISASSEMBLY
@ -4692,11 +4738,16 @@ usage (FILE * stream)
Disassemble the contents of section <number|name>\n")); Disassemble the contents of section <number|name>\n"));
#endif #endif
fprintf (stream, _("\ fprintf (stream, _("\
-I --histogram Display histogram of bucket list lengths\n\ -I --histogram Display histogram of bucket list lengths\n"));
-W --wide Allow output width to exceed 80 characters\n\ fprintf (stream, _("\
-T --silent-truncation If a symbol name is truncated, do not add a suffix [...]\n\ -W --wide Allow output width to exceed 80 characters\n"));
@<file> Read options from <file>\n\ fprintf (stream, _("\
-H --help Display this information\n\ -T --silent-truncation If a symbol name is truncated, do not add [...] suffix\n"));
fprintf (stream, _("\
@<file> Read options from <file>\n"));
fprintf (stream, _("\
-H --help Display this information\n"));
fprintf (stream, _("\
-v --version Display the version number of readelf\n")); -v --version Display the version number of readelf\n"));
if (REPORT_BUGS_TO[0] && stream == stdout) if (REPORT_BUGS_TO[0] && stream == stdout)
@ -4899,7 +4950,10 @@ parse_args (struct dump_data *dumpdata, int argc, char ** argv)
case OPTION_DEBUG_DUMP: case OPTION_DEBUG_DUMP:
do_dump = true; do_dump = true;
if (optarg == NULL) if (optarg == NULL)
do_debugging = true; {
do_debugging = true;
dwarf_select_sections_all ();
}
else else
{ {
do_debugging = false; do_debugging = false;