gdb 11.1: struct inf lacks two members

Simon Marchi simon.marchi@polymtl.ca
Wed Nov 3 00:35:58 GMT 2021


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);


More information about the Gdb mailing list