User account creation filtered due to spam.

Bug 42557 - gcc no compile for m68k(coff/elf)
Summary: gcc no compile for m68k(coff/elf)
Status: RESOLVED INVALID
Alias: None
Product: gcc
Classification: Unclassified
Component: c (show other bugs)
Version: 4.4.1
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-12-30 20:51 UTC by Milton César Disegna de Souza Leite
Modified: 2010-02-24 21:45 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Milton César Disegna de Souza Leite 2009-12-30 20:51:03 UTC
I tried to compile gcc (4.4.1 and 4.4.2) for m68k-coff for Linux. I'm
using Ubuntu 9.10 AMD64. However, I get an error stating that gas is not supported for the version of binutils (2.20) used:

...
Configuring in ./gas
configure: creating cache ./config.cache
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... m68k-unknown-coff
checking for x86_64-unknown-linux-gnu-gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for library containing strerror... none required
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... mawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for x86_64-unknown-linux-gnu-gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for a sed that does not truncate output... /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... ld
checking if the linker (ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... nm
checking the name lister (nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 3458764513820540925
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for ld option to reload object files... -r
checking for x86_64-unknown-linux-gnu-objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for x86_64-unknown-linux-gnu-ar... ar
checking for x86_64-unknown-linux-gnu-strip... no
checking for strip... strip
checking for x86_64-unknown-linux-gnu-ranlib... ranlib
checking command to parse nm output from gcc object... ok
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
Setting warning flags = -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror
checking whether byte ordering is bigendian... no
This target is no longer supported in gas
make[1]: *** [configure-gas] Error 1
make[1]: Leaving directory `/home/miltoncsl/Documents/coldfire/binutils-2.20'
make: *** [all] Error 2
$

When compiling m68k-elf the process went
smoothly and I can install (m68k-elf-as, m68k-elf-ar, etc.). But this
time I can not compile gcc 4.4.1 or 4.4.2 (m68k-elf-gcc) because I
get an error stating problems with libgcc.mvars:

configure: creating cache ./config.cache
checking for --enable-version-specific-runtime-libs... no
checking for a BSD-compatible install... /usr/bin/install -c
checking for gawk... no
checking for mawk... mawk
checking build system type... x86_64-unknown-linux-gnu
checking host system type... m68k-unknown-elf
checking for m68k-elf-ar... /usr/m68k-elf/bin/ar
checking for m68k-elf-lipo... m68k-elf-lipo
checking for m68k-elf-nm... /home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/nm
checking for m68k-elf-ranlib... /usr/m68k-elf/bin/ranlib
checking for m68k-elf-strip... /usr/m68k-elf/bin/strip
checking whether ln -s works... yes
checking
for m68k-elf-gcc...
/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/xgcc
-B/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/
-B/usr/m68k-elf/bin/ -B/usr/m68k-elf/lib/ -isystem
/usr/m68k-elf/include -isystem /usr/m68k-elf/sys-include  -mcpu=fidoa
-msoft-float
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking
whether
/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/xgcc
-B/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/
-B/usr/m68k-elf/bin/ -B/usr/m68k-elf/lib/ -isystem
/usr/m68k-elf/include -isystem /usr/m68k-elf/sys-include  -mcpu=fidoa
-msoft-float accepts -g... yes
checking for
/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/xgcc
-B/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/
-B/usr/m68k-elf/bin/ -B/usr/m68k-elf/lib/ -isystem
/usr/m68k-elf/include -isystem /usr/m68k-elf/sys-include  -mcpu=fidoa
-msoft-float option to accept ANSI C... none needed
checking how to
run the C preprocessor...
/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/xgcc
-B/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/host-x86_64-unknown-linux-gnu/gcc/
-B/usr/m68k-elf/bin/ -B/usr/m68k-elf/lib/ -isystem
/usr/m68k-elf/include -isystem /usr/m68k-elf/sys-include  -mcpu=fidoa
-msoft-float -E
checking whether decimal floating point is supported... no
checking whether fixed-point is supported... no
checking for __attribute__((visibility("hidden")))... yes
checking whether the target assembler supports thread-local storage... yes
updating cache ./config.cache
configure: creating ./config.status
config.status: creating Makefile
config.status: executing default commands
Adding multilib support to Makefile in ../../../.././libgcc
with_multisubdir=mfidoa/softfp
make[2]: Entering directory `/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/m68k-elf/libgcc'
Makefile:143: ../.././gcc/libgcc.mvars: No such file or directory
make[2]: *** No rule to make target `../.././gcc/libgcc.mvars'.  Stop.
make[2]: Leaving directory `/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/m68k-elf/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1'
make: *** [all] Error 2

The fact of using a 64bit system would be impeding the progress of the process? (googleTranslate)

Milton César Disegna de Souza Leite
Comment 1 Mikael Pettersson 2009-12-30 22:40:40 UTC
(In reply to comment #0)
> I tried to compile gcc (4.4.1 and 4.4.2) for m68k-coff for Linux. I'm
> using Ubuntu 9.10 AMD64. However, I get an error stating that gas is not
> supported for the version of binutils (2.20) used:
> 
> ...
> Configuring in ./gas
...
> This target is no longer supported in gas
> make[1]: *** [configure-gas] Error 1
> make[1]: Leaving directory `/home/miltoncsl/Documents/coldfire/binutils-2.20'
> make: *** [all] Error 2

Confirmed, but this is a binutils problem so you should report it to them not us. binutils-2.16.1 does build for m68k-unknown-coff.
Comment 2 Mikael Pettersson 2009-12-31 00:53:28 UTC
(In reply to comment #0)
> When compiling m68k-elf the process went
> smoothly and I can install (m68k-elf-as, m68k-elf-ar, etc.). But this
> time I can not compile gcc 4.4.1 or 4.4.2 (m68k-elf-gcc) because I
> get an error stating problems with libgcc.mvars:
...
> Makefile:143: ../.././gcc/libgcc.mvars: No such file or directory
> make[2]: *** No rule to make target `../.././gcc/libgcc.mvars'.  Stop.
> make[2]: Leaving directory
> `/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1/m68k-elf/libgcc'
> make[1]: *** [all-target-libgcc] Error 2
> make[1]: Leaving directory
> `/home/miltoncsl/Documents/coldfire/gcc-4.4-4.4.1.orig/gcc-4.4.1'
> make: *** [all] Error 2

I can reproduce this, but only by doing the build in the source directory itself. Never ever do that with gcc. Doing the build in a separate object directory and configuring with --target=m68k-unknown-elf --disable-libssp I'm easily able to build gcc-4.4.2 as cross-compiler to m68k-unknown-elf on i686-linux.

This PR should be closed as invalid.
Comment 3 Milton César Disegna de Souza Leite 2010-01-02 02:51:32 UTC
I quoted the compilation of the binutils because it is part of the process for the construction of gcc. From your indication of version 2.16.1, I knew that this was the last that supported the coff format. I used the instructions of the LSB 6.5 (http://www.linuxfromscratch.org/lfs/view/6.5/chapter05/gcc-pass1.html) and its recommendations. However, the goal is to compile gcc for the coff format and I'm having it difficulties. I use the command:

../gcc-4.4.2/configure --target=m68k-coff \
                       --prefix=/usr \
                       --disable-nls \
                       --disable-shared \
                       --disable-multilib \
                       --disable-decimal-float \
                       --disable-threads \
                       --disable-libmudflap \
                       --disable-libssp \
                       --disable-libgomp \
                       --enable-languages=c \
                       --enable-obsolete

and I get as error:

...
/home/miltoncsl/Documents/coldfire/gcc/gcc-build/./gcc/xgcc -B/home/miltoncsl/Documents/coldfire/gcc/gcc-build/./gcc/ -B/usr/m68k-coff/bin/ -B/usr/m68k-coff/lib/ -isystem /usr/m68k-coff/include -isystem /usr/m68k-coff/sys-include -g -O2 -O2  -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wold-style-definition  -isystem ./include   -g  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc  -I. -I. -I../.././gcc -I../../../gcc-4.4.2/libgcc -I../../../gcc-4.4.2/libgcc/. -I../../../gcc-4.4.2/libgcc/../gcc -I../../../gcc-4.4.2/libgcc/../include  -DHAVE_CC_TLS -o _double.o -MT _double.o -MD -MP -MF _double.dep -DL_double -xassembler-with-cpp \
	  -c ../../../gcc-4.4.2/libgcc/../gcc/config/m68k/lb1sf68.asm
../../../gcc-4.4.2/libgcc/../gcc/config/m68k/lb1sf68.asm: Assembler messages:
../../../gcc-4.4.2/libgcc/../gcc/config/m68k/lb1sf68.asm:669: Error: unknown pseudo-op: `.hidden'
make[2]: *** [_double.o] Error 1
make[2]: Leaving directory `/home/miltoncsl/Documents/coldfire/gcc/gcc-build/m68k-coff/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/home/miltoncsl/Documents/coldfire/gcc/gcc-build'
make: *** [all] Error 2
$

I'm sure that problem has easy solution, but I'm starting now. What books can help in this process?
Comment 4 Mikael Pettersson 2010-01-02 14:21:14 UTC
(In reply to comment #3)
> However, the goal is to compile gcc for the coff format and
> I'm having it difficulties.

Consider the following two facts:
1. binutils-2.17 removed m68k-coff support, that was 3.5 years ago
2. gcc-4.4's NEWS file lists m68k-coff as unmaintained and scheduled for removal

> I'm sure that problem has easy solution, but I'm starting now. What books can
> help in this process?

Your best option is to target m68k-elf instead, as that's still supported.

If you absolutely must use coff, it's probably best to use older versions of binutils and gcc from the time when it was still supported. binutils-2.16.1 and gcc-3.4.6 might be a good starting point. You can't expect any upstream support for these old versions, however.
Comment 5 Jeffrey A. Law 2010-02-24 21:45:34 UTC
  1. m68k-coff support was removed from gas and isn't realistically supported by GCC anymore either.  
  2. In-tree builds haven't been supported for ages