Bug 115784

Summary: Compiling with -m32 breaks on FreeBSD/amd64
Product: Base System Reporter: Rene Gollent <rgollent>
Component: amd64Assignee: David E. O'Brien <obrien>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 7.0-CURRENT   
Hardware: Any   
OS: Any   

Description Rene Gollent 2007-08-24 15:30:01 UTC
If you attempt to compile with gcc -m32 on the above platform, the following issues occur:

1) if you #include <new>, compilation fails with the following errors:

/usr/include/c++/4.2/new:95: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:96: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:99: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:100: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:105: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:106: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:95: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:96: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:99: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:100: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:105: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter
/usr/include/c++/4.2/new:106: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter

If not including new or another problem header, linking fails:
/usr/bin/ld: skipping incompatible /usr/lib/libgcc.a when searching for -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc

How-To-Repeat: Attempt to compile the following code:

#include <new>

int main(int, char **)
{
   char *blah = new char[5];

   return 0;
}
Comment 1 David E. O'Brien freebsd_committer freebsd_triage 2008-02-05 17:56:48 UTC
State Changed
From-To: open->closed

We do not support general i386 binary building on freebsd/amd64. 


Comment 2 David E. O'Brien freebsd_committer freebsd_triage 2008-02-05 17:56:48 UTC
Responsible Changed
From-To: freebsd-amd64->obrien

We do not support general i386 binary building on freebsd/amd64.