public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* C++ ABI testing issues, gcc-3.3 <-> gcc-3.2 compatibility
@ 2002-08-02  9:28 Benjamin Kosnik
  2002-08-02 11:42 ` Matt Austern
                   ` (4 more replies)
  0 siblings, 5 replies; 46+ messages in thread
From: Benjamin Kosnik @ 2002-08-02  9:28 UTC (permalink / raw)
  To: gcc; +Cc: rth

I think it's important to insure that gcc-3.3 and gcc-3.2 are at the
same C++ ABI before gcc-3.2 is released.

As far as I know, there is no official ABI testing as per the release
process. Several people have suggested ways to test this. A summary is
here:

http://gcc.gnu.org/onlinedocs/libstdc++/abi.txt

Under: 

IV. Testing ABI changes

[snip]

One. 
(Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways, 
one with a new compiler and an old library, and the other with an old
compiler and a new library, and look for testsuite regressions)


I did this last night, and unfortunately cannot say that this approach
is currently working with gcc and gcc-3_2-branch C++ binaries. 

Here are my results, which are tenative. I'm re-running these, as I
started this too late last night to really be sure.

I'd apprecaite it if somebody could verify my results.

3.2 libstdc++.so.5 in a 3.3 build directory, make check == 0K
3.3 libstdc++.so.5 in a 3.2 build directory, make check == 15 FAILS

FAIL: 19_diagnostics/stdexceptions.cc execution test
FAIL: 21_strings/append.cc execution test
FAIL: 21_strings/ctor_copy_dtor.cc execution test
FAIL: 21_strings/element_access.cc execution test
FAIL: 21_strings/insert.cc execution test
FAIL: 21_strings/substr.cc execution test
FAIL: 22_locale/ctor_copy_dtor.cc execution test
FAIL: 23_containers/bitset_ctor.cc execution test
FAIL: 23_containers/bitset_members.cc execution test
FAIL: 23_containers/list_modifiers.cc execution test
FAIL: 23_containers/vector_element_access.cc execution test
FAIL: 26_numerics/c99_classification_macros_c.cc (test for excess
errors)
FAIL: 27_io/ios_base_storage.cc execution test
FAIL: 27_io/ios_init.cc execution test
FAIL: 27_io/ios_members.cc execution test

		=== libstdc++-v3 Summary ===

# of expected passes		394
# of unexpected failures	15
# of unexpected successes	26


Debugging the first of these... 

/mnt/hd/bld/bld-x86-gcc-3_2-branch/gcc/g++ -shared-libgcc
-B/mnt/hd/bld/bld-x86-gcc-3_2-branch/gcc/ -nostdinc++
-L/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/src
-L/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/src
/.libs -B/mnt/hd/bld/H-x86-gcc-3_2-branch/i686-pc-linux-gnu/bin/
-B/mnt/hd/bld/H-x86-gcc-3_2-branch/i686-pc-linux-gnu/lib/ -isystem
/mnt/hd/bld/H-x86-gcc-3_2-branch/i686-pc-linux-gnu/include -g
-ffunction-sections -fdata-sections -fmessage-length=0 -DDEBUG_ASSERT
-DLOCALEDIR="/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libst
dc++-v3/po/share/locale" -nostdinc++
-I/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/inc
lude/i686-pc-linux-gnu
-I/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/inc
lude -I/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/libsupc++
-I/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/libio
-I/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/include/backward
-I/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/testsuite
/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/testsuite/19_diagnostic
s/stdexceptions.cc -DDEBUG_ASSERT -lm -o ./stdexceptions.exe

%ldd stdexceptions.exe 
	libstdc++.so.5 =>
/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/src/.
libs/libstdc++.so.5 (0x40015000)
	libm.so.6 => /lib/i686/libm.so.6 (0x400d7000)
	libgcc_s.so.1 => /mnt/hd/bld/bld-x86-gcc-3_2-branch/gcc/libgcc_s.so.1
(0x400f9000)
	libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

looks ok

%./stdexceptions.exe 
Abort (core dumped)

(gdb) where
#0  0x42029241 in kill () from /lib/i686/libc.so.6
#1  0x4202902a in raise () from /lib/i686/libc.so.6
#2  0x4202a7d2 in abort () from /lib/i686/libc.so.6
#3  0x400b1407 in __cxxabiv1::__terminate(void (*)()) (
    handler=0x4202a664 <abort>)
    at /mnt/hd/src/src.gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:47
#4  0x400b1444 in std::terminate() ()
    at /mnt/hd/src/src.gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:57
