From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2359 invoked by alias); 18 Jan 2002 05:06:10 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 2345 invoked by uid 71); 18 Jan 2002 05:06:09 -0000 Date: Thu, 17 Jan 2002 21:06:00 -0000 Message-ID: <20020118050609.2344.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Craig Rodrigues Subject: Re: target/5410: NetBSD/i386/ELF configuration should be pushed to 3.0 branch Reply-To: Craig Rodrigues X-SW-Source: 2002-01/txt/msg00638.txt.bz2 List-Id: The following reply was made to PR target/5410; it has been noted by GNATS. From: Craig Rodrigues To: gcc-gnats@gcc.gnu.org Cc: gcc-patches@gcc.gnu.org, gcc-prs@gcc.gnu.org, zack@codesourcery.com, nobody@gcc.gnu.org, gcc-patches@gcc.gnu.org, mark@codesourcery.com Subject: Re: target/5410: NetBSD/i386/ELF configuration should be pushed to 3.0 branch Date: Thu, 17 Jan 2002 23:59:30 -0500 Hi, Seems reasonable to me for 3.0.4, but not my call to make. -- Craig Rodrigues http://www.gis.net/~craigr rodrigc@mediaone.net 2002-01-17 Zack Weinberg PR target/5410 * config/i386/netbsd-elf.h: Added. * config.gcc (i[34567]86-*-netbsdelf*): Added. Index: config.gcc =================================================================== RCS file: /cvs/gcc/egcs/gcc/config.gcc,v retrieving revision 1.27.2.18 diff -u -p -r1.27.2.18 config.gcc --- config.gcc 2001/11/18 00:29:45 1.27.2.18 +++ config.gcc 2002/01/17 09:11:18 @@ -1134,6 +1134,13 @@ i[34567]86-*-freebsd[12] | i[34567]86-*- i[34567]86-*-freebsd*) tm_file="${tm_file} i386/att.h svr4.h ${fbsd_tm_file} i386/freebsd.h i386/perform.h" ;; +i[34567]86-*-netbsdelf*) + xm_defines=POSIX + tm_file="${tm_file} i386/att.h svr4.h i386/netbsd-elf.h" + tmake_file=t-netbsd + gnu_ld=yes + float_format=i386 + ;; i[34567]86-*-netbsd*) tm_file=i386/netbsd.h tmake_file=t-netbsd Index: config/i386/netbsd-elf.h =================================================================== RCS file: netbsd-elf.h diff -N netbsd-elf.h --- /dev/null Tue May 5 13:32:27 1998 +++ netbsd-elf.h Thu Jan 17 01:11:18 2002 @@ -0,0 +1,192 @@ +/* Definitions of target machine for GNU compiler, + for i386/ELF NetBSD systems. + Copyright (C) 2001 Free Software Foundation, Inc. + Contributed by matthew green + +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. */ + +/* Provide a LIB_SPEC appropriate for NetBSD. Just select the appropriate + libc, depending on whether we're doing profiling; if `-posix' is specified, + link against the appropriate libposix first. */ + +#undef LIB_SPEC +#define LIB_SPEC \ + "%{posix:%{!p:%{!pg:-lposix}}%{p:-lposix_p}%{pg:-lposix_p}} \ + %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}" + +/* Provide a STARTFILE_SPEC appropriate for NetBSD ELF targets. Here we + provide support for the special GCC option -static. On ELF targets, + we also add the crtbegin.o file which provides part of the support + for getting C++ file-scope static objects constructed before entering + `main'. We use the NetBSD crt0. */ + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt0%O%s} \ + %{!pg: \ + %{p:gcrt0%O%s} \ + %{!p:crt0%O%s}}} \ + %{!shared:crtbegin%O%s} %{shared:crtbeginS%O%s}" + +/* Provide an ENDFILE_SPEC approrpiate for NetBSD ELF targets. Here we + add crtend.o, which provides part of the support for getting C++ + file-scope static objects deconstructed after exiting `main'. */ + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + "%{!shared:crtend%O%s} %{shared:crtendS%O%s}" + +/* Provide a LINK_SPEC appropriate for a NetBSD/i386 ELF target. Only + the linker emulation is i386-specific. The rest are + common to all ELF targets, except for the name of the start function. */ + +#undef LINK_SPEC +#define LINK_SPEC \ + "-m elf_i386 \ + %{assert*} %{R*} \ + %{shared:-shared} \ + %{!shared: \ + -dp \ + %{!nostdlib:%{!r*:%{!e*:-e __start}}} \ + %{!static: \ + -dy %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}} \ + %{static:-static}}" + +/* Provide a CPP_SPEC appropriate for NetBSD. Current we just deal with + the GCC option `-posix'. */ + +#undef CPP_SPEC +#define CPP_SPEC "%{posix:-D_POSIX_SOURCE}" + +/* Provide an ASM_SPEC appropriate for NetBSD. Currently we only deal + with the options for generating PIC code. */ + +#undef ASM_SPEC +#define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k -K}" + +/* Provide a LIB_SPEC appropriate for NetBSD. Just select the appropriate + libc, depending on whether we're doing profiling. */ + +#undef LIB_SPEC +#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}" + +/* This defines which switch letters take arguments. */ +#undef SWITCH_TAKES_ARG +#define SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG(CHAR) \ + || (CHAR) == 'R') + +/* Implicit library calls should use memcpy, not bcopy, etc. */ + +#define TARGET_MEM_FUNCTIONS + +/* Names to predefine in the preprocessor for this target machine. */ + +#define CPP_PREDEFINES "\ +-Di386 -D__NetBSD__ -D__ELF__ -Asystem(unix) -Asystem(NetBSD)" + +/* Make gcc agree with */ + +#undef SIZE_TYPE +#define SIZE_TYPE "unsigned int" + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "int" + +#undef WCHAR_TYPE +#define WCHAR_TYPE "int" + +#undef WCHAR_UNSIGNED +#define WCHAR_UNSIGNED 0 + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 32 + +#undef WINT_TYPE +#define WINT_TYPE "int" + +/* Output assembler code to FILE to increment profiler label # LABELNO + for profiling a function entry. Under NetBSD/i386, the assembler does + nothing special with -pg. */ + +#undef ASM_APP_ON +#define ASM_APP_ON "#APP\n" + +#undef ASM_APP_OFF +#define ASM_APP_OFF "#NO_APP\n" + +#undef ASM_FINAL_SPEC +#define ASM_FINAL_SPEC "%{pipe:-}" + +#undef DBX_REGISTER_NUMBER +#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n] + +#undef NO_PROFILE_COUNTERS +#define NO_PROFILE_COUNTERS + +#undef HAS_INIT_SECTION + +#undef DEFAULT_VTABLE_THUNKS +#define DEFAULT_VTABLE_THUNKS 1 + +/* This is how we tell the assembler that two symbols have the same value. */ + +#define ASM_OUTPUT_DEF(FILE,NAME1,NAME2) \ + do { assemble_name(FILE, NAME1); \ + fputs(" = ", FILE); \ + assemble_name(FILE, NAME2); \ + fputc('\n', FILE); } while (0) + +/* A C statement to output to the stdio stream FILE an assembler + command to advance the location counter to a multiple of 1<