Don't pass empty options to GCC
On aarch64-linux, I noticed the compile command didn't work at all. It always gave the following error: aarch64-linux-gnu-g++: error: : No such file or directory Turns out we're passing an empty argv entry to GCC (because aarch64 doesn't have a -m64 option), and GCC's behavior is to think that is a file it needs to open. One can reproduce it like so: gcc "" "" "" "" gcc: error: : No such file or directory gcc: error: : No such file or directory gcc: error: : No such file or directory gcc: error: : No such file or directory gcc: fatal error: no input files compilation terminated. The solution is to check for an empty string and skip adding that to argv. Regression tested on aarch64-linux/Ubuntu 18.04/20.04. gdb/ChangeLog: 2021-03-29 Luis Machado <luis.machado@linaro.org> * compile/compile.c (get_args): Don't add empty argv entries.
This commit is contained in:
parent
fa167b002f
commit
9b8ffbf410
@ -1,3 +1,7 @@
|
|||||||
|
2021-03-29 Luis Machado <luis.machado@linaro.org>
|
||||||
|
|
||||||
|
* compile/compile.c (get_args): Don't add empty argv entries.
|
||||||
|
|
||||||
2021-03-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
2021-03-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
gdb:
|
gdb:
|
||||||
|
@ -600,8 +600,14 @@ static gdb_argv
|
|||||||
get_args (const compile_instance *compiler, struct gdbarch *gdbarch)
|
get_args (const compile_instance *compiler, struct gdbarch *gdbarch)
|
||||||
{
|
{
|
||||||
const char *cs_producer_options;
|
const char *cs_producer_options;
|
||||||
|
gdb_argv result;
|
||||||
|
|
||||||
gdb_argv result (gdbarch_gcc_target_options (gdbarch).c_str ());
|
std::string gcc_options = gdbarch_gcc_target_options (gdbarch);
|
||||||
|
|
||||||
|
/* Make sure we have a non-empty set of options, otherwise GCC will
|
||||||
|
error out trying to look for a filename that is an empty string. */
|
||||||
|
if (!gcc_options.empty ())
|
||||||
|
result = gdb_argv (gcc_options.c_str ());
|
||||||
|
|
||||||
cs_producer_options = get_selected_pc_producer_options ();
|
cs_producer_options = get_selected_pc_producer_options ();
|
||||||
if (cs_producer_options != NULL)
|
if (cs_producer_options != NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user