libstdc++ Add cstdarg to freestanding

Message ID CAAvei9q1OdtwLCJcog5omsftpaXjMfwdNqX=X5BpVYYrQjpYzw@mail.gmail.com
State Unresolved
Headers
Series libstdc++ Add cstdarg to freestanding |

Checks

Context Check Description
snail/gcc-patch-check warning Git am fail log

Commit Message

Paul M. Bendixen July 21, 2023, 9:22 p.m. UTC
  P1642 includes the header cstdarg to the freestanding implementation.
This was probably left out by accident, this patch puts it in.
Since this is one of the headers that go in whole cloth, there should be no
further actions needed.
This might be related to PR106953, but since that one touches the partial
headers I'm not sure

/Paul M. Bendixen

-- 
• − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •−
•/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
  

Comments

Jonathan Wakely Aug. 16, 2023, 11:21 a.m. UTC | #1
On Fri, 21 Jul 2023 at 22:23, Paul M. Bendixen via Libstdc++
<libstdc++@gcc.gnu.org> wrote:
>
> P1642 includes the header cstdarg to the freestanding implementation.
> This was probably left out by accident, this patch puts it in.
> Since this is one of the headers that go in whole cloth, there should be no
> further actions needed.

Thanks for the patch. I agree that <cstdarg> should be freestanding,
but I think <cstdalign> and <cstdbool> were also missed from the
change. Arsen?

Also, the patch should change include/Makefile.am as well (the .in
file is autogenerated from that one).


> This might be related to PR106953, but since that one touches the partial
> headers I'm not sure
>
> /Paul M. Bendixen
>
> --
> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •−
> •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
  
Arsen Arsenović Aug. 16, 2023, 1:27 p.m. UTC | #2
Jonathan Wakely <jwakely@redhat.com> writes:

> On Fri, 21 Jul 2023 at 22:23, Paul M. Bendixen via Libstdc++
> <libstdc++@gcc.gnu.org> wrote:
>>
>> P1642 includes the header cstdarg to the freestanding implementation.
>> This was probably left out by accident, this patch puts it in.
>> Since this is one of the headers that go in whole cloth, there should be no
>> further actions needed.
>
> Thanks for the patch. I agree that <cstdarg> should be freestanding,
> but I think <cstdalign> and <cstdbool> were also missed from the
> change. Arsen?

Indeed, we should include all three, and according to [compliance],
there's a couple more headers that we should provide (cwchar, cstring,
cerrno, and cmath, but these are probably significantly more involved,
so we can handle them separately).

As guessed, the omission was not intentional.

If you could, add those two to the patch as well, edit Makefile.am and
regenerate using automake 1.15.1, and see
https://gcc.gnu.org/contribute.html wrt. changelogs in commit messages.

Thank you!  Have a lovely day :-)

[compliance]: https://eel.is/c++draft/compliance

> Also, the patch should change include/Makefile.am as well (the .in
> file is autogenerated from that one).
>
>
>> This might be related to PR106953, but since that one touches the partial
>> headers I'm not sure

The headers mentioned in this PR are provided in freestanding,
partially, in 13 already, indeed.

>> /Paul M. Bendixen
>>
>> --
>> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •−
>> •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
  
Paul M. Bendixen Aug. 16, 2023, 4:50 p.m. UTC | #3
Yes, the other files are in another committee proposal, and I'm working my
way through the proposals one by one.
Thank you for the feedback, I'll update and resend
/Paul

Den ons. 16. aug. 2023 kl. 15.51 skrev Arsen Arsenović <arsen@aarsen.me>:

