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>
|
||||
|
||||
gdb:
|
||||
|
@ -600,8 +600,14 @@ static gdb_argv
|
||||
get_args (const compile_instance *compiler, struct gdbarch *gdbarch)
|
||||
{
|
||||
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 ();
|
||||
if (cs_producer_options != NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user