Boston Linux & Unix (BLU) Home | Calendar | Mail Lists | List Archives | Desktop SIG | Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings
Linux Cafe | Meeting Notes | Blog | Linux Links | Bling | About BLU

BLU Discuss list archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Technical gcc / assembler question.



On Wed, 11 Jul 2007 17:24:16 -0400
Jarod Wilson <jarod-ajLrJawYSntWk0Htik3J/w at public.gmane.org> wrote:

> On Wednesday 11 July 2007 16:45:47 Jerry Feldman wrote:
> > For reasons beyond my control, I have some code I need to compile that
> > must use gcc 3.3.3. Corporate a version of GCC they keep on an exported
> > system that contains all of GCC. The system I'm running on is RHEL 4.0
> > x86_64 (EM64T Woodcrest) with GCC 4.3 installed.
> > In any case here is the sanitized line:
> > g++ -V 3.3.3
> > -B<proper prefix.>
> > -B<proper prefix>
> > -I<prefix>/3.3.3/include
> > -I<prefix>/include
> > -I<prefix>/gcc-3.3.3/linux-i386-2.3/include/c++
> > -I<prefix>/gcc-3.3.3/linux-i386-2.3/include/c++/i686-pc-linux-gnu
> > -g -Wall -D__NO_MATH_INLINES -D__NO_STRING_INLINES -D__error_t_defined
> > -fpic -fno-exceptions -I.
> > -I<product>/include -fexceptions -c DefineEnums.C
> > Changing -c to -S, and assembling the .s file, the error I get is:
> > DefineEnums.s: Assembler messages:
> > DefineEnums.s:136: Error: suffix or operands invalid for `push'
> > DefineEnums.s:140: Error: suffix or operands invalid for `push'
> > DefineEnums.s:145: Internal error, aborting
> > at ../../gas/config/tc-i386.c line 3500 in output_imm
> > (I get the identical error that references the temp file for the
> > assembler pass, but the temp file code is deleted).
> >
> > .LFB3253:
> > 	.loc 95 90 0
> > 	pushl	%ebp   Line 136
> > .LCFI0:
> > 	movl	%esp, %ebp
> > .LCFI1:
> > 	pushl	%ebx   Line 140
> > .LCFI2:
> > 	subl	$4, %esp
> > .LCFI3:
> > 	call	__i686.get_pc_thunk.bx
> > 	addl	$_GLOBAL_OFFSET_TABLE_, %ebx   Line 145
> >
> > I have tried a few options, such as -m32.
>=20
> Have you tried prefixing the gcc call with 'setarch i386' ? I know this i=
s=20
> required to build i686 kernels on x86_64 that actually work, could be you=
=20
> need it too.

Unfortunately setarch does not make any difference.=20
Additionally, I compiled a simple hello.C
#include <iostream>
int main()
{
	std::cout << "Hello, world!\n";
	return 0;
}

With the same result.


--=20
Jerry Feldman <gaf-mNDKBlG2WHs at public.gmane.org>
Boston Linux and Unix user group
http://www.blu.org PGP key id:C5061EA9
PGP Key fingerprint:053C 73EC 3AC1 5C44 3E14 9245 FB00 3ED5 C506 1EA9






BLU is a member of BostonUserGroups
BLU is a member of BostonUserGroups
We also thank MIT for the use of their facilities.

Valid HTML 4.01! Valid CSS!



Boston Linux & Unix / webmaster@blu.org