>
> Jonathan Wakely <jwakely@redhat.com> writes:
>
> > On Fri, 21 Jul 2023 at 22:23, Paul M. Bendixen via Libstdc++
> > <libstdc++@gcc.gnu.org> wrote:
> >>
> >> P1642 includes the header cstdarg to the freestanding implementation.
> >> This was probably left out by accident, this patch puts it in.
> >> Since this is one of the headers that go in whole cloth, there should
> be no
> >> further actions needed.
> >
> > Thanks for the patch. I agree that <cstdarg> should be freestanding,
> > but I think <cstdalign> and <cstdbool> were also missed from the
> > change. Arsen?
>
> Indeed, we should include all three, and according to [compliance],
> there's a couple more headers that we should provide (cwchar, cstring,
> cerrno, and cmath, but these are probably significantly more involved,
> so we can handle them separately).
>
> As guessed, the omission was not intentional.
>
> If you could, add those two to the patch as well, edit Makefile.am and
> regenerate using automake 1.15.1, and see
> https://gcc.gnu.org/contribute.html wrt. changelogs in commit messages.
>
> Thank you!  Have a lovely day :-)
>
> [compliance]: https://eel.is/c++draft/compliance
>
> > Also, the patch should change include/Makefile.am as well (the .in
> > file is autogenerated from that one).
> >
> >
> >> This might be related to PR106953, but since that one touches the
> partial
> >> headers I'm not sure
>
> The headers mentioned in this PR are provided in freestanding,
> partially, in 13 already, indeed.
>
> >> /Paul M. Bendixen
> >>
> >> --
> >> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •−
> >> •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
>
>
> --
> Arsen Arsenović
>
  
Paul M. Bendixen Aug. 18, 2023, 7:14 p.m. UTC | #4
Hi
Jonathan, I just went over the proposal again as well as [compliance],
which Arsen mentioned ( https://wg21.link/compliance ) don't seem to
mention either <cstdbool> or <cstdalign>.

Shouldn't I just stick to the ones we know are in?

(Still working on figuring out how to do the change log thing)

Best regards
Paul

Den ons. 16. aug. 2023 kl. 18.50 skrev Paul M. Bendixen <
paulbendixen@gmail.com>:

> Yes, the other files are in another committee proposal, and I'm working my
> way through the proposals one by one.
> Thank you for the feedback, I'll update and resend
> /Paul
>
> Den ons. 16. aug. 2023 kl. 15.51 skrev Arsen Arsenović <arsen@aarsen.me>:
>
>>
>> Jonathan Wakely <jwakely@redhat.com> writes:
>>
>> > On Fri, 21 Jul 2023 at 22:23, Paul M. Bendixen via Libstdc++
>> > <libstdc++@gcc.gnu.org> wrote:
>> >>
>> >> P1642 includes the header cstdarg to the freestanding implementation.
>> >> This was probably left out by accident, this patch puts it in.
>> >> Since this is one of the headers that go in whole cloth, there should
>> be no
>> >> further actions needed.
>> >
>> > Thanks for the patch. I agree that <cstdarg> should be freestanding,
>> > but I think <cstdalign> and <cstdbool> were also missed from the
>> > change. Arsen?
>>
>> Indeed, we should include all three, and according to [compliance],
>> there's a couple more headers that we should provide (cwchar, cstring,
>> cerrno, and cmath, but these are probably significantly more involved,
>> so we can handle them separately).
>>
>> As guessed, the omission was not intentional.
>>
>> If you could, add those two to the patch as well, edit Makefile.am and
>> regenerate using automake 1.15.1, and see
>> https://gcc.gnu.org/contribute.html wrt. changelogs in commit messages.
>>
>> Thank you!  Have a lovely day :-)
>>
>> [compliance]: https://eel.is/c++draft/compliance
>>
>> > Also, the patch should change include/Makefile.am as well (the .in
>> > file is autogenerated from that one).
>> >
>> >
>> >> This might be related to PR106953, but since that one touches the
>> partial
>> >> headers I'm not sure
>>
>> The headers mentioned in this PR are provided in freestanding,
>> partially, in 13 already, indeed.
>>
>> >> /Paul M. Bendixen
>> >>
>> >> --
>> >> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − −
>> •−
>> >> •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
>>
>>
>> --
>> Arsen Arsenović
>>
>
>
> --
> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •−
> •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
>


-- 
• − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •−
•/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
  
