X-Spam-Check-By: sourceware.org Message-ID: <073401c6bb60$b7235b40$26e0110a@FRED4> From: "fred" To: References: <019701c6bb49$c9b225a0$26e0110a AT FRED4> <44D94430 DOT 2030107 AT sbcglobal DOT net> Subject: Re: Fw: GCC - 64bit long long type, support in lib Date: Wed, 9 Aug 2006 13:05:47 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook Express 6.00.2800.1437 X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com sorry if I confused readers. the source gcc downloaded I have is gcc-3.4.4 it seems the library is part of the gcc with cygwin. and the library I'm referring to is in the libiberty sub-directory. a config.h file does get generated (configured) in that directory. The "newlib" you are referring to, I don't see anything referred to as "newlib" in the cygwin setup??? I understand that 64bit int is not a native word size (for windows & cygwin I guess - this is not windows 64 bit version) and comprises of 2 x 32bit ints. if you do sizeof(long long) you will get 8 for gcc(cygwin) so I would think when code does a call with a long long arguument, 2 x 32bit ints get pushed on the stack, however because _doprint is then only reading off 32bit longs for such a arg, the position of the args get incorrect............ ----- Original Message ----- From: "Tim Prince" To: Sent: Wednesday, August 09, 2006 12:10 PM Subject: Re: Fw: GCC - 64bit long long type, support in lib > fred wrote: > > > > > > The gcc supports 64bit int it seems, but the library as downloaded does not, > > for example try > > > > long long ldec = 0x11000000000LL; > > printf("%s: 0x%Lx,%Ld; %s\n","test",ldec,ldec,"test2"); > > > > seems the library should support it, look in > > usr\src\gcc-3.4.4\libiberty\_doprnt.c > > #if defined(__GNUC__) || defined(HAVE_LONG_LONG) > > PRINT_TYPE(long long); > > #else > > PRINT_TYPE(long); /* Fake it and hope for the best. */ > > #endif > > > > > > > > anyway, i've not successfully recompiled gcc library for this, and didn't > > find any FAQ about it. > > the above code still crashes/prints wrong value. > > > > I think its a problem with configure, I see in configure where test code is > > generated for #define HAVE_LONG_LONG 1 > > but what configure file is supposed to get then set with this > > flag....?config.h ? hmm not happening. > > > > > Maybe others will not find your post as confusing as I did. I agree > that 64-bit gcc supports 64-bit int, but there is no 64-bit gcc for > cygwin. long long, on 32-bit platforms like cygwin, is made up from 2 > 32-bit integers. printf(), I believe, is part of newlib. "the library" > isn't very descriptive, but I would have thought, in this context, it > might refer to the libraries built by gcc, which doesn't appear to be > what you mean, even though you say "gcc library." newlib doesn't > pretend to have as much C99 support as GNU libc. > > -- > Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple > Problem reports: http://cygwin.com/problems.html > Documentation: http://cygwin.com/docs.html > FAQ: http://cygwin.com/faq/ > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/