summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrupp <rupp@138bc75d-0d04-0410-961f-82ee72b054a4>2002-08-05 18:53:16 +0000
committerrupp <rupp@138bc75d-0d04-0410-961f-82ee72b054a4>2002-08-05 18:53:16 +0000
commit2fbafe8b229d459aea185c7f26f7ebee8188485e (patch)
tree7eb6cab16c1c3dab24694768f13fad52f0d008df
parentd531c71f79c2737689aab8810083c9c6d6d3f294 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config.gcc4
-rw-r--r--gcc/config/i386/i386-interix.h6
-rw-r--r--gcc/config/i386/interix.c126
-rw-r--r--gcc/config/i386/t-interix4
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