#5  0x400b15c6 in __cxa_throw (obj=0x804b788, tinfo=0x0, dest=0)
    at /mnt/hd/src/src.gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:77
#6  0x08049198 in test03() ()
    at
/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/testsuite/19_diagnostic
s/stdexceptions.cc:62
#7  0x0804958f in main ()
    at
/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/testsuite/19_diagnostic
s/stdexceptions.cc:110
#8  0x42017499 in __libc_start_main () from /lib/i686/libc.so.6

stepping through it, get to __cxa_throw in eh_thow.cc, line 72:

  // Some sort of unwinding error.  Note that terminate is a handler.
  __cxa_begin_catch (&header->unwindHeader);
  std::terminate ();

Ouch. Isn't this a case of exception regions being screwed?

-benjamin

^ permalink raw reply	[flat|nested] 46+ messages in thread
* RE: C++ ABI testing issues, gcc-3.3 <-> gcc-3.2 compatibility
@ 2002-08-04 22:21 Goodman, Joe
  2002-08-05  0:04 ` Andreas Jaeger
  2002-08-21 14:13 ` Janis Johnson
  0 siblings, 2 replies; 46+ messages in thread
From: Goodman, Joe @ 2002-08-04 22:21 UTC (permalink / raw)
  To: bkoz, gcc; +Cc: rth

We provide a C++ ABI test suite you can download from
http://developer.intel.com/software/products/opensource/.  Please feel free
to download and run this suite.

Joe Goodman
Intel Corporation
Software Solutions Group

The views expressed in this posting do not necessarily reflect the views of
Intel Corporation

-----Original Message-----
From: Benjamin Kosnik [mailto:bkoz@redhat.com]
Sent: Friday, August 02, 2002 9:16 AM
To: gcc@gcc.gnu.org
Cc: rth@redhat.com
Subject: C++ ABI testing issues, gcc-3.3 <-> gcc-3.2 compatibility


I think it's important to insure that gcc-3.3 and gcc-3.2 are at the
same C++ ABI before gcc-3.2 is released.

As far as I know, there is no official ABI testing as per the release
process. Several people have suggested ways to test this. A summary is
here:

http://gcc.gnu.org/onlinedocs/libstdc++/abi.txt

Under: 

IV. Testing ABI changes

[snip]

One. 
(Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways, 
one with a new compiler and an old library, and the other with an old
compiler and a new library, and look for testsuite regressions)


I did this last night, and unfortunately cannot say that this approach
is currently working with gcc and gcc-3_2-branch C++ binaries. 

Here are my results, which are tenative. I'm re-running these, as I
started this too late last night to really be sure.

I'd apprecaite it if somebody could verify my results.

3.2 libstdc++.so.5 in a 3.3 build directory, make check == 0K
3.3 libstdc++.so.5 in a 3.2 build directory, make check == 15 FAILS

FAIL: 19_diagnostics/stdexceptions.cc execution test
FAIL: 21_strings/append.cc execution test
FAIL: 21_strings/ctor_copy_dtor.cc execution test
FAIL: 21_strings/element_access.cc execution test
FAIL: 21_strings/insert.cc execution test
FAIL: 21_strings/substr.cc execution test
FAIL: 22_locale/ctor_copy_dtor.cc execution test
FAIL: 23_containers/bitset_ctor.cc execution test
FAIL: 23_containers/bitset_members.cc execution test
FAIL: 23_containers/list_modifiers.cc execution test
FAIL: 23_containers/vector_element_access.cc execution test
FAIL: 26_numerics/c99_classification_macros_c.cc (test for excess
errors)
FAIL: 27_io/ios_base_storage.cc execution test
FAIL: 27_io/ios_init.cc execution test
FAIL: 27_io/ios_members.cc execution test

		=== libstdc++-v3 Summary ===

# of expected passes		394
# of unexpected failures	15
# of unexpected successes	26


Debugging the first of these... 

/mnt/hd/bld/bld-x86-gcc-3_2-branch/gcc/g++ -shared-libgcc
-B/mnt/hd/bld/bld-x86-gcc-3_2-branch/gcc/ -nostdinc++
-L/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/src
-L/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/src
/.libs -B/mnt/hd/bld/H-x86-gcc-3_2-branch/i686-pc-linux-gnu/bin/
-B/mnt/hd/bld/H-x86-gcc-3_2-branch/i686-pc-linux-gnu/lib/ -isystem
/mnt/hd/bld/H-x86-gcc-3_2-branch/i686-pc-linux-gnu/include -g
-ffunction-sections -fdata-sections -fmessage-length=0 -DDEBUG_ASSERT
-DLOCALEDIR="/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libst
dc++-v3/po/share/locale" -nostdinc++
-I/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/inc
lude/i686-pc-linux-gnu
-I/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/inc
lude -I/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/libsupc++
-I/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/libio
-I/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/include/backward
-I/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/testsuite
/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/testsuite/19_diagnostic
s/stdexceptions.cc -DDEBUG_ASSERT -lm -o ./stdexceptions.exe

