Avoid crash in compile_to_object
authorTom Tromey <tom@tromey.com>
Sat, 9 Jan 2021 18:38:41 +0000 (11:38 -0700)
committerTom Tromey <tom@tromey.com>
Sat, 9 Jan 2021 18:38:41 +0000 (11:38 -0700)
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  <tom@tromey.com>

PR compile/23672
* compile/compile.c (compile_to_object): Avoid crash when
osabi_triplet_regexp returns NULL.

gdb/ChangeLog
gdb/compile/compile.c

index 2751dfe64a09db61b6e85ee8cc4ebfc702682fe1..fbf7c9f6fa771222c84f36f55126f9ef714dc61f 100644 (file)
@@ -1,3 +1,9 @@
+2021-01-09  Tom Tromey  <tom@tromey.com>
+
+       PR compile/23672
+       * compile/compile.c (compile_to_object): Avoid crash when
+       osabi_triplet_regexp returns NULL.
+
 2021-01-09  Tom Tromey  <tom@tromey.com>
 
        * tracepoint.h (class collection_list) <append_exp>: Take a
index d4c0034452d7e046c1ea1d86e19d19a760954bdd..074a865f9cc584272f999d48e75fadba1eb8a625 100644 (file)
@@ -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 ());
     }