Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] Avoid seg fault in sim/cris/sim-if.c
@ 2026-08-01 20:50 Roger Sayle
  2026-08-03 12:10 ` Andrew Burgess
  0 siblings, 1 reply; 3+ messages in thread
From: Roger Sayle @ 2026-08-01 20:50 UTC (permalink / raw)
  To: gdb-patches; +Cc: 'Hans-Peter Nilsson'

[-- Attachment #1: Type: text/plain, Size: 435 bytes --]


Typing "target sim" in GDB built with --target=cris-elf, crashes immediately
after being launched with "gdb ./a.out".  The issue is that STATE_PROG_ARGV
may return NULL, and this isn't tested before dereferencing the pointer.

If approved, please could someone commit this for me.
Thanks in advance.

2026-08-01  Roger Sayle  <roger@nextmovesoftware.com>

ChangeLog
	* sim/cris/sim-if.c (sim_open): Check that prog_argv isn't NULL.



[-- Attachment #2: patchgd.txt --]
[-- Type: text/plain, Size: 597 bytes --]

diff --git a/sim/cris/sim-if.c b/sim/cris/sim-if.c
index 12c80983208..3babbb058b7 100644
--- a/sim/cris/sim-if.c
+++ b/sim/cris/sim-if.c
@@ -770,8 +770,9 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
       for (envc = 0; environ[envc] != NULL; envc++)
 	len += strlen (environ[envc]) + 1;
 
-      for (i = 0; prog_argv[i] != NULL; my_argc++, i++)
-	len += strlen (prog_argv[i]) + 1;
+      if (prog_argv != NULL)
+	for (i = 0; prog_argv[i] != NULL; my_argc++, i++)
+	  len += strlen (prog_argv[i]) + 1;
 
       envstart = (envtop - len) & ~8191;
 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Avoid seg fault in sim/cris/sim-if.c
  2026-08-01 20:50 [PATCH] Avoid seg fault in sim/cris/sim-if.c Roger Sayle
@ 2026-08-03 12:10 ` Andrew Burgess
       [not found]   ` <009501dd2343$a20cc5f0$e62651d0$@nextmovesoftware.com>
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Burgess @ 2026-08-03 12:10 UTC (permalink / raw)
  To: Roger Sayle, gdb-patches; +Cc: 'Hans-Peter Nilsson'

"Roger Sayle" <roger@nextmovesoftware.com> writes:

> Typing "target sim" in GDB built with --target=cris-elf, crashes immediately
> after being launched with "gdb ./a.out".  The issue is that STATE_PROG_ARGV
> may return NULL, and this isn't tested before dereferencing the pointer.
>
> If approved, please could someone commit this for me.
> Thanks in advance.

I pushed this.

But also, I owe you an apology.  For some reason I was not able to apply
this patch directly from my email client to a git tree as usual, so I
ended up copying the contents by hand.  In the process I forgot to make
you the patch author, something I only spotted after pushing to master.

This was not intentional, and I really do apologise, I did not intend to
take credit for this fix.  Unfortunately, there's no simple way I can
fix this mistake.

I will try to take greater care in future.

Thanks,
Andrew


>
> 2026-08-01  Roger Sayle  <roger@nextmovesoftware.com>
>
> ChangeLog
> 	* sim/cris/sim-if.c (sim_open): Check that prog_argv isn't NULL.
>
>
> diff --git a/sim/cris/sim-if.c b/sim/cris/sim-if.c
> index 12c80983208..3babbb058b7 100644
> --- a/sim/cris/sim-if.c
> +++ b/sim/cris/sim-if.c
> @@ -770,8 +770,9 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd,
>        for (envc = 0; environ[envc] != NULL; envc++)
>  	len += strlen (environ[envc]) + 1;
>  
> -      for (i = 0; prog_argv[i] != NULL; my_argc++, i++)
> -	len += strlen (prog_argv[i]) + 1;
> +      if (prog_argv != NULL)
> +	for (i = 0; prog_argv[i] != NULL; my_argc++, i++)
> +	  len += strlen (prog_argv[i]) + 1;
>  
>        envstart = (envtop - len) & ~8191;
>  


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Avoid seg fault in sim/cris/sim-if.c
       [not found]   ` <009501dd2343$a20cc5f0$e62651d0$@nextmovesoftware.com>
@ 2026-08-10 14:07     ` Hans-Peter Nilsson
  0 siblings, 0 replies; 3+ messages in thread
From: Hans-Peter Nilsson @ 2026-08-10 14:07 UTC (permalink / raw)
  To: Roger Sayle; +Cc: aburgess, gdb-patches

> From: "Roger Sayle" <roger@nextmovesoftware.com>
> Date: Mon, 3 Aug 2026 13:28:41 +0100

> Hi Andrew,
> No worries.  The one line change is obvious, and there's really nothing
> to take credit for.  I'm far more pleased that you've pushed a fix.
> Thank you very much for taking care of this.
> 
> Cheers,
> Roger
> --
> 
> > -----Original Message-----
> > From: Andrew Burgess <aburgess@redhat.com>
> > Sent: 03 August 2026 13:10
> > To: Roger Sayle <roger@nextmovesoftware.com>; gdb-patches@sourceware.org
> > Cc: 'Hans-Peter Nilsson' <hp@axis.com>
> > Subject: Re: [PATCH] Avoid seg fault in sim/cris/sim-if.c
> > 
> > "Roger Sayle" <roger@nextmovesoftware.com> writes:
> > 
> > > Typing "target sim" in GDB built with --target=cris-elf, crashes
> > > immediately after being launched with "gdb ./a.out".  The issue is
> > > that STATE_PROG_ARGV may return NULL, and this isn't tested before
> > dereferencing the pointer.
> > >
> > > If approved, please could someone commit this for me.
> > > Thanks in advance.
> > 
> > I pushed this.
> > 

[Apology for mortal sin elided]

> > Thanks,
> > Andrew
> > 
> > 
> > >
> > > 2026-08-01  Roger Sayle  <roger@nextmovesoftware.com>
> > >
> > > ChangeLog
> > > 	* sim/cris/sim-if.c (sim_open): Check that prog_argv isn't NULL.

Thank you both!  I've (obviously) never run "target sim" in gdb for
cris-elf.  That sin may be more grave than forgetting to assign
authorship when applying a one-line patch...

It was always on the TODO-list to wire up the hooks and plugging in
the pieces, to get the simulator running built-in with gdb.  I'm glad
this got it working.  If there's actually something more needed, then
at least this serves as defensive programming.  I see it was already
rightly committed while I was happily on vacation, so just a thank
you.

brgds, H-P

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-08-10 14:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-01 20:50 [PATCH] Avoid seg fault in sim/cris/sim-if.c Roger Sayle
2026-08-03 12:10 ` Andrew Burgess
     [not found]   ` <009501dd2343$a20cc5f0$e62651d0$@nextmovesoftware.com>
2026-08-10 14:07     ` Hans-Peter Nilsson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox