This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] solaris c include model


This is still a bit raw but I wanted to post this for archival
reasons. I'm loosing access to my current solaris box for 2 weeks and
won't be able to work on this.

In a nutshell, this introduces a new "C" header model, ie
--enable-cheaders=c_std_solaris. In this patch, this is the default
for solaris 2.7+, which should probably be tested or tweaked.

To get this to work, you'll need to:

1) patch cc1plus so that __cplusplus is the correct value. (Also the
oldest libstdc++ PR)
2) patch gcc/ginclude/stddef.h
3) do some fixincludes on the solaris side, where extern "C" and
extern "C++" decls clash with gcc but not, apparently, with sunpro.
See the attached for a manual way to do this: I've not yet fought with
fixincludes for this.
4) patch libstdc++ with the mega-patch attached.

There are a lot of hacks in the libstdc++ bits here (strdup on
solaris??? How do I get this back? stddef.h is not figured out, and
it's apparent that better separation between C90 and C99 needs to take
place in wchar/wctype), but oh well. I'll try to fix this up when I
return.

In addition, this includes the libstdc++ parts of the newlib work.
Which is not finished yet either.

To intrepid solaris hackers, I say "bonne chance." It will be
interesting to see if you exist.

tested x86/solaris-2.11. Not. libstdc++ builds though.

-benjamin

Attachment: p.20070328-cplusplus
Description: Binary data

Attachment: p.sol-fixincludes-stdlib_iso
Description: Binary data

*** stddef.h.orig	2007-03-30 10:07:35.000000000 +0200
--- stddef.h	2007-03-30 10:12:02.000000000 +0200
*************** Boston, MA 02110-1301, USA.  */
*** 28,33 ****
--- 28,38 ----
  /*
   * ISO C Standard:  7.17  Common definitions  <stddef.h>
   */
+ 
+ #if __cplusplus == 199711L
+   namespace std { extern "C" {
+ #endif
+ 
  #if (!defined(_STDDEF_H) && !defined(_STDDEF_H_) && !defined(_ANSI_STDDEF_H) \
       && !defined(__STDDEF_H__)) \
      || defined(__need_wchar_t) || defined(__need_size_t) \
*************** typedef __WINT_TYPE__ wint_t;
*** 417,419 ****
--- 422,428 ----
  
  #endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
  	  || __need_XXX was not defined before */
+ 
+ #if __cplusplus == 199711L
+  } }
+ #endif

Attachment: p.20070411-2.bz2
Description: BZip2 compressed data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]