public inbox for libstdc++@gcc.gnu.org
 help / color / mirror / Atom feed
From: Vladimir V <vv.os.swe@gmail.com>
To: Jonathan Wakely <jwakely@redhat.com>
Cc: libstdc++@gcc.gnu.org
Subject: Re: Problem building libstdc++ for the avr target
Date: Thu, 25 Mar 2021 10:27:16 +0100	[thread overview]
Message-ID: <CA+=iAipaM6VQWBH3gWsrAjy=hB8ss_ZpRyWjPge2SJ7bxmEEOQ@mail.gmail.com> (raw)
In-Reply-To: <CA+=iAipEgzncQ5zPUQOT4m_JSGHhTdrnMCWySQVCog0HG7aBaA@mail.gmail.com>

Hello.

Recently I tried the 'freestanding' build of the libstdc++ for the avr to
verify that my fixes were sufficient for it as well.
Unfortunately, I encountered the following error:
../../../../libstdc++-v3/libsupc++/new_opa.cc: In function 'void*
__gnu_cxx::aligned_alloc(std::size_t, std::size_t)':
../../../../libstdc++-v3/libsupc++/new_opa.cc:97:28: error: 'malloc' was
not declared in this scope
   97 |   void* const malloc_ptr = malloc(sz + al);

My investigation showed that in the chain of includes the stdlib.h of the
avr-libc is not present.
It looks like includes are resolved in the following way (here are the
original paths as they are linked from out folders during build):
new_opa.cc -> libstdc++-v3/include/c_compatibility/stdlib.h ->
libstdc++-v3/include/c_global/cstdlib
In cstdlib, for non-hosted builds stdlib.h is not included.

This problem is not present if the non-hosted build is done with
'with-newlib' flag instead of 'with-avrlibc' (common workaround as the
avrlibc build was fixed only recently).
Might it be that some include order depends on the target libc? Or maybe
some implicit conditions are involved?

Could you please support me with this issue?

Thank you.




вт, 9 февр. 2021 г. в 11:54, Vladimir V <vv.os.swe@gmail.com>:

> Thank you for the review.
>
> > My best guess is that it is there because that file previously used
> > lstat and the linux lstat(2) man page (IMHO incorrectly) says that
> > <unistd.h> is needed.
>
> I got the same feeling as well.
>
>
>
> вт, 9 февр. 2021 г. в 11:48, Jonathan Wakely <jwakely@redhat.com>:
>
>> On 08/02/21 23:25 +0100, Vladimir V wrote:
>> >Thank you for the reply.
>> >
>> >>> I don't see why this file includes <unistd.h>, it doesn't *seem* to
>> >>> need it. Even if it's needed, the correct way to include it is:
>> >
>> >So it was there since the initial commit but during my quick walk through
>> >the history
>> >I didn't find what API from <unistd.h> was used.
>>
>> My best guess is that it is there because that file previously used
>> lstat and the linux lstat(2) man page (IMHO incorrectly) says that
>> <unistd.h> is needed.
>>
>> >So, in the patch I just deleted the include but as Keith suggested it can
>> >affect the client code.
>> >If the policy is:
>> >
>> >>> We routinely remove such transitive includes. Any code assuming that
>> >>> <fstream> defines the contents of <unistd.h> is wrong and should be
>> >>> fixed.
>> >
>> >then I would keep it like that.
>> >Or would it be better to update the patch to move it inside the guard?
>>
>> I will commit your patch unchanged. In practice it is unlikely to
>> affect anybody, because that header is only used when compiling
>> libstdc++ itself. I don't see any code in the Debian archives using it
>> except for GCC itself and one testcase in the Clang repo.
>>
>>
>>

  reply	other threads:[~2021-03-25  9:27 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-07 17:32 Vladimir V
2020-12-07 20:30 ` Jonathan Wakely
2020-12-07 20:32   ` Jonathan Wakely
2020-12-09  0:28     ` Vladimir V
2020-12-09 12:32       ` Vladimir V
2020-12-09 12:49         ` Jonathan Wakely
2020-12-09 17:01           ` Jonathan Wakely
2020-12-09 23:00             ` Vladimir V
2020-12-10 17:39               ` Vladimir V
2020-12-10 20:15                 ` Jonathan Wakely
2020-12-10 20:31                   ` Vladimir V
2020-12-15 11:48                 ` Jonathan Wakely
2020-12-16  7:33                   ` Vladimir V
2020-12-07 20:41   ` Keith Packard
2020-12-07 21:06     ` Jonathan Wakely
2021-01-04 11:28       ` Vladimir V
2021-01-08 18:21         ` Jonathan Wakely
2021-01-22 14:46           ` Vladimir V
2021-02-07 13:55             ` Vladimir V
2021-02-07 18:22               ` Vladimir V
2021-02-07 18:23               ` Keith Packard
2021-02-07 22:33                 ` Vladimir V
2021-02-07 23:06                   ` Keith Packard
2021-02-08 12:58                     ` Vladimir V
2021-02-08 17:38                 ` Jonathan Wakely
2021-02-08 17:45               ` Jonathan Wakely
2021-02-08 17:47                 ` Jonathan Wakely
2021-02-08 22:25                   ` Vladimir V
2021-02-09 10:47                     ` Jonathan Wakely
2021-02-09 10:54                       ` Vladimir V
2021-03-25  9:27                         ` Vladimir V [this message]
2021-03-25 12:36                           ` Jonathan Wakely
2021-03-25 18:27                             ` Jonathan Wakely
2021-03-25 21:37                               ` Vladimir V
2021-03-25 23:02                                 ` Jonathan Wakely
2021-03-26  8:25                                   ` Vladimir V
2020-12-07 21:51     ` Vladimir V
2020-12-07 23:00       ` Keith Packard
2020-12-08  8:12         ` Vladimir V

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CA+=iAipaM6VQWBH3gWsrAjy=hB8ss_ZpRyWjPge2SJ7bxmEEOQ@mail.gmail.com' \
    --to=vv.os.swe@gmail.com \
    --cc=jwakely@redhat.com \
    --cc=libstdc++@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).