Jonathan Wakely Sept. 7, 2023, 4:28 p.m. UTC | #5
On Fri, 18 Aug 2023 at 20:14, Paul M. Bendixen <paulbendixen@gmail.com> wrote:
>
> Hi
> Jonathan, I just went over the proposal again as well as [compliance], which Arsen mentioned ( https://wg21.link/compliance ) don't seem to mention either <cstdbool> or <cstdalign>.

Those headers were freestanding in C++17. They're not present in C++20
and C++23, but we support C++17 and earlier standards.

In GCC 12 <cstdalign> and <cstdbool> were both installed when you
built the library with --disable-hosted-libstdcxx, so the fact they're
no longer installed for a freestanding build in GC 13 is a regression.
Please do include them.


>
> Shouldn't I just stick to the ones we know are in?
>
> (Still working on figuring out how to do the change log thing)
>
> Best regards
> Paul
>
> Den ons. 16. aug. 2023 kl. 18.50 skrev Paul M. Bendixen <paulbendixen@gmail.com>:
>>
>> Yes, the other files are in another committee proposal, and I'm working my way through the proposals one by one.
>> Thank you for the feedback, I'll update and resend
>> /Paul
>>
>> Den ons. 16. aug. 2023 kl. 15.51 skrev Arsen Arsenović <arsen@aarsen.me>:
>>>
>>>
>>> Jonathan Wakely <jwakely@redhat.com> writes:
>>>
>>> > On Fri, 21 Jul 2023 at 22:23, Paul M. Bendixen via Libstdc++
>>> > <libstdc++@gcc.gnu.org> wrote:
>>> >>
>>> >> P1642 includes the header cstdarg to the freestanding implementation.
>>> >> This was probably left out by accident, this patch puts it in.
>>> >> Since this is one of the headers that go in whole cloth, there should be no
>>> >> further actions needed.
>>> >
>>> > Thanks for the patch. I agree that <cstdarg> should be freestanding,
>>> > but I think <cstdalign> and <cstdbool> were also missed from the
>>> > change. Arsen?
>>>
>>> Indeed, we should include all three, and according to [compliance],
>>> there's a couple more headers that we should provide (cwchar, cstring,
>>> cerrno, and cmath, but these are probably significantly more involved,
>>> so we can handle them separately).
>>>
>>> As guessed, the omission was not intentional.
>>>
>>> If you could, add those two to the patch as well, edit Makefile.am and
>>> regenerate using automake 1.15.1, and see
>>> https://gcc.gnu.org/contribute.html wrt. changelogs in commit messages.
>>>
>>> Thank you!  Have a lovely day :-)
>>>
>>> [compliance]: https://eel.is/c++draft/compliance
>>>
>>> > Also, the patch should change include/Makefile.am as well (the .in
>>> > file is autogenerated from that one).
>>> >
>>> >
>>> >> This might be related to PR106953, but since that one touches the partial
>>> >> headers I'm not sure
>>>
>>> The headers mentioned in this PR are provided in freestanding,
>>> partially, in 13 already, indeed.
>>>
>>> >> /Paul M. Bendixen
>>> >>
>>> >> --
>>> >> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •−
>>> >> •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
>>>
>>>
>>> --
>>> Arsen Arsenović
>>
>>
>>
>> --
>> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •− •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
>
>
>
> --
> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •− •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
  
Paul M. Bendixen Oct. 20, 2023, 8:55 p.m. UTC | #6
Updated patch, added the requested files, hopefully wrote the commit better.



Den tors. 7. sep. 2023 kl. 18.28 skrev Jonathan Wakely <jwakely@redhat.com>:

