diff options
author | rupp <rupp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-05 18:53:16 +0000 |
---|---|---|
committer | rupp <rupp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-05 18:53:16 +0000 |
commit | 2fbafe8b229d459aea185c7f26f7ebee8188485e (patch) | |
tree | 7eb6cab16c1c3dab24694768f13fad52f0d008df | |
parent | d531c71f79c2737689aab8810083c9c6d6d3f294 (diff) | |
download | gcc-2fbafe8b229d459aea185c7f26f7ebee8188485e.tar.gz |
2002-08-05 Douglas B Rupp <rupp@gnat.com>
* config.gcc (i[34567]86-*-interix*): Replace interix.o with winnt.o
* config/i386/i386-interix.h (TARGET_NOP_FUN_DLLIMPORT,
drectve_section): Define.
* config/i386/t-interix: Replace interix.o rule with winnt.o.
* config/i386/interix.c: Remove.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56056 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config.gcc | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386-interix.h | 6 | ||||
-rw-r--r-- | gcc/config/i386/interix.c | 126 | ||||
-rw-r--r-- | gcc/config/i386/t-interix | 4 |
5 files changed, 18 insertions, 130 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be60ff1fd1b..c59b32008b9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2002-08-05 Douglas B Rupp <rupp@gnat.com> + + * config.gcc (i[34567]86-*-interix*): Replace interix.o with winnt.o + * config/i386/i386-interix.h (TARGET_NOP_FUN_DLLIMPORT, + drectve_section): Define. + * config/i386/t-interix: Replace interix.o rule with winnt.o. + * config/i386/interix.c: Remove. + 2002-08-05 Geoffrey Keating <geoffk@redhat.com> * attribs.c: Don't include obstack.h. diff --git a/gcc/config.gcc b/gcc/config.gcc index 5b8e6ea40b8..84760231d75 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1343,7 +1343,7 @@ i[34567]86-*-interix3*) xm_file="i386/xm-i386-interix.h" xm_defines=POSIX tmake_file="t-interix i386/t-interix" - extra_objs=interix.o + extra_objs=winnt.o xmake_file="x-interix" if test x$enable_threads = xyes ; then thread_file='posix' @@ -1357,7 +1357,7 @@ i[34567]86-*-interix*) xm_file="i386/xm-i386-interix.h" xm_defines=POSIX tmake_file="t-interix i386/t-interix" - extra_objs=interix.o + extra_objs=winnt.o if test x$enable_threads = xyes ; then thread_file='posix' fi diff --git a/gcc/config/i386/i386-interix.h b/gcc/config/i386/i386-interix.h index 6d74150d704..d80538f86b9 100644 --- a/gcc/config/i386/i386-interix.h +++ b/gcc/config/i386/i386-interix.h @@ -237,6 +237,12 @@ Boston, MA 02111-1307, USA. */ #undef LD_INIT_SWITCH #undef LD_FINI_SWITCH +/* The following are needed for us to be able to use winnt.c, but are not + otherwise meaningful to Interix. (The functions that use these are + never called because we don't do DLLs.) */ +#define TARGET_NOP_FUN_DLLIMPORT 1 +#define drectve_section() /* nothing */ + #define EH_FRAME_IN_DATA_SECTION #define READONLY_DATA_SECTION_ASM_OP "\t.section\t.rdata,\"r\"" diff --git a/gcc/config/i386/interix.c b/gcc/config/i386/interix.c deleted file mode 100644 index e2222cac1f3..00000000000 --- a/gcc/config/i386/interix.c +++ /dev/null @@ -1,126 +0,0 @@ -/* Subroutines for insn-output.c for Windows NT. - Copyright (C) 1998, 1999, 2002 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. */ - -#include "config.h" -#include "system.h" -#include "rtl.h" -#include "regs.h" -#include "hard-reg-set.h" -#include "output.h" -#include "tree.h" -#include "flags.h" - -/* Return string which is the former assembler name modified with a - suffix consisting of an atsign (@) followed by the number of bytes of - arguments */ - -const char * -gen_stdcall_suffix (decl) - tree decl; -{ - int total = 0; - /* ??? This probably should use XSTR (XEXP (DECL_RTL (decl), 0), 0) instead - of DECL_ASSEMBLER_NAME. */ - const char *const asmname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); - char *newsym; - - if (TYPE_ARG_TYPES (TREE_TYPE (decl))) - if (TREE_VALUE (tree_last (TYPE_ARG_TYPES (TREE_TYPE (decl)))) - == void_type_node) - { - tree formal_type = TYPE_ARG_TYPES (TREE_TYPE (decl)); - - while (TREE_VALUE (formal_type) != void_type_node) - { - int parm_size - = TREE_INT_CST_LOW (TYPE_SIZE (TREE_VALUE (formal_type))); - /* Must round up to include padding. This is done the same - way as in store_one_arg. */ - parm_size = ((parm_size + PARM_BOUNDARY - 1) - / PARM_BOUNDARY * PARM_BOUNDARY); - total += parm_size; - formal_type = TREE_CHAIN (formal_type); - } - } - - newsym = xmalloc (strlen (asmname) + 10); - sprintf (newsym, "%s@%d", asmname, total/BITS_PER_UNIT); - return IDENTIFIER_POINTER (get_identifier (newsym)); -} - -void -i386_interix_encode_section_info (decl, first) - tree decl; - int first; -{ - if (flag_pic) - { - rtx rtl = (TREE_CODE_CLASS (TREE_CODE (decl)) != 'd' - ? TREE_CST_RTL (decl) : DECL_RTL (decl)); - SYMBOL_REF_FLAG (XEXP (rtl, 0)) - = (TREE_CODE_CLASS (TREE_CODE (decl)) != 'd' - || ! TREE_PUBLIC (decl)); - } - if (first && TREE_CODE (decl) == FUNCTION_DECL) - if (lookup_attribute ("stdcall", - TYPE_ATTRIBUTES (TREE_TYPE (decl)))) - XEXP (DECL_RTL (decl), 0) = - gen_rtx (SYMBOL_REF, Pmode, gen_stdcall_suffix (decl)); -} - -#if 0 -/* Turn this back on when the linker is updated to handle grouped - .data$ sections correctly. See corresponding note in i386/interix.h. - MK. */ - -/* Cover function for UNIQUE_SECTION. */ - -void -i386_pe_unique_section (decl, reloc) - tree decl; - int reloc; -{ - int len; - const char *name; - char *string,*prefix; - - name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); - name = (* targetm.strip_name_encoding) (name); - - /* The object is put in, for example, section .text$foo. - The linker will then ultimately place them in .text - (everything from the $ on is stripped). Don't put - read-only data in .rdata section to avoid a PE linker - bug when .rdata$* grouped sections are used in code - without a .rdata section. */ - if (TREE_CODE (decl) == FUNCTION_DECL) - prefix = ".text$"; - else if (decl_readonly_section (decl, reloc)) - prefix = ".rdata$"; - else - prefix = ".data$"; - len = strlen (name) + strlen (prefix); - string = alloca (len + 1); - sprintf (string, "%s%s", prefix, name); - - DECL_SECTION_NAME (decl) = build_string (len, string); -} - -#endif /* 0 */ diff --git a/gcc/config/i386/t-interix b/gcc/config/i386/t-interix index adcf593b956..9153348f8ce 100644 --- a/gcc/config/i386/t-interix +++ b/gcc/config/i386/t-interix @@ -1,6 +1,6 @@ LIB1ASMSRC = i386/cygwin.asm LIB1ASMFUNCS = _chkstk -interix.o: $(srcdir)/config/i386/interix.c - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/i386/interix.c +winnt.o: $(srcdir)/config/i386/winnt.c + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/i386/winnt.c |