aboutsummaryrefslogtreecommitdiff
path: root/gas/as.c
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2020-08-26 21:46:04 +0200
committerMark Wielaard <mark@klomp.org>2020-08-28 15:26:01 +0200
commit4a5700b62f767ed08c97122bad182244700bb4e3 (patch)
tree93dcbc99f16e535590937a39944f5d1a63945957 /gas/as.c
parent64b63c2993db8606334f6f0852b4e7bb70b5682a (diff)
downloadgdb-4a5700b62f767ed08c97122bad182244700bb4e3.zip
gdb-4a5700b62f767ed08c97122bad182244700bb4e3.tar.gz
gdb-4a5700b62f767ed08c97122bad182244700bb4e3.tar.bz2
gas: Handle bad -gdwarf options, just like bad --gdwarf options.
parse_args uses getopt_long_only so it can handle long options both with double and single dash. But this means that some single dash options like -gdwarf-1 don't generate an error (unlike --gdwarf-1). This is especially confusing since there is also --gdwarf2, but no --gdwarf4 (it is --gdwarf-4). When giving -gdwarf4 the option is silently interpreted as -g (which set dwarf_version to 2). This causes some confusion for people who don't expect this and suddenly get DWARF2 instead of DWARF4 as they might expect. So make it so that the -gdwarf<unknown> creates an error, just like --gdwarf<unknown> would.
Diffstat (limited to 'gas/as.c')
-rw-r--r--gas/as.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gas/as.c b/gas/as.c
index a703d7a..eda7594 100644
--- a/gas/as.c
+++ b/gas/as.c
@@ -816,6 +816,13 @@ This program has absolutely no warranty.\n"));
&& md_parse_option (optc, optarg))
continue;
+ /* We end up here for any -gsomething-not-already-a-long-option.
+ give some useful feedback on not (yet) supported -gdwarfxxx
+ versions/sections/options. */
+ if (strncmp (old_argv[optind - 1], "-gdwarf",
+ strlen ("-gdwarf")) == 0)
+ as_fatal (_("unknown DWARF option %s\n"), old_argv[optind - 1]);
+
if (md_debug_format_selector)
debug_type = md_debug_format_selector (& use_gnu_debug_info_extensions);
else if (IS_ELF)