Patchwork Fix inclusion of cxxabi_forced.h in dynamic_bitset

login
register
mail settings
Submitter Joe Seymour
Date Oct. 6, 2012, 12:33 a.m.
Message ID <506F7C3C.7080607@codesourcery.com>
Download mbox | patch
Permalink /patch/189638/
State New
Headers show

Comments

Joe Seymour - Oct. 6, 2012, 12:33 a.m.
I'm seeing tr2/headers/all.cc fail in the libstdc++ testsuite:

In file included from
src/gcc-mainline/libstdc++-v3/testsuite/tr2/headers/all.cc:22:0:
/scratch/jseymour/mainline/i686-pc-linux-gnu/install/opt/codesourcery/include/c++/4.8.0/tr2/dynamic_bitset:42:27:
fatal error: cxxabi_forced.h: No such file or directory
 #include <cxxabi_forced.h>
                           ^
compilation terminated.


From libstdc++-v3/libsupc++/Makefile.am:
> bits_HEADERS = \
>        atomic_lockfree_defines.h cxxabi_forced.h \
>        exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h

Looking at how other headers in that list are treated, I believe it is the
include of cxxabi_forced.h in dynamic_bitset at fault. This patch corrects it.

I don't have commit access, so if this is acceptable perhaps someone would be
kind enough to commit it.

Thanks,

2012-10-06  Joe Seymour  <jseymour@codesourcery.com>

	* include/tr2/dynamic_bitset (cxxabi_forced.h): Fix include.
Paolo Carlini - Oct. 6, 2012, 12:50 a.m.
On 10/06/2012 02:33 AM, Joe Seymour wrote:
> I'm seeing tr2/headers/all.cc fail in the libstdc++ testsuite:
>
> In file included from
> src/gcc-mainline/libstdc++-v3/testsuite/tr2/headers/all.cc:22:0:
> /scratch/jseymour/mainline/i686-pc-linux-gnu/install/opt/codesourcery/include/c++/4.8.0/tr2/dynamic_bitset:42:27:
> fatal error: cxxabi_forced.h: No such file or directory
>   #include <cxxabi_forced.h>
>                             ^
> compilation terminated.
>
>
>  From libstdc++-v3/libsupc++/Makefile.am:
>> bits_HEADERS = \
>>         atomic_lockfree_defines.h cxxabi_forced.h \
>>         exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h
> Looking at how other headers in that list are treated, I believe it is the
> include of cxxabi_forced.h in dynamic_bitset at fault. This patch corrects it.
I'm pretty sure you are right. Any idea why the test isn't failing for 
anybody else?

Paolo.
Joe Seymour - Oct. 8, 2012, 3:16 p.m.
On 10/06/12 01:50, Paolo Carlini wrote:
> On 10/06/2012 02:33 AM, Joe Seymour wrote:
>> I'm seeing tr2/headers/all.cc fail in the libstdc++ testsuite:
>>
>> In file included from
>> src/gcc-mainline/libstdc++-v3/testsuite/tr2/headers/all.cc:22:0:
>> /scratch/jseymour/mainline/i686-pc-linux-gnu/install/opt/codesourcery/include/c++/4.8.0/tr2/dynamic_bitset:42:27:
>> fatal error: cxxabi_forced.h: No such file or directory
>>   #include <cxxabi_forced.h>
>>                             ^
>> compilation terminated.
>>
>>
>>  From libstdc++-v3/libsupc++/Makefile.am:
>>> bits_HEADERS = \
>>>         atomic_lockfree_defines.h cxxabi_forced.h \
>>>         exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h
>> Looking at how other headers in that list are treated, I believe it is the
>> include of cxxabi_forced.h in dynamic_bitset at fault. This patch corrects it.
> I'm pretty sure you are right. Any idea why the test isn't failing for 
> anybody else?

I was surprised not to find any other references to this failure as well,
especially as I observed the failure with pristine FSF sources. I've had a
closer look:

* We (CodeSourcery/Mentor) test the installation directory, with something like:

g++ -D_GLIBCXX_ASSERT -fmessage-length=0  -DLOCALEDIR="."
-I/scratch/jseymour/mainline/i686-pc-linux-gnu/src/gcc-mainline/libstdc++-v3/testsuite/util
\
/scratch/jseymour/mainline/i686-pc-linux-gnu/src/gcc-mainline/libstdc++-v3/testsuite/tr2/headers/all.cc
  -std=gnu++0x -S  -o all.s

* The standard "make check" invocation tests the objdir/srcdir with a longer
command, passing various paths etc, in particular:

-I/scratch/jseymour/mainline/i686-pc-linux-gnu/src/gcc-mainline/libstdc++-v3/libsupc++

Because all the headers in libstdc++-v3 are in that directory cxxabi_forced.h is
found successfully. It is the Makefile that places it in a different directory
during installation.

I suppose to get this test working correctly, we need to move the files listed
in bits_HEADERS into a bits/ directory in the source tree, then make appropriate
changes to cater for the adjusted directory layout.

Joe

Patch

Index: libstdc++-v3/include/tr2/dynamic_bitset
===================================================================
--- libstdc++-v3/include/tr2/dynamic_bitset     (revision 192151)
+++ libstdc++-v3/include/tr2/dynamic_bitset     (working copy)
@@ -39,7 +39,7 @@ 
 #include <bits/functexcept.h>   // For invalid_argument, out_of_range,
                                // overflow_error
 #include <iosfwd>
-#include <cxxabi_forced.h>
+#include <bits/cxxabi_forced.h>

 namespace std _GLIBCXX_VISIBILITY(default)
 {