Message ID | 20230426165347.599616-1-apinski@marvell.com |
---|---|
State | New |
Headers | show |
Series | GCC-13/changes: Add note about iostream usage | expand |
On 26/04/23 09:53 -0700, Andrew Pinski wrote: >This adds a note about iostream usage so it does not catch others >in surpise like it has already. > >OK? Thanks, I agree we should add something, but have some comments below. >--- > htdocs/gcc-13/changes.html | 5 +++++ > 1 file changed, 5 insertions(+) > >diff --git a/htdocs/gcc-13/changes.html b/htdocs/gcc-13/changes.html >index 70732ec0..7c83f7c4 100644 >--- a/htdocs/gcc-13/changes.html >+++ b/htdocs/gcc-13/changes.html >@@ -25,6 +25,11 @@ You may also want to check out our > <!-- .................................................................. --> > <h2>Caveats</h2> > <ul> >+ <li>libstdc++ uses constructors inside the library to initialize std::cout/std::cin, etc. >+ instead of having it done in each source which uses iostream header. We should use code font for std::cout, std::cin and iostream, and style it as <iostream> not just iostream. >+ This requires you to make sure the dynamic loader to load the new libstdc++v3 library >+ (examples of how to do this is to use -Wl,-rpath,... while linking or LD_LIBRARY_PATH >+ while running the program). </li> I think it would be better to link to https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic How about: <li>For C++, construction of the global iostream objects <code>std::cout</code>, <code>std::cin</code> etc. is now done inside the standard library, instead of in every source file that includes the <code><iostream></code> header. This change improves the start-up performance of C++ programs, but it means that code compiled with GCC 13.1 will crash if the correct version of <code>libstdc++.so</code> is not used at runtime. See the <a href="https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">documentation</a> about using the right <code>libstdc++.so</code> at runtime. </li>
On Wed, Apr 26, 2023 at 12:07 PM Jonathan Wakely via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > On 26/04/23 09:53 -0700, Andrew Pinski wrote: > >This adds a note about iostream usage so it does not catch others > >in surpise like it has already. > > > >OK? > > Thanks, I agree we should add something, but have some comments below. > > >--- > > htdocs/gcc-13/changes.html | 5 +++++ > > 1 file changed, 5 insertions(+) > > > >diff --git a/htdocs/gcc-13/changes.html b/htdocs/gcc-13/changes.html > >index 70732ec0..7c83f7c4 100644 > >--- a/htdocs/gcc-13/changes.html > >+++ b/htdocs/gcc-13/changes.html > >@@ -25,6 +25,11 @@ You may also want to check out our > > <!-- .................................................................. --> > > <h2>Caveats</h2> > > <ul> > >+ <li>libstdc++ uses constructors inside the library to initialize std::cout/std::cin, etc. > >+ instead of having it done in each source which uses iostream header. > > We should use code font for std::cout, std::cin and iostream, and > style it as <iostream> not just iostream. > > >+ This requires you to make sure the dynamic loader to load the new libstdc++v3 library > >+ (examples of how to do this is to use -Wl,-rpath,... while linking or LD_LIBRARY_PATH > >+ while running the program). </li> > > I think it would be better to link to > https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic > > How about: > > <li>For C++, construction of the global iostream objects > <code>std::cout</code>, <code>std::cin</code> etc. is now done > inside the standard library, instead of in every source file that > includes the <code><iostream></code> header. This change > improves the start-up performance of C++ programs, but it means that > code compiled with GCC 13.1 will crash if the correct version of > <code>libstdc++.so</code> is not used at runtime. See the > <a href="https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">documentation</a> > about using the right <code>libstdc++.so</code> at runtime. > </li> This looks better than my version. Thanks, Andrew > >
diff --git a/htdocs/gcc-13/changes.html b/htdocs/gcc-13/changes.html index 70732ec0..7c83f7c4 100644 --- a/htdocs/gcc-13/changes.html +++ b/htdocs/gcc-13/changes.html @@ -25,6 +25,11 @@ You may also want to check out our <!-- .................................................................. --> <h2>Caveats</h2> <ul> + <li>libstdc++ uses constructors inside the library to initialize std::cout/std::cin, etc. + instead of having it done in each source which uses iostream header. + This requires you to make sure the dynamic loader to load the new libstdc++v3 library + (examples of how to do this is to use -Wl,-rpath,... while linking or LD_LIBRARY_PATH + while running the program). </li> <li>OpenMP offloading to Intel MIC has been removed.</li> <li>The support for the <code>cr16-elf</code>, <code>tilegx*-linux</code>, <code>tilepro*-linux</code>, <code>hppa[12]*-*-hpux10*</code>, <code>hppa[12]*-*-hpux11*</code>