This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


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

new target: Linux on MIPS


I was really suprised that mips-linux isn't a target in egcs.  I thought
that MIPS was an active Linux target.  I've now grafted preliminary
support in.

There is no real rocket science here.  Other than comments describing
where I yanked the lines from, I think every line is borrowed from
elsewhere.

The quality of the implementation seems OK, though it's not terribly
complete.  (Funky -shared and -static stuff comes to mind.)  I've three
staged cc1 and get test results comparable to what I recall on my
embedded R3K running on a simulator.

                === gcc tests ===


Running target unix
FAIL: gcc.c-torture/execute/980506-2.c execution,  -O2 
FAIL: gcc.c-torture/execute/980506-2.c execution,  -O2 -g 
FAIL: gcc.c-torture/execute/980506-2.c execution,  -Os 
FAIL: gcc.c-torture/execute/980526-1.c execution,  -O2 -fomit-frame-pointer -finline-functions 
FAIL: gcc.c-torture/execute/980709-1.c execution,  -O0 
FAIL: gcc.c-torture/execute/strct-stdarg-1.c execution,  -O0 
FAIL: gcc.c-torture/execute/strct-stdarg-1.c execution,  -O1 
FAIL: gcc.c-torture/execute/strct-stdarg-1.c execution,  -O2 
FAIL: gcc.c-torture/execute/strct-stdarg-1.c execution,  -O2 -fomit-frame-pointer -finline-functions 
FAIL: gcc.c-torture/execute/strct-stdarg-1.c execution,  -O2 -fomit-frame-pointer -finline-functions -funroll-loops 
FAIL: gcc.c-torture/execute/strct-stdarg-1.c execution,  -O2 -fomit-frame-pointer -finline-functions -funroll-all-loops 
FAIL: gcc.c-torture/execute/strct-stdarg-1.c execution,  -O2 -g 
FAIL: gcc.c-torture/execute/strct-stdarg-1.c execution,  -Os 
FAIL: gcc.c-torture/execute/memcheck/blkarg.c execution,  -O2 -fomit-frame-pointer -finline-functions 
FAIL: gcc.c-torture/special/930510-1.c (test for excess errors)
FAIL: gcc.misc-tests/gcov-1.c (test for excess errors)
FAIL: gcc.misc-tests/gcov-2.c (test for excess errors) (PRMS 8294)

                === gcc Summary ===

# of expected passes            7792
# of unexpected failures        17
# of expected failures          13
# of unsupported tests          20
/home/robertl/src/negcs/gcc/xgcc version egcs-2.92.25 19981202 (gcc2 ss-980609 experimental)



I've exercised only gcc itself.  I haven't done all the other languages
becuase this machine is butt-slow.  (Sorry, Greg.)  I haven't examined
any of the failures above.  From here, I think the linux-mips community
(that's your goal to wrangle up, Greg. :-) can take it on and handle the
routine building and testing and so on.


(P.S.  I'd like to waive my checkin abilities on this and have someone
else do the commit, please.    My local trees are a mess.)






	* configure.in (mipsel-*-linux*): New target.
	* mips/linux.h: New file, based on other Linux targets.

Index: configure.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/configure.in,v
retrieving revision 1.178.2.3
diff -u -p -r1.178.2.3 configure.in
--- configure.in	1998/11/23 07:57:55	1.178.2.3
+++ configure.in	1998/12/03 18:59:56
@@ -2198,6 +2198,15 @@ changequote([,])dnl
 		# On NetBSD, the headers are already okay, except for math.h.
 		tmake_file=t-netbsd
 		;;
+	mipsel-*-linux*)			# Little endian Linux MIPS
+		xmake_file=x-linux
+		xm_file="xm-siglist.h ${xm_file}"
+		tm_file="mips/elfl.h mips/linux.h"
+		extra_parts="crtbegin.o crtend.o"
+		gnu_ld=yes
+		gas=yes
+		fixincludes=Makefile.in 
+		;;
 	mips-sony-bsd* | mips-sony-newsos*)	# Sony NEWS 3600 or risc/news.
 		tm_file="mips/news4.h ${tm_file}"
 		if test x$stabs = xyes; then

config/mips/linux.h

/* Definitions for MIPS running Linux-based GNU systems with ELF format.
   Copyright (C) 1998 Free Software Foundation, Inc.

This file is part of GNU CC.

GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING.  If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */

/* Required to keep collect2.c happy */
#undef OBJECT_FORMAT_COFF 

#define HAVE_ATEXIT

/* If we don't set MASK_ABICALLS, we can't default to PIC. */
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_ABICALLS|MASK_GAS)


/* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
   the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
   provides part of the support for getting C++ file-scope static
   object constructed before entering `main'. */

#undef  STARTFILE_SPEC
#define STARTFILE_SPEC \
  "%{!shared: \
     %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\
   crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"

/* Provide a ENDFILE_SPEC appropriate for GNU/Linux.  Here we tack on
   the GNU/Linux magical crtend.o file (see crtstuff.c) which
   provides part of the support for getting C++ file-scope static
   object constructed before entering `main', followed by a normal
   GNU/Linux "finalizer" file, `crtn.o'.  */

#undef  ENDFILE_SPEC
#define ENDFILE_SPEC \
  "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"

/* From iris5.h */
/* -G is incompatible with -KPIC which is the default, so only allow objects
   in the small data section if the user explicitly asks for it.  */
#undef MIPS_DEFAULT_GVALUE
#define MIPS_DEFAULT_GVALUE 0

/* Borrowed from sparc/linux.h */
#undef LINK_SPEC
#define LINK_SPEC "-Y P,/usr/lib %{shared:-shared} \
  %{!shared: \
    %{!ibcs: \
      %{!static: \
        %{rdynamic:-export-dynamic} \
        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
        %{static:-static}}}"


#undef SUBTARGET_ASM_SPEC
#define SUBTARGET_ASM_SPEC "-KPIC"


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