* [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