* [PATCH] Fix compile error due to [[noreturn]] with clang
@ 2024-10-20 18:00 andrew
2024-10-22 18:28 ` Guinevere Larsen
0 siblings, 1 reply; 11+ messages in thread
From: andrew @ 2024-10-20 18:00 UTC (permalink / raw)
To: gdb-patches; +Cc: Andrew Oates
From: Andrew Oates <andrew@andrewoates.com>
Since commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3, I get the
following compiler error when building binutils (cross-compiling) on
macos:
CXX remote-sim.o
../../gdb/remote-sim.c:334:28: error: assigning to 'void (*)(host_callback *, const char *, ...) __attribute__((noreturn))' (aka 'void (*)(host_callback_struct *, const char *, ...) __attribute__((noreturn))') from incompatible type 'void (host_callback
*, const char *, ...)' (aka 'void (host_callback_struct *, const char *, ...)')
gdb_callback.error = gdb_os_error;
^~~~~~~~~~~~
1 error generated.
This appears to be due to the mismatch between ATTRIBUTE_NORETURN and
[[noreturn]] on gdb_os_error. Removing ATTTRIBUTE_NORETURN on the
declaration of host_callback::error resolves the issue.
Tested by compiling on macos both with the system clang, as well as with
GCC 14. With clang, remote-sim.c does not compile (per above) without
this patch. With GCC, it compiles with and without the patch (it
doesn't link, but AFAICT that is unrelated).
---
include/sim/callback.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/sim/callback.h b/include/sim/callback.h
index f69f783abac..045ac3411af 100644
--- a/include/sim/callback.h
+++ b/include/sim/callback.h
@@ -129,7 +129,7 @@ struct host_callback_struct
In the case of gdb "exiting" means doing a longjmp back to the main
command loop. */
void (*error) (host_callback *, const char *, ...)
- ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_2;
+ ATTRIBUTE_PRINTF_2;
int last_errno; /* host format */
--
2.46.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-20 18:00 [PATCH] Fix compile error due to [[noreturn]] with clang andrew
@ 2024-10-22 18:28 ` Guinevere Larsen
2024-10-22 18:50 ` Andrew Oates
0 siblings, 1 reply; 11+ messages in thread
From: Guinevere Larsen @ 2024-10-22 18:28 UTC (permalink / raw)
To: andrew, gdb-patches
On 10/20/24 3:00 PM, andrew@andrewoates.com wrote:
> From: Andrew Oates <andrew@andrewoates.com>
>
> Since commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3, I get the
> following compiler error when building binutils (cross-compiling) on
> macos:
>
> CXX remote-sim.o
> ../../gdb/remote-sim.c:334:28: error: assigning to 'void (*)(host_callback *, const char *, ...) __attribute__((noreturn))' (aka 'void (*)(host_callback_struct *, const char *, ...) __attribute__((noreturn))') from incompatible type 'void (host_callback
> *, const char *, ...)' (aka 'void (host_callback_struct *, const char *, ...)')
> gdb_callback.error = gdb_os_error;
> ^~~~~~~~~~~~
> 1 error generated.
>
> This appears to be due to the mismatch between ATTRIBUTE_NORETURN and
> [[noreturn]] on gdb_os_error. Removing ATTTRIBUTE_NORETURN on the
> declaration of host_callback::error resolves the issue.
Have you tried using ATTRIBUTE_NORETURN for gdb_os_error instead? If the
problem is the mismatch, I would prefer that we made them match over
removing information for the compiler.
Also, from my little knowledge in this area, this sounds like a clang
bug. I encourage you to report it to upstream clang, or I can do it
myself if you'd prefer.
--
Cheers,
Guinevere Larsen
She/Her/Hers
>
> Tested by compiling on macos both with the system clang, as well as with
> GCC 14. With clang, remote-sim.c does not compile (per above) without
> this patch. With GCC, it compiles with and without the patch (it
> doesn't link, but AFAICT that is unrelated).
> ---
> include/sim/callback.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/sim/callback.h b/include/sim/callback.h
> index f69f783abac..045ac3411af 100644
> --- a/include/sim/callback.h
> +++ b/include/sim/callback.h
> @@ -129,7 +129,7 @@ struct host_callback_struct
> In the case of gdb "exiting" means doing a longjmp back to the main
> command loop. */
> void (*error) (host_callback *, const char *, ...)
> - ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_2;
> + ATTRIBUTE_PRINTF_2;
>
> int last_errno; /* host format */
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 18:28 ` Guinevere Larsen
@ 2024-10-22 18:50 ` Andrew Oates
2024-10-22 19:10 ` Guinevere Larsen
0 siblings, 1 reply; 11+ messages in thread
From: Andrew Oates @ 2024-10-22 18:50 UTC (permalink / raw)
To: Guinevere Larsen; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 3079 bytes --]
On Tue, Oct 22, 2024 at 2:29 PM Guinevere Larsen <guinevere@redhat.com>
wrote:
> On 10/20/24 3:00 PM, andrew@andrewoates.com wrote:
> > From: Andrew Oates <andrew@andrewoates.com>
> >
> > Since commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3, I get the
> > following compiler error when building binutils (cross-compiling) on
> > macos:
> >
> > CXX remote-sim.o
> > ../../gdb/remote-sim.c:334:28: error: assigning to 'void
> (*)(host_callback *, const char *, ...) __attribute__((noreturn))' (aka
> 'void (*)(host_callback_struct *, const char *, ...)
> __attribute__((noreturn))') from incompatible type 'void (host_callback
> > *, const char *, ...)' (aka 'void (host_callback_struct *, const char *,
> ...)')
> > gdb_callback.error = gdb_os_error;
> > ^~~~~~~~~~~~
> > 1 error generated.
> >
> > This appears to be due to the mismatch between ATTRIBUTE_NORETURN and
> > [[noreturn]] on gdb_os_error. Removing ATTTRIBUTE_NORETURN on the
> > declaration of host_callback::error resolves the issue.
>
> Have you tried using ATTRIBUTE_NORETURN for gdb_os_error instead? If the
> problem is the mismatch, I would prefer that we made them match over
> removing information for the compiler.
>
gdb_os_error used to have ATTRIBUTE_NORETURN on it, but that was removed in
favor of [[noreturn]] in commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3
(which seems to have done ATTRIBUTE_NORETURN -> [[noreturn]] through most
of the codebase).
I'm definitely not an expert here, but I agree that if there's a way to
annotate the function pointer instead so it can be assigned to a
[[noreturn]] function, that would be better. I tried doing that but
couldn't make it work.
>
> Also, from my little knowledge in this area, this sounds like a clang
> bug. I encourage you to report it to upstream clang, or I can do it
> myself if you'd prefer.
>
Ah...maybe. That didn't occur to me, but you could be right, if clang
should be recognizing __attribute__((noreturn)) as equivalent to
[[noreturn]].
>
> --
> Cheers,
> Guinevere Larsen
> She/Her/Hers
>
> >
> > Tested by compiling on macos both with the system clang, as well as with
> > GCC 14. With clang, remote-sim.c does not compile (per above) without
> > this patch. With GCC, it compiles with and without the patch (it
> > doesn't link, but AFAICT that is unrelated).
> > ---
> > include/sim/callback.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/include/sim/callback.h b/include/sim/callback.h
> > index f69f783abac..045ac3411af 100644
> > --- a/include/sim/callback.h
> > +++ b/include/sim/callback.h
> > @@ -129,7 +129,7 @@ struct host_callback_struct
> > In the case of gdb "exiting" means doing a longjmp back to the
> main
> > command loop. */
> > void (*error) (host_callback *, const char *, ...)
> > - ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_2;
> > + ATTRIBUTE_PRINTF_2;
> >
> > int last_errno; /* host format */
> >
>
>
[-- Attachment #2: Type: text/html, Size: 4198 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 18:50 ` Andrew Oates
@ 2024-10-22 19:10 ` Guinevere Larsen
2024-10-22 19:25 ` Andrew Oates
2024-10-22 19:37 ` Simon Marchi
0 siblings, 2 replies; 11+ messages in thread
From: Guinevere Larsen @ 2024-10-22 19:10 UTC (permalink / raw)
To: Andrew Oates, Simon Marchi; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 4258 bytes --]
On 10/22/24 3:50 PM, Andrew Oates wrote:
>
>
> On Tue, Oct 22, 2024 at 2:29 PM Guinevere Larsen
> <guinevere@redhat.com> wrote:
>
> On 10/20/24 3:00 PM, andrew@andrewoates.com wrote:
> > From: Andrew Oates <andrew@andrewoates.com>
> >
> > Since commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3, I get the
> > following compiler error when building binutils (cross-compiling) on
> > macos:
> >
> > CXX remote-sim.o
> > ../../gdb/remote-sim.c:334:28: error: assigning to 'void
> (*)(host_callback *, const char *, ...) __attribute__((noreturn))'
> (aka 'void (*)(host_callback_struct *, const char *, ...)
> __attribute__((noreturn))') from incompatible type 'void
> (host_callback
> > *, const char *, ...)' (aka 'void (host_callback_struct *, const
> char *, ...)')
> > gdb_callback.error = gdb_os_error;
> > ^~~~~~~~~~~~
> > 1 error generated.
> >
> > This appears to be due to the mismatch between
> ATTRIBUTE_NORETURN and
> > [[noreturn]] on gdb_os_error. Removing ATTTRIBUTE_NORETURN on the
> > declaration of host_callback::error resolves the issue.
>
> Have you tried using ATTRIBUTE_NORETURN for gdb_os_error instead?
> If the
> problem is the mismatch, I would prefer that we made them match over
> removing information for the compiler.
>
>
> gdb_os_error used to have ATTRIBUTE_NORETURN on it, but that was
> removed in favor of [[noreturn]] in
> commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3 (which seems to have
> done ATTRIBUTE_NORETURN -> [[noreturn]] through most of the codebase).
>
> I'm definitely not an expert here, but I agree that if there's a way
> to annotate the function pointer instead so it can be assigned to a
> [[noreturn]] function, that would be better. I tried doing that but
> couldn't make it work.
Yeah, [[noreturn]] only works for functions, not meant to be used by
members or variables, so this wouldn't work. We have to walk back the
[[noreturn]] change for this function if we want to continue adding this
information for the compiler.
I added Simon on CC since he's the one who made the original commit you
pointed to. My reading seems to be that the patch is meant to modernize
the code and isn't driven by an actual need, so I would think walking
back this specific change should be ok, but I'll defer to Simon on this.
>
> Also, from my little knowledge in this area, this sounds like a clang
> bug. I encourage you to report it to upstream clang, or I can do it
> myself if you'd prefer.
>
>
> Ah...maybe. That didn't occur to me, but you could be right, if clang
> should be recognizing __attribute__((noreturn)) as equivalent to
> [[noreturn]].
Yeah, the way I'm reading the error messages, it seems to me that clang
is ignoring [[noreturn]] completely, and gcc engineers agreed this
should work, so I am confident the bug is at least worth filing. Worst
case scenario we'll learn the logic behind clang and we can document in
the code.
>
>
> --
> Cheers,
> Guinevere Larsen
> She/Her/Hers
>
> >
> > Tested by compiling on macos both with the system clang, as well
> as with
> > GCC 14. With clang, remote-sim.c does not compile (per above)
> without
> > this patch. With GCC, it compiles with and without the patch (it
> > doesn't link, but AFAICT that is unrelated).
> > ---
> > include/sim/callback.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/include/sim/callback.h b/include/sim/callback.h
> > index f69f783abac..045ac3411af 100644
> > --- a/include/sim/callback.h
> > +++ b/include/sim/callback.h
> > @@ -129,7 +129,7 @@ struct host_callback_struct
> > In the case of gdb "exiting" means doing a longjmp back
> to the main
> > command loop. */
> > void (*error) (host_callback *, const char *, ...)
> > - ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_2;
> > + ATTRIBUTE_PRINTF_2;
> >
> > int last_errno; /* host format */
> >
>
--
Cheers,
Guinevere Larsen
She/Her/Hers
[-- Attachment #2: Type: text/html, Size: 7496 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 19:10 ` Guinevere Larsen
@ 2024-10-22 19:25 ` Andrew Oates
2024-10-22 19:37 ` Simon Marchi
1 sibling, 0 replies; 11+ messages in thread
From: Andrew Oates @ 2024-10-22 19:25 UTC (permalink / raw)
To: Guinevere Larsen; +Cc: Simon Marchi, gdb-patches
[-- Attachment #1: Type: text/plain, Size: 4340 bytes --]
On Tue, Oct 22, 2024 at 3:10 PM Guinevere Larsen <guinevere@redhat.com>
wrote:
> On 10/22/24 3:50 PM, Andrew Oates wrote:
>
>
>
> On Tue, Oct 22, 2024 at 2:29 PM Guinevere Larsen <guinevere@redhat.com>
> wrote:
>
>> On 10/20/24 3:00 PM, andrew@andrewoates.com wrote:
>> > From: Andrew Oates <andrew@andrewoates.com>
>> >
>> > Since commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3, I get the
>> > following compiler error when building binutils (cross-compiling) on
>> > macos:
>> >
>> > CXX remote-sim.o
>> > ../../gdb/remote-sim.c:334:28: error: assigning to 'void
>> (*)(host_callback *, const char *, ...) __attribute__((noreturn))' (aka
>> 'void (*)(host_callback_struct *, const char *, ...)
>> __attribute__((noreturn))') from incompatible type 'void (host_callback
>> > *, const char *, ...)' (aka 'void (host_callback_struct *, const char
>> *, ...)')
>> > gdb_callback.error = gdb_os_error;
>> > ^~~~~~~~~~~~
>> > 1 error generated.
>> >
>> > This appears to be due to the mismatch between ATTRIBUTE_NORETURN and
>> > [[noreturn]] on gdb_os_error. Removing ATTTRIBUTE_NORETURN on the
>> > declaration of host_callback::error resolves the issue.
>>
>> Have you tried using ATTRIBUTE_NORETURN for gdb_os_error instead? If the
>> problem is the mismatch, I would prefer that we made them match over
>> removing information for the compiler.
>>
>
> gdb_os_error used to have ATTRIBUTE_NORETURN on it, but that was removed
> in favor of [[noreturn]] in commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3
> (which seems to have done ATTRIBUTE_NORETURN -> [[noreturn]] through most
> of the codebase).
>
> I'm definitely not an expert here, but I agree that if there's a way to
> annotate the function pointer instead so it can be assigned to a
> [[noreturn]] function, that would be better. I tried doing that but
> couldn't make it work.
>
> Yeah, [[noreturn]] only works for functions, not meant to be used by
> members or variables, so this wouldn't work. We have to walk back the
> [[noreturn]] change for this function if we want to continue adding this
> information for the compiler.
>
> I added Simon on CC since he's the one who made the original commit you
> pointed to. My reading seems to be that the patch is meant to modernize the
> code and isn't driven by an actual need, so I would think walking back this
> specific change should be ok, but I'll defer to Simon on this.
>
>
>
>>
>> Also, from my little knowledge in this area, this sounds like a clang
>> bug. I encourage you to report it to upstream clang, or I can do it
>> myself if you'd prefer.
>>
>
> Ah...maybe. That didn't occur to me, but you could be right, if clang
> should be recognizing __attribute__((noreturn)) as equivalent to
> [[noreturn]].
>
> Yeah, the way I'm reading the error messages, it seems to me that clang is
> ignoring [[noreturn]] completely, and gcc engineers agreed this should
> work, so I am confident the bug is at least worth filing. Worst case
> scenario we'll learn the logic behind clang and we can document in the code.
>
Makes sense! I'll file the bug against clang and CC you and we'll see
where it goes :)
>
>
>>
>> --
>> Cheers,
>> Guinevere Larsen
>> She/Her/Hers
>>
>> >
>> > Tested by compiling on macos both with the system clang, as well as with
>> > GCC 14. With clang, remote-sim.c does not compile (per above) without
>> > this patch. With GCC, it compiles with and without the patch (it
>> > doesn't link, but AFAICT that is unrelated).
>> > ---
>> > include/sim/callback.h | 2 +-
>> > 1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/include/sim/callback.h b/include/sim/callback.h
>> > index f69f783abac..045ac3411af 100644
>> > --- a/include/sim/callback.h
>> > +++ b/include/sim/callback.h
>> > @@ -129,7 +129,7 @@ struct host_callback_struct
>> > In the case of gdb "exiting" means doing a longjmp back to the
>> main
>> > command loop. */
>> > void (*error) (host_callback *, const char *, ...)
>> > - ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_2;
>> > + ATTRIBUTE_PRINTF_2;
>> >
>> > int last_errno; /* host format */
>> >
>>
>>
> --
> Cheers,
> Guinevere Larsen
> She/Her/Hers
>
>
[-- Attachment #2: Type: text/html, Size: 7737 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 19:10 ` Guinevere Larsen
2024-10-22 19:25 ` Andrew Oates
@ 2024-10-22 19:37 ` Simon Marchi
2024-10-22 20:20 ` Andreas Schwab
1 sibling, 1 reply; 11+ messages in thread
From: Simon Marchi @ 2024-10-22 19:37 UTC (permalink / raw)
To: Guinevere Larsen, Andrew Oates; +Cc: gdb-patches
On 2024-10-22 15:10, Guinevere Larsen wrote:
> On 10/22/24 3:50 PM, Andrew Oates wrote:
>>
>>
>> On Tue, Oct 22, 2024 at 2:29 PM Guinevere Larsen <guinevere@redhat.com> wrote:
>>
>> On 10/20/24 3:00 PM, andrew@andrewoates.com wrote:
>> > From: Andrew Oates <andrew@andrewoates.com>
>> >
>> > Since commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3, I get the
>> > following compiler error when building binutils (cross-compiling) on
>> > macos:
>> >
>> > CXX remote-sim.o
>> > ../../gdb/remote-sim.c:334:28: error: assigning to 'void (*)(host_callback *, const char *, ...) __attribute__((noreturn))' (aka 'void (*)(host_callback_struct *, const char *, ...) __attribute__((noreturn))') from incompatible type 'void (host_callback
>> > *, const char *, ...)' (aka 'void (host_callback_struct *, const char *, ...)')
>> > gdb_callback.error = gdb_os_error;
>> > ^~~~~~~~~~~~
>> > 1 error generated.
>> >
>> > This appears to be due to the mismatch between ATTRIBUTE_NORETURN and
>> > [[noreturn]] on gdb_os_error. Removing ATTTRIBUTE_NORETURN on the
>> > declaration of host_callback::error resolves the issue.
>>
>> Have you tried using ATTRIBUTE_NORETURN for gdb_os_error instead? If the
>> problem is the mismatch, I would prefer that we made them match over
>> removing information for the compiler.
>>
>>
>> gdb_os_error used to have ATTRIBUTE_NORETURN on it, but that was removed in favor of [[noreturn]] in commit d9deb60b2e9e94b532f43a7d3ddddf5ddf6dbdd3 (which seems to have done ATTRIBUTE_NORETURN -> [[noreturn]] through most of the codebase).
>>
>> I'm definitely not an expert here, but I agree that if there's a way to annotate the function pointer instead so it can be assigned to a [[noreturn]] function, that would be better. I tried doing that but couldn't make it work.
>
> Yeah, [[noreturn]] only works for functions, not meant to be used by members or variables, so this wouldn't work. We have to walk back the [[noreturn]] change for this function if we want to continue adding this information for the compiler.
>
> I added Simon on CC since he's the one who made the original commit you pointed to. My reading seems to be that the patch is meant to modernize the code and isn't driven by an actual need, so I would think walking back this specific change should be ok, but I'll defer to Simon on this.
So, I can't reproduce the build failure when configuring with
`--enable-targets=all --enable-sim`. It looks like remote-sim.o doesn't
get built, which is odd given that the simulator is enabled. Sounds
like a bug?
When building GDB for the ARM target specifically, remote-sim.o does get
built and I see the failure.
Reverting to using the old attribute is fine with me, I don't see any
other way around.
Simon
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 19:37 ` Simon Marchi
@ 2024-10-22 20:20 ` Andreas Schwab
2024-10-22 20:37 ` Simon Marchi
0 siblings, 1 reply; 11+ messages in thread
From: Andreas Schwab @ 2024-10-22 20:20 UTC (permalink / raw)
To: Simon Marchi; +Cc: Guinevere Larsen, Andrew Oates, gdb-patches
On Okt 22 2024, Simon Marchi wrote:
> So, I can't reproduce the build failure when configuring with
> `--enable-targets=all --enable-sim`. It looks like remote-sim.o doesn't
> get built, which is odd given that the simulator is enabled. Sounds
> like a bug?
It's only enabled for the main gdb target.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 20:20 ` Andreas Schwab
@ 2024-10-22 20:37 ` Simon Marchi
2024-10-22 20:53 ` Andreas Schwab
2024-10-25 15:36 ` Tom Tromey
0 siblings, 2 replies; 11+ messages in thread
From: Simon Marchi @ 2024-10-22 20:37 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Guinevere Larsen, Andrew Oates, gdb-patches
On 2024-10-22 16:20, Andreas Schwab wrote:
> On Okt 22 2024, Simon Marchi wrote:
>
>> So, I can't reproduce the build failure when configuring with
>> `--enable-targets=all --enable-sim`. It looks like remote-sim.o doesn't
>> get built, which is odd given that the simulator is enabled. Sounds
>> like a bug?
>
> It's only enabled for the main gdb target.
>
But nowadays, --enable-targets=all builds the sim for all targets (that
have a sim), not only the main target. Would it be possible to build
remote-sim.o in that case, and use the simulator for any target, from a
single --enable-targets=all gdb build?
Simon
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 20:37 ` Simon Marchi
@ 2024-10-22 20:53 ` Andreas Schwab
2024-10-24 0:40 ` Andrew Oates
2024-10-25 15:36 ` Tom Tromey
1 sibling, 1 reply; 11+ messages in thread
From: Andreas Schwab @ 2024-10-22 20:53 UTC (permalink / raw)
To: Simon Marchi; +Cc: Guinevere Larsen, Andrew Oates, gdb-patches
On Okt 22 2024, Simon Marchi wrote:
> On 2024-10-22 16:20, Andreas Schwab wrote:
>> On Okt 22 2024, Simon Marchi wrote:
>>
>>> So, I can't reproduce the build failure when configuring with
>>> `--enable-targets=all --enable-sim`. It looks like remote-sim.o doesn't
>>> get built, which is odd given that the simulator is enabled. Sounds
>>> like a bug?
>>
>> It's only enabled for the main gdb target.
>>
>
> But nowadays, --enable-targets=all builds the sim for all targets (that
> have a sim), not only the main target. Would it be possible to build
> remote-sim.o in that case, and use the simulator for any target, from a
> single --enable-targets=all gdb build?
There can only be one simulator linked into gdb.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 20:53 ` Andreas Schwab
@ 2024-10-24 0:40 ` Andrew Oates
0 siblings, 0 replies; 11+ messages in thread
From: Andrew Oates @ 2024-10-24 0:40 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Simon Marchi, Guinevere Larsen, gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1234 bytes --]
Filed as https://github.com/llvm/llvm-project/issues/113511
Thanks everyone!
@Simon Marchi <simark@simark.ca> are you going to send a rollback, or
should I try and put that together?
On Tue, Oct 22, 2024 at 4:53 PM Andreas Schwab <schwab@linux-m68k.org>
wrote:
> On Okt 22 2024, Simon Marchi wrote:
>
> > On 2024-10-22 16:20, Andreas Schwab wrote:
> >> On Okt 22 2024, Simon Marchi wrote:
> >>
> >>> So, I can't reproduce the build failure when configuring with
> >>> `--enable-targets=all --enable-sim`. It looks like remote-sim.o
> doesn't
> >>> get built, which is odd given that the simulator is enabled. Sounds
> >>> like a bug?
> >>
> >> It's only enabled for the main gdb target.
> >>
> >
> > But nowadays, --enable-targets=all builds the sim for all targets (that
> > have a sim), not only the main target. Would it be possible to build
> > remote-sim.o in that case, and use the simulator for any target, from a
> > single --enable-targets=all gdb build?
>
> There can only be one simulator linked into gdb.
>
> --
> Andreas Schwab, schwab@linux-m68k.org
> GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
> "And now for something completely different."
>
[-- Attachment #2: Type: text/html, Size: 1920 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix compile error due to [[noreturn]] with clang
2024-10-22 20:37 ` Simon Marchi
2024-10-22 20:53 ` Andreas Schwab
@ 2024-10-25 15:36 ` Tom Tromey
1 sibling, 0 replies; 11+ messages in thread
From: Tom Tromey @ 2024-10-25 15:36 UTC (permalink / raw)
To: Simon Marchi; +Cc: Andreas Schwab, Guinevere Larsen, Andrew Oates, gdb-patches
>>>>> "Simon" == Simon Marchi <simark@simark.ca> writes:
Simon> But nowadays, --enable-targets=all builds the sim for all targets (that
Simon> have a sim), not only the main target. Would it be possible to build
Simon> remote-sim.o in that case, and use the simulator for any target, from a
Simon> single --enable-targets=all gdb build?
Andreas pointed out why this doesn't work today, but I wanted to mention
that I think we should have a goal of removing remote-sim.o entirely.
In particular I think the the sim should run as a separate process and
talk to gdb via the remote protocol. "target sim" would be
reimplemented as "target remote | arch-name-whatever".
This way, the sim could be made multi-target-capable and also wouldn't
block the goal of always using target async.
I started work on this a bit, turning gdbserver into a library and
writing a gdbserver target layer for the sim. However, I'm a little
blocked on figuring out how to handle register descriptions. There's
also the gdbarch "register_sim_regno" hook to remove.
IMO the sims are a bit of an albatross. Mike did a bunch of work on
them a while ago, but for the most part they don't seem to be actively
developed.
Tom
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-10-25 15:36 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-10-20 18:00 [PATCH] Fix compile error due to [[noreturn]] with clang andrew
2024-10-22 18:28 ` Guinevere Larsen
2024-10-22 18:50 ` Andrew Oates
2024-10-22 19:10 ` Guinevere Larsen
2024-10-22 19:25 ` Andrew Oates
2024-10-22 19:37 ` Simon Marchi
2024-10-22 20:20 ` Andreas Schwab
2024-10-22 20:37 ` Simon Marchi
2024-10-22 20:53 ` Andreas Schwab
2024-10-24 0:40 ` Andrew Oates
2024-10-25 15:36 ` Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox