From: Tom Tromey Date: Sat, 9 Jan 2021 18:38:41 +0000 (-0700) Subject: Avoid crash in compile_to_object X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=54585eee2e10de40b160c750dbe8bf15dcbf4527;p=binutils-gdb.git Avoid crash in compile_to_object PR 23672 points out a crash in compile_to_object. This crash came in during a C++-ization. This patch avoids the crash. The PR also points out another weird behavior in this code, but that one requires some setup that I don't have here, and it seems to date back to the introduction of the compile feature. So, it isn't addressed here. I will leave the PR open so this bug isn't forgotten. gdb/ChangeLog 2021-01-09 Tom Tromey PR compile/23672 * compile/compile.c (compile_to_object): Avoid crash when osabi_triplet_regexp returns NULL. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2751dfe64a0..fbf7c9f6fa7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2021-01-09 Tom Tromey + + PR compile/23672 + * compile/compile.c (compile_to_object): Avoid crash when + osabi_triplet_regexp returns NULL. + 2021-01-09 Tom Tromey * tracepoint.h (class collection_list) : Take a diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c index d4c0034452d..074a865f9cc 100644 --- a/gdb/compile/compile.c +++ b/gdb/compile/compile.c @@ -703,7 +703,9 @@ compile_to_object (struct command_line *cmd, const char *cmd_string, const char *arch_rx = gdbarch_gnu_triplet_regexp (gdbarch); /* Allow triplets with or without vendor set. */ - triplet_rx = std::string (arch_rx) + "(-[^-]*)?-" + os_rx; + triplet_rx = std::string (arch_rx) + "(-[^-]*)?-"; + if (os_rx != nullptr) + triplet_rx += os_rx; compiler->set_triplet_regexp (triplet_rx.c_str ()); }