[gccsdk] [Bug 208] Stack trace running !PDF after building with HEAD revision of GCCSDK

bugzilla-daemon at riscos.info bugzilla-daemon at riscos.info
Sun Jun 27 03:24:49 PDT 2010


http://www.riscos.info/bugzilla3/show_bug.cgi?id=208


John Tytgat <John.Tytgat at aaug.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED




--- Comment #3 from John Tytgat <John.Tytgat at aaug.net>  2010-06-27 03:24:48 ---
The -O2 optimization was the detail I was missing in order to reproduce this. 
The test case can be further minimized to:

--8<--
#include <fstream>
#include <cassert>

static char buf[128];

int
main(int argc, char *argv[])
{
  assert(argc == 2);
  std::ifstream in(argv[1]);
  assert(!!in);

  in.getline(buf, sizeof(buf));

  return 0;
}
--8<--

The cause of this problem is not one of the very recent changes (like r4656 -
Lee's arm_leaf_function_p() change, nor r4657/r4658 - static object
initialisation/finalisation routine rework, nor r4659 - my recent cleanup of
our ARM target patches), but adding the support for C++ & SCL.

The issue is that libstdc++-v3 only has one set of config files (inside
include/arm-unknown-riscos/bits) describing the target's support for threads,
math, etc.  And thread support is different between UnixLib and SCL runtime
library so at compile time can be have a mismatch between what the libstdc++-v3
headers are saying and the multilib built binary we're using for linking.

So it looks like we have to teach the libstdc++-v3 headers to be multilib aware
(and gcc to make use of this).

-- 
Configure bugmail: http://www.riscos.info/bugzilla3/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the gcc mailing list