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 Thu, 12 Jul 2007 11:39:36 -0400
Matthew Gillen <me-5yx05kfkO/aqeI1yJSURBw at public.gmane.org> wrote:

> Jerry Feldman wrote:
> > On Thu, 12 Jul 2007 10:23:04 -0400
> > Matthew Gillen <me-5yx05kfkO/aqeI1yJSURBw at public.gmane.org> wrote:
> >=20
> >> Jerry Feldman wrote:
> >>> 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 t=
hat
> >>>>> must use gcc 3.3.3. Corporate a version of GCC they keep on an expo=
rted
> >>>>> 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_defi=
ned
> >>>>> -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.
> >>>> Have you tried prefixing the gcc call with 'setarch i386' ? I know t=
his is=20
> >>>> required to build i686 kernels on x86_64 that actually work, could b=
e 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.
> >> What if you set your PATH to have the gcc-3.3.3 install (with 'as' et =
al)
> >> first, then run (no need for the -V 3.3.3).  It looks like somehow it'=
s using
> >> the wrong version of some subprogram...
> >=20
> > The reason for the -V 3.3.3 is that the makefile is constructed that
> > way.=20
>=20
> The PATH thing might still help, since it's looking for 'as' and it might=
 be
> finding the wrong one...but I'd imagine that '-V 3.3.3' would automatical=
ly do
> that.
>=20
> So you might check to make sure all the binutils (like 'as') for the 3.3.=
3 are
> in the right place.

The way the company has things set up, they have an exported directory
that has all the gcc bits for all the platforms they support. Since I
can run this script on a nearly identical system in Toronto essentially
points to not having all the bits that I need from that export. While I
hate to do it, what I might do is import the original tools directory
from Toronto (I hate NFS across the Internet), but for the single
compile it would tell me that either we failed to copy all the bits we
needed, or that somehow we may be missing some packages from the
distro.=20



--=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