From 54585eee2e10de40b160c750dbe8bf15dcbf4527 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 9 Jan 2021 11:38:41 -0700 Subject: [PATCH] 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. --- gdb/ChangeLog | 6 ++++++ gdb/compile/compile.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) 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 ()); } -- 2.30.2