%ldd stdexceptions.exe 
	libstdc++.so.5 =>
/mnt/hd/bld/bld-x86-gcc-3_2-branch/i686-pc-linux-gnu/libstdc++-v3/src/.
libs/libstdc++.so.5 (0x40015000)
	libm.so.6 => /lib/i686/libm.so.6 (0x400d7000)
	libgcc_s.so.1 =>
/mnt/hd/bld/bld-x86-gcc-3_2-branch/gcc/libgcc_s.so.1
(0x400f9000)
	libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

looks ok

%./stdexceptions.exe 
Abort (core dumped)

(gdb) where
#0  0x42029241 in kill () from /lib/i686/libc.so.6
#1  0x4202902a in raise () from /lib/i686/libc.so.6
#2  0x4202a7d2 in abort () from /lib/i686/libc.so.6
#3  0x400b1407 in __cxxabiv1::__terminate(void (*)()) (
    handler=0x4202a664 <abort>)
    at /mnt/hd/src/src.gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:47
#4  0x400b1444 in std::terminate() ()
    at /mnt/hd/src/src.gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:57
#5  0x400b15c6 in __cxa_throw (obj=0x804b788, tinfo=0x0, dest=0)
    at /mnt/hd/src/src.gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:77
#6  0x08049198 in test03() ()
    at
/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/testsuite/19_diagnostic
s/stdexceptions.cc:62
#7  0x0804958f in main ()
    at
/mnt/hd/src/src.gcc-3_2-branch/gcc/libstdc++-v3/testsuite/19_diagnostic
s/stdexceptions.cc:110
#8  0x42017499 in __libc_start_main () from /lib/i686/libc.so.6

stepping through it, get to __cxa_throw in eh_thow.cc, line 72:

  // Some sort of unwinding error.  Note that terminate is a handler.
  __cxa_begin_catch (&header->unwindHeader);
  std::terminate ();

Ouch. Isn't this a case of exception regions being screwed?

-benjamin

^ permalink raw reply	[flat|nested] 46+ messages in thread
* RE: C++ ABI testing issues, gcc-3.3 <-> gcc-3.2 compatibility
@ 2002-08-22 22:42 Goodman, Joe
  0 siblings, 0 replies; 46+ messages in thread
From: Goodman, Joe @ 2002-08-22 22:42 UTC (permalink / raw)
  To: Janis Johnson; +Cc: bkoz, gcc, Goodman, Joe, Rao, Suresh K

Janis:

Please see my answers to your questions below.  We have recorded your
suggestions and will take them into account in our future ABI testing
efforts.

Joe Goodman
Intel Corporation
Software Solutions Group

The views expressed in this message do not necessarily represent those of
Intel Corporation

-----Original Message-----
From: Janis Johnson [ mailto:janis187@us.ibm.com ]
Sent: Wednesday, August 21, 2002 2:15 PM
To: Goodman, Joe
Cc: bkoz@redhat.com; gcc@gcc.gnu.org
Subject: Re: C++ ABI testing issues, gcc-3.3 <-> gcc-3.2 compatibility


On Sun, Aug 04, 2002 at 10:20:12PM -0700, Goodman, Joe wrote:
> We provide a C++ ABI test suite you can download from
> http://developer.intel.com/software/products/opensource/ .  Please feel
free
> to download and run this suite.
> 
> Joe Goodman
> Intel Corporation
> Software Solutions Group

Joe,

I downloaded Intel's C++ ABI test suite and tried it with GCC 3.2 on
ia64-unknown-linux-gnu and i686-pc-linux-gnu.  It's a great start; here
are some comments about how to make it better.  I'm also sending this
information to Intel via the feedback link at the web page, as
requested in the test suite itself.

- The documentation doesn't really describe just what is being tested.
  From the overview at your web site: "Intel is providing the C++ ABI
  test suite on Linux.  The tests contained in this test suite check a
  C++ compiler for conformance with the C++ ABI."  The C++ ABI has
  generic specifications that apply to all platforms, and specific
  specifications for Itanium.  The test suite apparently is meant for
  use on Itanium, since everything passes there but I got a lot of
  failures on a Pentium III system.

