[Buildroot] [buildroot 0001090]: stdlibc++ fails putting a double in a stream.

bugs at busybox.net bugs at busybox.net
Mon Aug 25 12:31:54 UTC 2008


A NOTE has been added to this issue. 
====================================================================== 
http://busybox.net/bugs/view.php?id=1090 
====================================================================== 
Reported By:                GJanak
Assigned To:                buildroot
====================================================================== 
Project:                    buildroot
Issue ID:                   1090
Category:                   Architecture Specific
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     assigned
====================================================================== 
Date Submitted:             11-14-2006 00:01 PST
Last Modified:              08-25-2008 05:31 PDT
====================================================================== 
Summary:                    stdlibc++ fails putting a double in a stream.
Description: 
The problem was:
putting a double in a stream:
cout << 10.5 ;

Produce an empty string, or some garbage characters.

I could resolve the error down to some wired Code combination between
uclibc and libstdc++
====================================================================== 

---------------------------------------------------------------------- 
 GJanak - 02-12-07 05:50  
---------------------------------------------------------------------- 
I don't think it's an buildroot Problem.

Its an uclibc c++ error... 

---------------------------------------------------------------------- 
 GJanak - 08-27-07 05:02  
---------------------------------------------------------------------- 
New info.

The Problem is: very old files are patched into current gcc releases.
I mean the toolchain/gcc/4.2.1/200-uclibc-locale.patch
which creates 
gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc

The file created by the patch is based on the generic Config and than
patched for uclibc. But the generic is changed with 4.x.x.

Best solution would be to copy the gcc/libstdc++-v3/config/locale/generic
Dir and than add a patch on this Dir.

The Differences needed would be smaller. And perhaps the Patch would work
for multiple gcc versions. 

---------------------------------------------------------------------- 
 GJanak - 08-27-07 05:03  
---------------------------------------------------------------------- 
The Patch gcc_snprintf_double_cssize.patch is a workaround, hacking the
change in gcc. But it isnt a good solution. 

---------------------------------------------------------------------- 
 ncoesel - 08-25-08 05:31  
---------------------------------------------------------------------- 
I've been bitten by this as well. IMHO the proper solution is to mimic
non-C99 behaviour so convert_from_v should use sprintf instead of snprintf
when the size is 0. I attached the modified c_locale.h file. 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
11-14-06 00:01  GJanak         New Issue                                    
11-14-06 00:01  GJanak         Status                   new => assigned     
11-14-06 00:01  GJanak         Assigned To               => uClibc          
11-14-06 00:05  GJanak         Issue Monitored: GJanak                      
02-12-07 05:34  vapier         Assigned To              uClibc => buildroot 
02-12-07 05:50  GJanak         Note Added: 0002152                          
08-27-07 05:02  GJanak         Note Added: 0002698                          
08-27-07 05:02  GJanak         File Added: gcc_snprintf_double_cssize.patch     
              
08-27-07 05:03  GJanak         Note Added: 0002699                          
08-25-08 05:31  ncoesel        Note Added: 0010764                          
======================================================================




More information about the buildroot mailing list