This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: progress towards mipsel glibc-2.3.5


Jake C. Page wrote:
 Known issues:
  * gcc-3.4.1-glibc-2.3.3 target mips fails on "make sysdeps/gnu/errlist.c" with
    sysdeps/generic/bits/types.h:127:3: #error  due to undefined __WORDSIZE?!

I found the reason(s) behind the mips compile failures on glibc-2.3.5 (using gcc-3.4.1, but I imagine 3.4.2 & 3.4.3 are similar...) I managed to get it to compile with some really ugly hacks. Still working on a cleaner patch, but I thought some might find this info useful since there were several questions about it on the list.

Peeling back the onion...

* sysdeps/mips/mips32/Makefile has "CC += -mabi=32" which causes my i386
host gcc used for the header config to choke when generating dependency
info.  I just added an "ifneq ($(findstring mipsel,$(CC)),) ... endif"
block around this to workaround (will only use -mabi=32 if the compiler
has 'mipsel' in it's name).

If that ends up being the thing to do, we probably want to check whether $(CC) supports that flag. It might not have mipsel in the name... maybe checking the output of $(CC) -v would be best.

* glibc-headers won't compile due to the fact that several places are
checking for gcc-defined macros _MIPS_SIM and _MIPS_SZPTR.
I defined CFLAGS="-D_MIPS_SIM=_ABIO32 -D_MIPS_SZPTR=32" in the configure
to get around this.
I also had to add $(CFLAGS) after the $(CC) at Makerules:1285 so they
could be picked up.  I TOLD you these hacks were ugly :)

Bleah! :-) There's clearly a better way, but I don't have it handy.

This is enough to build glibc-headers.  I also removed the steps to make
sysdeps/gnu/errlist.c & touch errlist-compat.c, they weren't necessary
anymore...

Really? I'll have to check into that. Maybe they get built by the earlier commands now (which may be why any of the above hacks were needed).

A couple more issues when building full glibc:

* gcc was compiled with --disable-shared, and glibc-2.3.5's Makeconfig
tries to link with -lgcc_eh, which does not exist on a non-shared gcc
build (doesn't work to try --enable-shared, don't bother...).  I had to
comment Makeconfig lines 506 and 511 to remove the reference to
libgcc_eh (there was some attempt in this file to workaround the fact
that it could be missing, but it fails since the check in configure
tries to link with libgcc_s.so during the process (DOH!)

I think the way to address this is to apply patches/glibc-2.3.4/make-install-lib-all.patch Then the lgcc_eh problems go away (assuming you have a recent crosstools).

With those changes glibc compiles & installs.

However, I have NOT tested it at all yet.   When building gcc-full I get
a compile error (it builds the C & C++ compilers, but fails on Java.
Looks like the glibc syscall.h header file was generated incorrectly by
the glibc build... something is still wrong...

Just checking: do you really need Java? If not, you could configure that out of gcc... - Dan

--
Trying to get a job as a c++ developer?  See http://kegel.com/academy/getting-hired.html


------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]