- The config.mk file in the distribution doesn't match comments in the
  README file about what belongs there.  I removed the -D options from
  CXXFLAGS and things didn't work at all, so a comment explaining why
  they're needed would be useful.

- The test suite covers things at a very large granularity; if one check
  in a test fails, then the entire test fails.  That's probably OK for
  getting an answer to "Does this compiler conform to the ABI?" but not
  for "How close is my compiler to conforming to the ABI, and what do I
  need to change to get there?".   I changed abi-test.hpp so that
  ABI_TEST wouldn't exit for a failure and got lots more information
  about failures on i686-linux.  Speaking of which, there's nothing in
  the README or the web site about how to find out what failed, although
  it wasn't difficult to figure out.

- Does Intel intend to add new tests as problems with the ABI are
  uncovered, and for ABI issues with which specific compilers have had
  problems, like the changes that went into GCC between 3.1.1 and 3.2?

>>> Yes, we do plan to add new tests to the suite.

- Each file says "All rights reserved" after Intel's copyright notice,
  but it's accessible via a web page labeled "Open Source from Intel",
  which sends mixed signals about what can be done with the tests.  Does
  Intel allow other people to modify and redistribute these tests?  It
  would be useful to have a version that applies to platforms that
  follow the generic specifications of the C++ ABI, and to make that
  available as a plug-in to the GCC test suite as is done now with the
  Mauve test suite for Java.  Would Intel allow that?

>>> The tests can be modified and redistributed if those tests are licensed
under the Intel 'open source / modified BSD license'.

The GCC community is discussing ways to test C++ compatibility from
release to release, and Intel's test suite could be a valuable part of
that testing.

Janis Johnson
IBM Linux Technology Center

^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2002-08-22 22:42 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-02  9:28 C++ ABI testing issues, gcc-3.3 <-> gcc-3.2 compatibility Benjamin Kosnik
2002-08-02 11:42 ` Matt Austern
2002-08-02 14:25   ` Benjamin Kosnik
2002-08-02 15:06   ` Joe Buck
2002-08-03 12:00     ` Benjamin Kosnik
2002-08-02 15:14 ` Joe Buck
2002-08-02 16:00   ` Mike Stump
2002-08-02 16:03     ` Joe Buck
2002-08-02 16:11     ` Nathan Sidwell
2002-08-02 16:14       ` Joe Buck
2002-08-02 15:23 ` Richard Henderson
2002-08-02 15:35   ` Jakub Jelinek
2002-08-03 11:43     ` Benjamin Kosnik
2002-08-03 11:56     ` Benjamin Kosnik
2002-08-03  3:36 ` Jakub Jelinek
2002-08-03  4:05   ` Jakub Jelinek
2002-08-03  9:41     ` Jakub Jelinek
2002-08-03  9:47       ` H. J. Lu
2002-08-03  9:49         ` Jakub Jelinek
2002-08-03  9:55           ` H. J. Lu
2002-08-03 13:36           ` Matthias Klose
2002-08-05  0:08             ` Andreas Jaeger
2002-08-05  1:00               ` Andreas Schwab
2002-08-05 18:29       ` Loren James Rittle
2002-08-05 23:59 ` Loren James Rittle
2002-08-04 22:21 Goodman, Joe
2002-08-05  0:04 ` Andreas Jaeger
2002-08-05  2:25   ` Jakub Jelinek
2002-08-05  2:34     ` Jakub Jelinek
2002-08-05  3:32       ` Andreas Jaeger
2002-08-05  7:50     ` Nathan Sidwell
2002-08-05  8:14     ` Mark Mitchell
2002-08-05  4:21   ` Andreas Jaeger
2002-08-05  4:23     ` Jakub Jelinek
2002-08-05  5:06   ` Jakub Jelinek
2002-08-05  5:14     ` Andreas Jaeger
2002-08-05  5:58       ` Andreas Schwab
2002-08-05  6:03         ` Daniel Berlin
2002-08-05  6:06           ` Jakub Jelinek
2002-08-05  6:06           ` Andreas Schwab
2002-08-05  6:08           ` Nathan Sidwell
2002-08-05  6:16             ` Andreas Jaeger
2002-08-05  6:32           ` Andreas Schwab
2002-08-05  7:15             ` Jakub Jelinek
2002-08-21 14:13 ` Janis Johnson
2002-08-22 22:42 Goodman, Joe

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).