> On Fri, 18 Aug 2023 at 20:14, Paul M. Bendixen <paulbendixen@gmail.com>
> wrote:
> >
> > Hi
> > Jonathan, I just went over the proposal again as well as [compliance],
> which Arsen mentioned ( https://wg21.link/compliance ) don't seem to
> mention either <cstdbool> or <cstdalign>.
>
> Those headers were freestanding in C++17. They're not present in C++20
> and C++23, but we support C++17 and earlier standards.
>
> In GCC 12 <cstdalign> and <cstdbool> were both installed when you
> built the library with --disable-hosted-libstdcxx, so the fact they're
> no longer installed for a freestanding build in GC 13 is a regression.
> Please do include them.
>
>
> >
> > Shouldn't I just stick to the ones we know are in?
> >
> > (Still working on figuring out how to do the change log thing)
> >
> > Best regards
> > Paul
> >
> > Den ons. 16. aug. 2023 kl. 18.50 skrev Paul M. Bendixen <
> paulbendixen@gmail.com>:
> >>
> >> Yes, the other files are in another committee proposal, and I'm working
> my way through the proposals one by one.
> >> Thank you for the feedback, I'll update and resend
> >> /Paul
> >>
> >> Den ons. 16. aug. 2023 kl. 15.51 skrev Arsen Arsenović <arsen@aarsen.me
> >:
> >>>
> >>>
> >>> Jonathan Wakely <jwakely@redhat.com> writes:
> >>>
> >>> > On Fri, 21 Jul 2023 at 22:23, Paul M. Bendixen via Libstdc++
> >>> > <libstdc++@gcc.gnu.org> wrote:
> >>> >>
> >>> >> P1642 includes the header cstdarg to the freestanding
> implementation.
> >>> >> This was probably left out by accident, this patch puts it in.
> >>> >> Since this is one of the headers that go in whole cloth, there
> should be no
> >>> >> further actions needed.
> >>> >
> >>> > Thanks for the patch. I agree that <cstdarg> should be freestanding,
> >>> > but I think <cstdalign> and <cstdbool> were also missed from the
> >>> > change. Arsen?
> >>>
> >>> Indeed, we should include all three, and according to [compliance],
> >>> there's a couple more headers that we should provide (cwchar, cstring,
> >>> cerrno, and cmath, but these are probably significantly more involved,
> >>> so we can handle them separately).
> >>>
> >>> As guessed, the omission was not intentional.
> >>>
> >>> If you could, add those two to the patch as well, edit Makefile.am and
> >>> regenerate using automake 1.15.1, and see
> >>> https://gcc.gnu.org/contribute.html wrt. changelogs in commit
> messages.
> >>>
> >>> Thank you!  Have a lovely day :-)
> >>>
> >>> [compliance]: https://eel.is/c++draft/compliance
> >>>
> >>> > Also, the patch should change include/Makefile.am as well (the .in
> >>> > file is autogenerated from that one).
> >>> >
> >>> >
> >>> >> This might be related to PR106953, but since that one touches the
> partial
> >>> >> headers I'm not sure
> >>>
> >>> The headers mentioned in this PR are provided in freestanding,
> >>> partially, in 13 already, indeed.
> >>>
> >>> >> /Paul M. Bendixen
> >>> >>
> >>> >> --
> >>> >> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• −
> − •−
> >>> >> •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
> >>>
> >>>
> >>> --
> >>> Arsen Arsenović
> >>
> >>
> >>
> >> --
> >> • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − −
> •− •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
> >
> >
> >
> > --
> > • − − •/• −/• • −/• − • •/− • • •/•/− •/− • •/• •/− • • −/•/− •/• − − •−
> •/− − •/− −/• −/• •/• − • •/• − • − • −/− • − •/− − −/− −//
>
>
  
Arsen Arsenović Oct. 22, 2023, 8:06 p.m. UTC | #7
"Paul M. Bendixen" <paulbendixen@gmail.com> writes:

> Updated patch, added the requested files, hopefully wrote the commit better.

LGTM.  Jonathan?
  
Jonathan Wakely Oct. 24, 2023, 8:27 p.m. UTC | #8
On Sun, 22 Oct 2023 at 21:06, Arsen Arsenović <arsen@aarsen.me> wrote:

>
> "Paul M. Bendixen" <paulbendixen@gmail.com> writes:
>
> > Updated patch, added the requested files, hopefully wrote the commit
> better.
>
> LGTM.  Jonathan?
>

Yup, looks good. I've pushed it to trunk with a tweaked changelog entry.
I'll backport it to gcc-13 soon too.

Thanks, Paul!
  

Patch

From 5584c194927678067e412aeb19f10b9662e398a6 Mon Sep 17 00:00:00 2001
From: "Paul M. Bendixen" <paulbendixen@gmail.com>
Date: Fri, 21 Jul 2023 22:04:23 +0200
Subject: [PATCH] libstdc++: Include cstdarg in freestanding

P1642 includes cstdarg in the full headers to include. Include it.

Signed-off-by: Paul M. Bendixen <paulbendixen@gmail.com>
---
 libstdc++-v3/include/Makefile.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 0ff875b280b..f09f97e2f6b 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1194,6 +1194,7 @@  c_base_builddir = .
 c_base_freestanding = \
 	${c_base_srcdir}/cfloat \
 	${c_base_srcdir}/climits \
+	${c_base_srcdir}/cstdarg \
 	${c_base_srcdir}/cstddef \
 	${c_base_srcdir}/cstdint \
 	${c_base_srcdir}/cstdlib
@@ -1213,7 +1214,6 @@  c_base_freestanding = \
 @GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/csetjmp \
 @GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/csignal \
 @GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstdalign \
-@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstdarg \
 @GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstdbool \
 @GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstdio \
 @GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstring \
-- 
2.34.1