anny Smith <danny_r_smith_2001@...> wrote: > --- Danny
Smith <danny_r_smith_2001@...> wrote: > Well
> here's
> some good news to keep morale up:
> >
> > Built and tested fltk and metakit as static libs -- all well.
>
>
> Built and tested fltk-2.01 as dll --all tests work.
^^^^^
That should be 1.01, but see below for were there 2.01 comes from.
>
> Note fltk does *not* use the
> class attribute(dllexport) FLclass
> syntax
>
> but explicitly exports individual global and class member functions,
> i.e.:
>
> class FLclass{
> public:
> attribute(dllexport) void member_fun(int);
> }
>
> Danny
>
Metakit 2.01, another C++ lib, also builds and passes regression tests
as dll with GCC 3.0 IF:
Don't use dllex[im]port attributes, but use export-all (with g++
-shared and Paul S's patches to export-all exclusion filter) when
building dll.
Note there are no exported DATA symbols (apart from typeinfo and vtable
names) in export-all metakit, so dllimport attribute not critical.
Danny
_____________________________________________________________________________ - Yahoo! Messenger
- Voice chat, mail alerts, stock quotes and favourite news and lots more!
GCC 3.0-1 ALPHA RELEASE
=======================
Last updated: Thu Jun 21 17:18:11 CDT 2001
I've added update 1:
(1) [core] Tell GCC to use certain GAS features such .balign, .p2align
(2) [core] Add missing syslimits.h to gcc include directory.
(3) [c++] Add missing g++-v3 includes from -c++ package
(4) [c++] Add a fix to C++ front end to emit vtables when needed.
(5) [c++] More fixes to libstdc++-v3 configury
(6) [f77] Added libf2c dtime/etime patch
Still missing:
(1) [core] -fnative-struct patch from Donn Terry.
(2) [c++] Various libstdc++-v3 configury issues. Need to build numeric
limits natively instead of using the default generic one.
(3) [c++] libstdc++-v3 includes needs ISO C99 guards. So far only
candidate is bits/std_cwctype.h, but I'm sure others are lurking.
(4) ???objc, java????
The updated packages have "u1" in the names. If you start from scratch,
follow all the directions below regarding installing mingw/w32api
runtime and binutils. If you already have the first preview from 6/20/01,
just unzip these into the same directory.
===========================================================================
Last updated: Wed Jun 20 19:31:42 CDT 2001
This is a very alpha, very preliminary release of GCC 3.0 for Mingw. I'm
making this available for 3 main reasons:
1. Check packaging -- can you install it anywhere and just run it? Does
it run on W9x, NT and 2000? What about XP beta?
2. Check obvious bugs -- does it compile and link trivial C/C++/F77
programs? Go wild with fancy code if it does.
3. Get feedback. I suggest you send it to the Mingw developers list. Copy
me if you will, but my mail filter removes all multiple copies, so it
doesn't do you any good.
This is not for the faint of heart; you're welcome to download and try
it out, but please hold the urge to report obvious problems that others
may have already reported.
Please don't be surprised when you find problems, especially those dumb
packaging bugs. EXPECT GLARING PROBLEMS.
What's included here?
=====================
3 main binary packages:
gcc-3.0-1-mingw-core.zip : GCC 3.0-1 core (C Compiler and other must haves)
gcc-3.0-1-mingw-c++.zip : GCC 3.0-1 C++ compiler and runtime
gcc-3.0-1-mingw-f77.zip : GCC 3.0-1 F77 compiler and runtime
mingw-runtime.diff : There is a small patch to Mingw runtime -- the
header files stdio.h, stdarg.h, and varargs.h
are slightly modified. You shouldn't need this,
unless GCC complains about incorrect use of
va_arg (``first arg not a va_list'').
Source + patches are also available of course. Please don't download the
sources from here, just get the patches.
** NOTE NOTE NOTE **: The default runtime is MSVCRT, not CRTDLL, so you'll
need the correct Mingw runtime. I believe this is the default now, so as
long as you're reasonably up-to-date, you should be fine.
Prerequisites:
==============
I am going to assume that you have access to the latest Mingw/w32api
runtime and a very recent version of binutils. Please don't ask me
where to get or how to install these packages, rather visit Mingw
site.
You need an unzip program. You obviously need a computer running some
flavor of Windows 32 Operating System.
See "Summary of Changes" below.
Who should get it?
==================
This is targeted towards the more experienced users who have a large
source code base to test out, but everybody is welcome of course. Please
don't report about missing features (``I can't link against MSVC created
object files!''), only bugs that you believe are new or bugs introduced
by new features (eg., trouble building dlls using `gcc -shared').
Other than the basic tests, the features I'd really like stress-tested
are the following:
- New libstdc++-v3. I know that some of the locale stuff is going to
buggy, and including some of the C++ headers may not work quite yet.
Work in progress.
- Using C++ code that makes heavy use of dllimport/dllexport.
- Creating DLLs using ``gcc/c++ -shared''.
Where is the pre-release alpha test version?
============================================
The sources are there as well (*-src.zip). Here's a listing of what's
on the ftp site:
FILE SIZE
======================== ========
gcc-3.0-1-mingw-core.zip 2.03 MB
gcc-3.0-1-mingw-c++.zip 1.67 MB
gcc-3.0-1-mingw-f77.zip 1.57 MB
To install:
===========
1. Must at least get the -core package. Pick whatever other compilers you
would like to test.
2. Create a installation directory:
c:\> mkdir c:\gcc-3.0
You can choose any other you like, and in fact, I would prefer that you
install in funny places. Try out a directory with embedded whitespace
for the fun of it.
3. Change to that directory and unpack/install Mingw/w32api runtime and
binutils there.
4. Change to that directory and unzip the various packages there. Some
unzip programs such as WinZip will automatically create the directory
for you, so you can skip 2.
5. Set your PATH, and off you go:
c:\> set path=c:\gcc-3.0;%PATH%
c:\> gcc -v
Summary of Changes:
===================
- [core] Various small configuration nits to build. Defaults to MSVCRT
runtime now.
- [core] Protect gcc headers with RC_INVOKED. (old)
- [core] Mingw specific fixes. (old/new)
- [core/c++] Add some of the DLL fixes that I had never submitted to gcc
team, but have been in use in all the Cygwin/Mingw 2.95.2 releases.
(old)
Added patch from Danny Smith to not dllimport initialized data. (new)
- [libstdc++] Various small configuration nits to build.
Missing are the following:
- [core] bitfield packing -fnative-struct patch yet to go in.
- [libg2c] Some of the changes from 2.95.x yet to go in.
Regards
Mumit
--- Mumit Khan <khan@...> wrote: > GCC 3.0-1 ALPHA
RELEASE
> =======================
>
> Last updated: Thu Jun 21 17:18:11 CDT 2001
>
>
> Still missing:
> (3) [c++] libstdc++-v3 includes needs ISO C99 guards. So far only
> candidate is bits/std_cwctype.h, but I'm sure others are lurking.
>
Also in bits/std_cwchar.h, the wide versions of memmove and friends.
However, the libisocext.a static lib I provided earlier was built just
for this -- it has a modified wchar.h that has this in it:
=====================================================================
#ifndef __NO_ISOCEXT /* minimalist versions are in static lib
libisocext.a */
extern inline int fwide(FILE* stream, int mode) {return -1;} /* limited
to byte orientation */
extern inline int mbsinit(const mbstate_t* ps) {return 1;}
long long wcstoll(const wchar_t* __restrict__ nptr,
wchar_t** __restrict__ endptr, int base);
unsigned long long wcstoull(const wchar_t* __restrict__ nptr,
wchar_t ** __restrict__ endptr, int base);
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);
int wmemcmp(const wchar_t* s1, const wchar_t * s2, size_t n);
wchar_t* wmemcpy(wchar_t* __restrict__ s1, const wchar_t* __restrict__
s2,
size_t n);
wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
#endif /* __NO_ISOCEXT */
=================================================================.
Danny
_____________________________________________________________________________ - Yahoo! Messenger
- Voice chat, mail alerts, stock quotes and favourite news and lots more!
On Fri, 22 Jun 2001, Danny Smith wrote:
> Also in bits/std_cwchar.h, the wide versions of memmove and friends.
> However, the libisocext.a static lib I provided earlier was built just
> for this -- it has a modified wchar.h that has this in it:
Yeah, all those. I'm going to wait on these, and hopefully you and others
can fill in the details.
>.
Yes. I remember that you had done quite a bit on this, but that's about
all I remember.
The DLL problem you found is quite nasty it seems. I tried the following
patch, which fixes the segv, but doesn't do any good other than that.
2001-06-21 Mumit Khan <khan@...>
* decl.c (xref_basetypes): Handle attributes between 'class' and name.
Index: decl.c
===================================================================
RCS file: /homes/khan/src/win32/cygwin/CVSROOT/gcc-3.0/gcc/cp/decl.c,v
retrieving revision 1.2
diff -u -3 -p -r1.2 decl.c
--- decl.c 2001/06/21 04:44:06 1.2
+++ decl.c 2001/06/22 00:44:36
@@ -12763,8 +12763,19 @@ xref_basetypes (code_type_node, name, re
(A, X, Y, ..., Z) so we can check for duplicates. */
tree binfos;
tree base;
-
+ tree attributes = NULL_TREE;
int i, len;
+
+ /* If we are called from the parser, code_type_node will sometimes be a
+ TREE_LIST. This indicates that the user wrote
+ "class __attribute__ ((foo)) bar". Extract the attributes so that
+ tree_low_cst doesn't crash. */
+ if (TREE_CODE (code_type_node) == TREE_LIST)
+ {
+ attributes = TREE_PURPOSE (code_type_node);
+ code_type_node = TREE_VALUE (code_type_node);
+ }
+
enum tag_types tag_code = (enum tag_types) tree_low_cst (code_type_node, 1);
if (tag_code == union_type)
After applying this, I get the following:
win32-bug2.ii:31: prototype for `int DllClass::non_virtual_method() const' does
not match any in class `DllClass'
win32-bug2.ii:12: candidate is: int DllClass::non_virtual_method() const
win32-bug2.ii:41: prototype for `int DllClass::virtual_method() const' does not
match any in class `DllClass'
win32-bug2.ii:13: candidate is: virtual int DllClass::virtual_method() const
Need a G++ guru who really knows this stuff.
Regards,
Mumit
Well here's some good news to keep morale up:
Built and tested fltk and metakit as static libs -- all well.
Built and tested netlib blas and lapack (static libs) with g77. Tested
also with TNT a C++ linear alg template lib with interface to blas and
lapack. All well.
BTW, for all you other testers, the current packaging of mingw at SF
puts headers and libs in <prefix>/include and <prefix>/lib. I needed
put these back to where they should be-- in <prefix>/<tooldir> -- for
alpha GCC3.0 to build natively and work.
Danny
_____________________________________________________________________________ - Yahoo! Messenger
- Voice chat, mail alerts, stock quotes and favourite news and lots more!
--- Danny Smith <danny_r_smith_2001@...> wrote: > Well here's
some good news to keep morale up:
>
> Built and tested fltk and metakit as static libs -- all well.
Built and tested fltk-2.01 as dll --all tests work.
Note fltk does *not* use the
class attribute(dllexport) FLclass
syntax
but explicitly exports individual global and class member functions,
i.e.:
class FLclass{
public:
attribute(dllexport) void member_fun(int);
}
Danny
_____________________________________________________________________________ - Yahoo! Messenger
- Voice chat, mail alerts, stock quotes and favourite news and lots more!