Re: gdb 11.1: struct inf lacks two members

Simon Marchi via Gdb
2021-11-03T00:36:41Z

On 2021-11-02 19:11, Andrea Monaco via Gdb wrote:
>
> Hello,
>
>
> after a successful configure, gdb 11.1 fails to make in my GNU/Hurd
> system with the following errors:
>
>
> CXX gnu-nat.o
> gnu-nat.c: In member function 'virtual void gnu_nat_target::create_inferior(const char*, const string&, char**, int)':
> gnu-nat.c:2117:13: error: 'struct inf' has no member named 'target_is_pushed'
> 2117 | if (!inf->target_is_pushed (this))
> | ^~~~~~~~~~~~~~~~
> gnu-nat.c:2118:10: error: 'struct inf' has no member named 'push_target'
> 2118 | inf->push_target (this);
> | ^~~~~~~~~~~
>
>
> and some others follow. I found out that struct inf (from gnu-nat.c) is
> only defined in the GNU/Hurd target, but it lacks the target_is_pushed
> and push_target members which are part of class inferior (from
> inferior.h). Is this a syntax error?
>
>
>
> Let me know,
>
> Andrea Monaco
>

Oh, my bad I think. This should use the "inferior" variable, not inf.
As you mentioned, there's a "struct inf" type only defined in gnu-nat,
and I got confused with the two similar variables. The change below
should fix it, can you confirm?

diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index 54838347f947..13afb3ed8b01 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -2108,8 +2108,8 @@ gnu_nat_target::create_inferior (const char *exec_file,

inf_debug (inf, "creating inferior");

- if (!inf->target_is_pushed (this))
- inf->push_target (this);
+ if (!inferior->target_is_pushed (this))
+ inferior->push_target (this);

pid = fork_inferior (exec_file, allargs, env, gnu_ptrace_me,
NULL, NULL, NULL, NULL);