From 31bf18645d98b4d3d7357353be840e320649a67d Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 6 Mar 2020 14:52:14 +0000 Subject: Add support for --dwarf-[3|4|5] to assembler command line. PR 25612 * as.c (dwarf_level): Define. (show_usage): Add --gdwarf-3, --gdwarf-4 and --gdwarf-5. (parse_args): Add support for the new options. as.h (dwarf_level): Prototype. * dwarf2dbg.c (DWARF2_VERSION): Use dwarf_level as default version value. * config/tc-ia64.h (DWARF2_VERISION): Update definition. (DWARF2_LINE_VERSION): Remove definition. * doc/as.texi: Document the new options. --- gas/as.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 7 deletions(-) (limited to 'gas/as.c') diff --git a/gas/as.c b/gas/as.c index 51bb721..4c5881a 100644 --- a/gas/as.c +++ b/gas/as.c @@ -102,6 +102,9 @@ int verbose = 0; MD_AFTER_PARSE_ARGS. */ int flag_dwarf_cie_version = -1; +/* The maximum level of DWARF DEBUG information we should manufacture. */ +unsigned int dwarf_level = 0; + #if defined OBJ_ELF || defined OBJ_MAYBE_ELF int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON; bfd_boolean flag_generate_build_notes = DEFAULT_GENERATE_BUILD_NOTES; @@ -338,7 +341,7 @@ Options:\n\ fprintf (stream, _("\ --gstabs+ generate STABS debug info with GNU extensions\n")); fprintf (stream, _("\ - --gdwarf-2 generate DWARF2 debugging information\n")); + --gdwarf- generate DWARF debugging information. 2 <= <= 5\n")); fprintf (stream, _("\ --gdwarf-sections generate per-function section names for DWARF line information\n")); fprintf (stream, _("\ @@ -484,7 +487,10 @@ parse_args (int * pargc, char *** pargv) OPTION_DEPFILE, OPTION_GSTABS, OPTION_GSTABS_PLUS, - OPTION_GDWARF2, + OPTION_GDWARF_2, + OPTION_GDWARF_3, + OPTION_GDWARF_4, + OPTION_GDWARF_5, OPTION_GDWARF_SECTIONS, OPTION_GDWARF_CIE_VERSION, OPTION_STRIP_LOCAL_ABSOLUTE, @@ -537,10 +543,13 @@ parse_args (int * pargc, char *** pargv) ,{"generate-missing-build-notes", required_argument, NULL, OPTION_ELF_BUILD_NOTES} #endif ,{"fatal-warnings", no_argument, NULL, OPTION_WARN_FATAL} - ,{"gdwarf-2", no_argument, NULL, OPTION_GDWARF2} - /* GCC uses --gdwarf-2 but GAS uses to use --gdwarf2, + ,{"gdwarf-2", no_argument, NULL, OPTION_GDWARF_2} + ,{"gdwarf-3", no_argument, NULL, OPTION_GDWARF_3} + ,{"gdwarf-4", no_argument, NULL, OPTION_GDWARF_4} + ,{"gdwarf-5", no_argument, NULL, OPTION_GDWARF_5} + /* GCC uses --gdwarf-2 but GAS used to to use --gdwarf2, so we keep it here for backwards compatibility. */ - ,{"gdwarf2", no_argument, NULL, OPTION_GDWARF2} + ,{"gdwarf2", no_argument, NULL, OPTION_GDWARF_2} ,{"gdwarf-sections", no_argument, NULL, OPTION_GDWARF_SECTIONS} ,{"gdwarf-cie-version", required_argument, NULL, OPTION_GDWARF_CIE_VERSION} ,{"gen-debug", no_argument, NULL, 'g'} @@ -817,7 +826,10 @@ This program has absolutely no warranty.\n")); if (md_debug_format_selector) debug_type = md_debug_format_selector (& use_gnu_debug_info_extensions); else if (IS_ELF) - debug_type = DEBUG_DWARF2; + { + debug_type = DEBUG_DWARF2; + dwarf_level = 2; + } else debug_type = DEBUG_STABS; break; @@ -829,8 +841,24 @@ This program has absolutely no warranty.\n")); debug_type = DEBUG_STABS; break; - case OPTION_GDWARF2: + case OPTION_GDWARF_2: + debug_type = DEBUG_DWARF2; + dwarf_level = 2; + break; + + case OPTION_GDWARF_3: + debug_type = DEBUG_DWARF2; + dwarf_level = 3; + break; + + case OPTION_GDWARF_4: debug_type = DEBUG_DWARF2; + dwarf_level = 4; + break; + + case OPTION_GDWARF_5: + debug_type = DEBUG_DWARF2; + dwarf_level = 5; break; case OPTION_GDWARF_SECTIONS: @@ -845,6 +873,21 @@ This program has absolutely no warranty.\n")); || flag_dwarf_cie_version == 2 || flag_dwarf_cie_version > 4) as_fatal (_("Invalid --gdwarf-cie-version `%s'"), optarg); + switch (flag_dwarf_cie_version) + { + case 1: + if (dwarf_level < 2) + dwarf_level = 2; + break; + case 3: + if (dwarf_level < 3) + dwarf_level = 3; + break; + default: + if (dwarf_level < 4) + dwarf_level = 4; + break; + } break; case 'J': -- cgit v1.1