OSDN Git Service

* configure.in (hppa*-*-*): Add som.h or elf.h to tm_file as
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Jun 1999 06:11:46 +0000 (06:11 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Jun 1999 06:11:46 +0000 (06:11 +0000)
        appropriate.
        * configure: Rebuilt.
        (hppa1.1-*-pro*, hppa1.1-*-rtems*): Define target_cpu_default.
        * pa.h: Include dbxelf.h.  Delete various dbx/stabs related
        definitions made redundant by dbxelf.h inclusion.  Delete
        lots of definitions related to assembly output that are
        specific to the SOM object format.
        * pa.c (output_function_prologue): Do not emit the function's
        name for OBJ_ELF.
        * pa-pro-end.h (STARTFILE_SPEC): Undefine before redefining.
        * pa-pro.h: Deleted.
        * som.h: New file with SOM specific definitions.
        * elf.h: New file with ELF specific definitions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27846 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/pa/elf.h [new file with mode: 0644]
gcc/config/pa/pa-pro-end.h
gcc/config/pa/pa-pro.h [deleted file]
gcc/config/pa/pa.c
gcc/config/pa/pa.h
gcc/config/pa/som.h [new file with mode: 0644]
gcc/configure
gcc/configure.in

index a930476..d667745 100644 (file)
@@ -1,5 +1,20 @@
 Wed Jun 30 03:31:54 1999  Jeffrey A Law  (law@cygnus.com)
 
+       * configure.in (hppa*-*-*): Add som.h or elf.h to tm_file as
+       appropriate.
+       * configure: Rebuilt.
+       (hppa1.1-*-pro*, hppa1.1-*-rtems*): Define target_cpu_default.
+       * pa.h: Include dbxelf.h.  Delete various dbx/stabs related
+       definitions made redundant by dbxelf.h inclusion.  Delete
+       lots of definitions related to assembly output that are
+       specific to the SOM object format.
+       * pa.c (output_function_prologue): Do not emit the function's
+       name for OBJ_ELF.
+       * pa-pro-end.h (STARTFILE_SPEC): Undefine before redefining.
+       * pa-pro.h: Deleted.
+       * som.h: New file with SOM specific definitions.
+       * elf.h: New file with ELF specific definitions.
+
        * elfos.h (const_section): Output a tab before assembler directives.
        (ctors_section, dtors_section): Likewise.
        (ASM_OUTPUT_SECTION_NAME): Likewise.
diff --git a/gcc/config/pa/elf.h b/gcc/config/pa/elf.h
new file mode 100644 (file)
index 0000000..067d7c0
--- /dev/null
@@ -0,0 +1,43 @@
+/* Definitions for ELF assembler support.
+   Copyright (C) 1999 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 1, 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.  */
+
+/* So we can conditionalize small amounts of code in pa.c or pa.md.  */
+#define OBJ_ELF
+
+/* Dummy definitions.  We do not care about this stuff for ELF.  */
+#define TEXT_SPACE_P(DECL) 0
+#define FUNCTION_NAME_P(NAME) 0
+
+#define TEXT_SECTION_ASM_OP "\t.text"
+#define DATA_SECTION_ASM_OP "\t.data"
+#define BSS_SECTION_ASM_OP "\t.bss"
+
+/* This is how to output a command to make the user-level label named NAME
+   defined for reference from other files.  */
+
+#define ASM_GLOBALIZE_LABEL(FILE,NAME)  \
+  (fputs ("\t.globl ", FILE), assemble_name (FILE, NAME), fputs ("\n", FILE))
+
+/* This is how to output an assembler line defining an `int' constant.  */
+
+#define ASM_OUTPUT_INT(FILE,VALUE)  \
+{ fputs ("\t.word ", FILE);                    \
+  output_addr_const (FILE, (VALUE));           \
+  fputs ("\n", FILE);}
index de88036..f36b887 100644 (file)
@@ -37,6 +37,6 @@ Boston, MA 02111-1307, USA.  */
 #define NO_IMPLICIT_EXTERN_C
 
 /* We don't want a crt0.o to get linked in automatically, we want the
-   linker script to pull it in.
- */
+   linker script to pull it in.  */
+#undef STARTFILE_SPEC
 #define STARTFILE_SPEC ""
diff --git a/gcc/config/pa/pa-pro.h b/gcc/config/pa/pa-pro.h
deleted file mode 100644 (file)
index 8a4c2bc..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Definitions of target machine for GNU compiler, for PRO.
-   Copyright (C) 1994, 1995, 1996 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.  */
-
-/* Global constructor and destructor support.  */
-/* Define the pseudo-ops used to switch to the .ctors and .dtors sections.
-   Note that we want to give these sections the SHF_WRITE attribute
-   because these sections will actually contain data (i.e. tables of
-   addresses of functions in the current root executable or shared library
-   file) and, in the case of a shared library, the relocatable addresses
-   will have to be properly resolved/relocated (and then written into) by
-   the dynamic linker when it actually attaches the given shared library
-   to the executing process.  */
-#define CTORS_SECTION_ASM_OP    "\t.section\t\".ctors\",#alloc,#write"
-#define DTORS_SECTION_ASM_OP    "\t.section\t\".dtors\",#alloc,#write"
-
-#define CTORS_SECTION_FUNCTION                                         \
-void                                                                   \
-ctors_section ()                                                       \
-{                                                                      \
-  if (in_section != in_ctors)                                          \
-    {                                                                  \
-      fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP);            \
-      in_section = in_ctors;                                           \
-    }                                                                  \
-}
-
-#define DTORS_SECTION_FUNCTION                                         \
-void                                                                   \
-dtors_section ()                                                       \
-{                                                                      \
-  if (in_section != in_dtors)                                          \
-    {                                                                  \
-      fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP);            \
-      in_section = in_dtors;                                           \
-    }                                                                  \
-}
-
-
-/* A C statement (sans semicolon) to output an element in the table of
-   global destructors.  */
-#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)                                       \
-  do {                                                                 \
-    dtors_section ();                                                  \
-    fputs ("\t.word\t ", FILE);                                \
-    assemble_name (FILE, NAME);                                        \
-    fputs ("\n", FILE);                                                \
-  } while (0)
-
-/* A C statement (sans semicolon) to output an element in the table of
-   global constructors.  */
-#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)                              \
-  do {                                                                 \
-    ctors_section ();                                                  \
-    fputs ("\t.word\t ", FILE);                                \
-    assemble_name (FILE, NAME);                                                \
-    fputs ("\n", FILE);                                                \
-  } while (0)
-
-#define TARGET_DEFAULT (MASK_JUMP_IN_DELAY | MASK_PORTABLE_RUNTIME | \
-MASK_GAS | MASK_NO_SPACE_REGS | MASK_SOFT_FLOAT )
index fa1287e..6cf4828 100644 (file)
@@ -2610,7 +2610,9 @@ output_function_prologue (file, size)
   /* The function's label and associated .PROC must never be
      separated and must be output *after* any profiling declarations
      to avoid changing spaces/subspaces within a procedure.  */
+#ifdef OBJ_SOM
   ASM_OUTPUT_LABEL (file, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
+#endif
   fputs ("\t.PROC\n", file);
 
   /* hppa_expand_prologue does the dirty work now.  We just need
index a6508e6..ad18e4b 100644 (file)
@@ -209,39 +209,38 @@ extern int target_flags;
 
 #define OVERRIDE_OPTIONS override_options ()
 
-#define DBX_DEBUGGING_INFO
+/* stabs-in-som is nearly identical to stabs-in-elf.  To avoid useless
+   code duplication we simply include this file and override as needed.  */
+#include "dbxelf.h"
+
+/* We do not have to be compatible with dbx, so we enable gdb extensions
+   by default.  */
 #define DEFAULT_GDB_EXTENSIONS 1
 
-/* This is the way other stabs-in-XXX tools do things.  We will be
-   compatible.  */
-#define DBX_BLOCKS_FUNCTION_RELATIVE 1
-
-/* Likewise for linenos.
-
-   We make the first line stab special to avoid adding several
-   gross hacks to GAS.  */
-#undef  ASM_OUTPUT_SOURCE_LINE
-#define ASM_OUTPUT_SOURCE_LINE(file, line)             \
-  { static int sym_lineno = 1;                         \
-    static tree last_function_decl = NULL;             \
-    if (current_function_decl == last_function_decl)   \
-      fprintf (file, "\t.stabn 68,0,%d,L$M%d-%s\nL$M%d:\n",    \
-              line, sym_lineno,                        \
-              XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0) + 1, \
-              sym_lineno);                             \
-    else                                               \
-      fprintf (file, "\t.stabn 68,0,%d,0\n", line);    \
-    last_function_decl = current_function_decl;                \
-    sym_lineno += 1; }
-
-/* But, to make this work, we have to output the stabs for the function
-   name *first*...  */
-#define DBX_FUNCTION_FIRST
+/* This used to be zero (no max length), but big enums and such can
+   cause huge strings which killed gas.
+
+   We also have to avoid lossage in dbxout.c -- it does not compute the
+   string size accurately, so we are real conservative here.  */
+#undef DBX_CONTIN_LENGTH
+#define DBX_CONTIN_LENGTH 3000
 
 /* Only labels should ever begin in column zero.  */
 #define ASM_STABS_OP "\t.stabs"
 #define ASM_STABN_OP "\t.stabn"
 
+/* How to renumber registers for dbx and gdb.
+
+   Registers 0  - 31 remain unchanged.
+
+   Registers 32 - 87 are mapped to 72 - 127
+
+   Register 88 is mapped to 32.  */
+
+#define DBX_REGISTER_NUMBER(REGNO) \
+  ((REGNO) <= 31 ? (REGNO) :                                           \
+   ((REGNO) > 31 && (REGNO) <= 87 ? (REGNO) + 40 : 32))
+
 /* GDB always assumes the current function's frame begins at the value
    of the stack pointer upon entry to the current function.  Accessing
    local variables and parameters passed on the stack is done using the
@@ -263,18 +262,6 @@ extern int target_flags;
   ((GET_CODE (X) == PLUS ? OFFSET : 0) \
     + (frame_pointer_needed ? 0 : compute_frame_size (get_frame_size (), 0)))
 
-/* gdb needs a null N_SO at the end of each file for scattered loading. */
-
-#undef DBX_OUTPUT_MAIN_SOURCE_FILE_END
-#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \
-  text_section (); \
-  if (!TARGET_PORTABLE_RUNTIME) \
-    fputs ("\t.SPACE $TEXT$\n\t.NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE); \
-  else \
-    fprintf (FILE, "%s\n", TEXT_SECTION_ASM_OP); \
-  fprintf (FILE,                                                       \
-          "\t.stabs \"\",%d,0,0,L$text_end0000\nL$text_end0000:\n", N_SO)
-
 #if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_PA_11) == 0
 #define CPP_SPEC "%{msnake:-D__hp9000s700 -D_PA_RISC1_1}\
  %{mpa-risc-1-1:-D__hp9000s700 -D_PA_RISC1_1}\
@@ -324,55 +311,6 @@ int lhs_lshift_cint_operand ();
 /* Names to predefine in the preprocessor for this target machine.  */
 
 #define CPP_PREDEFINES "-Dhppa -Dhp9000s800 -D__hp9000s800 -Dhp9k8 -Dunix -Dhp9000 -Dhp800 -Dspectrum -DREVARGV -Asystem(unix) -Asystem(bsd) -Acpu(hppa) -Amachine(hppa)"
-
-/* HPUX has a program 'chatr' to list the dependencies of dynamically
-   linked executables and shared libraries.  */
-#define LDD_SUFFIX "chatr"
-/* Look for lines like "dynamic   /usr/lib/X11R5/libX11.sl"
-   or "static    /usr/lib/X11R5/libX11.sl". 
-
-   HPUX 10.20 also has lines like "static branch prediction ..."
-   so we filter that out explicitly.
-
-   We also try to bound our search for libraries with marker
-   lines.  What a pain.  */
-#define PARSE_LDD_OUTPUT(PTR)                                  \
-do {                                                           \
-  static int in_shlib_list = 0;                                        \
-  while (*PTR == ' ') PTR++;                                   \
-  if (strncmp (PTR, "shared library list:",                    \
-              sizeof ("shared library list:") - 1) == 0)       \
-    {                                                          \
-      PTR = 0;                                                 \
-      in_shlib_list = 1;                                       \
-    }                                                          \
-  else if (strncmp (PTR, "shared library binding:",            \
-                   sizeof ("shared library binding:") - 1) == 0)\
-    {                                                          \
-      PTR = 0;                                                 \
-      in_shlib_list = 0;                                       \
-    }                                                          \
-  else if (strncmp (PTR, "static branch prediction disabled",  \
-                   sizeof ("static branch prediction disabled") - 1) == 0)\
-    {                                                          \
-      PTR = 0;                                                 \
-      in_shlib_list = 0;                                       \
-    }                                                          \
-  else if (in_shlib_list                                       \
-          &&  strncmp (PTR, "dynamic", sizeof ("dynamic") - 1) == 0) \
-    {                                                          \
-      PTR += sizeof ("dynamic") - 1;                           \
-      while (*p == ' ') PTR++;                                 \
-    }                                                          \
-  else if (in_shlib_list                                       \
-          && strncmp (PTR, "static", sizeof ("static") - 1) == 0) \
-    {                                                          \
-      PTR += sizeof ("static") - 1;                            \
-      while (*p == ' ') PTR++;                                 \
-    }                                                          \
-  else                                                         \
-    PTR = 0;                                                   \
-} while (0)
 \f
 /* target machine storage layout */
 
@@ -1143,21 +1081,6 @@ struct hppa_args {int words, nargs_prototype, indirect; };
 extern struct rtx_def *hppa_compare_op0, *hppa_compare_op1;
 extern enum cmp_type hppa_branch_type;
 
-/* Output the label for a function definition.  */
-#ifndef HP_FP_ARG_DESCRIPTOR_REVERSED
-#define ASM_DOUBLE_ARG_DESCRIPTORS(FILE, ARG0, ARG1)   \
-  do { fprintf (FILE, ",ARGW%d=FR", (ARG0));           \
-       fprintf (FILE, ",ARGW%d=FU", (ARG1));} while (0)
-#define DFMODE_RETURN_STRING ",RTNVAL=FU"
-#define SFMODE_RETURN_STRING ",RTNVAL=FR"
-#else
-#define ASM_DOUBLE_ARG_DESCRIPTORS(FILE, ARG0, ARG1)   \
-  do { fprintf (FILE, ",ARGW%d=FU", (ARG0));           \
-       fprintf (FILE, ",ARGW%d=FR", (ARG1));} while (0)
-#define DFMODE_RETURN_STRING ",RTNVAL=FR"
-#define SFMODE_RETURN_STRING ",RTNVAL=FU"
-#endif
-
 #define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
 { char *target_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \
   STRIP_NAME_ENCODING (target_name, target_name); \
@@ -1170,101 +1093,6 @@ extern enum cmp_type hppa_branch_type;
   fprintf (FILE, "\n\t.EXIT\n\t.PROCEND\n"); \
 }
 
-/* NAME refers to the function's name.  If we are placing each function into
-   its own section, we need to switch to the section for this function.  Note
-   that the section name will have a "." prefix.  */
-#define ASM_OUTPUT_FUNCTION_PREFIX(FILE, NAME) \
-  {                                                                    \
-    char *name;                                                                \
-    STRIP_NAME_ENCODING (name, NAME);                                  \
-    if (!TARGET_PORTABLE_RUNTIME && TARGET_GAS && in_section == in_text) \
-      fputs ("\t.NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE); \
-    else if (! TARGET_PORTABLE_RUNTIME && TARGET_GAS)                  \
-      fprintf (FILE,                                                   \
-              "\t.SUBSPA .%s\n", name);                                \
-  }
-    
-#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
-    do { tree fntype = TREE_TYPE (TREE_TYPE (DECL));                   \
-        tree tree_type = TREE_TYPE (DECL);                             \
-        tree parm;                                                     \
-        int i;                                                         \
-        if (TREE_PUBLIC (DECL) || TARGET_GAS)                          \
-          { extern int current_function_varargs;                       \
-            if (TREE_PUBLIC (DECL))                                    \
-              {                                                        \
-                fputs ("\t.EXPORT ", FILE);                            \
-                assemble_name (FILE, NAME);                            \
-                fputs (",ENTRY,PRIV_LEV=3", FILE);                     \
-              }                                                        \
-            else                                                       \
-              {                                                        \
-                fputs ("\t.PARAM ", FILE);                             \
-                assemble_name (FILE, NAME);                            \
-              }                                                        \
-            if (TARGET_PORTABLE_RUNTIME)                               \
-              {                                                        \
-                fputs (",ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO,", FILE); \
-                fputs ("RTNVAL=NO\n", FILE);                           \
-                break;                                                 \
-              }                                                        \
-            for (parm = DECL_ARGUMENTS (DECL), i = 0; parm && i < 4;   \
-                 parm = TREE_CHAIN (parm))                             \
-              {                                                        \
-                if (TYPE_MODE (DECL_ARG_TYPE (parm)) == SFmode         \
-                    && ! TARGET_SOFT_FLOAT)                            \
-                  fprintf (FILE, ",ARGW%d=FR", i++);                   \
-                else if (TYPE_MODE (DECL_ARG_TYPE (parm)) == DFmode    \
-                         && ! TARGET_SOFT_FLOAT)                       \
-                  {                                                    \
-                    if (i <= 2)                                        \
-                      {                                                \
-                        if (i == 1) i++;                               \
-                        ASM_DOUBLE_ARG_DESCRIPTORS (FILE, i++, i++);   \
-                      }                                                \
-                    else                                               \
-                      break;                                           \
-                  }                                                    \
-                else                                                   \
-                  {                                                    \
-                    int arg_size =                                     \
-                      FUNCTION_ARG_SIZE (TYPE_MODE (DECL_ARG_TYPE (parm)),\
-                                         DECL_ARG_TYPE (parm));        \
-                    /* Passing structs by invisible reference uses     \
-                       one general register.  */                       \
-                    if (arg_size > 2                                   \
-                        || TREE_ADDRESSABLE (DECL_ARG_TYPE (parm)))    \
-                      arg_size = 1;                                    \
-                    if (arg_size == 2 && i <= 2)                       \
-                      {                                                \
-                        if (i == 1) i++;                               \
-                        fprintf (FILE, ",ARGW%d=GR", i++);             \
-                        fprintf (FILE, ",ARGW%d=GR", i++);             \
-                      }                                                \
-                    else if (arg_size == 1)                            \
-                      fprintf (FILE, ",ARGW%d=GR", i++);               \
-                    else                                               \
-                      i += arg_size;                                   \
-                  }                                                    \
-              }                                                        \
-            /* anonymous args */                                       \
-            if ((TYPE_ARG_TYPES (tree_type) != 0                       \
-                 && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (tree_type)))\
-                     != void_type_node))                               \
-                || current_function_varargs)                           \
-              {                                                        \
-                for (; i < 4; i++)                                     \
-                  fprintf (FILE, ",ARGW%d=GR", i);                     \
-              }                                                        \
-            if (TYPE_MODE (fntype) == DFmode && ! TARGET_SOFT_FLOAT)   \
-              fputs (DFMODE_RETURN_STRING, FILE);                      \
-            else if (TYPE_MODE (fntype) == SFmode && ! TARGET_SOFT_FLOAT) \
-              fputs (SFMODE_RETURN_STRING, FILE);                      \
-            else if (fntype != void_type_node)                         \
-              fputs (",RTNVAL=GR", FILE);                              \
-            fputs ("\n", FILE);                                        \
-          }} while (0)
-
 /* This macro generates the assembly code for function entry.
    FILE is a stdio stream to output the code to.
    SIZE is an int: how many units of temporary storage to allocate.
@@ -1746,79 +1574,6 @@ extern struct rtx_def *hppa_legitimize_address ();
       || GET_CODE (ADDR) == POST_INC)  \
     goto LABEL
 \f
-/* Define this macro if references to a symbol must be treated
-   differently depending on something about the variable or
-   function named by the symbol (such as what section it is in).
-
-   The macro definition, if any, is executed immediately after the
-   rtl for DECL or other node is created.
-   The value of the rtl will be a `mem' whose address is a
-   `symbol_ref'.
-
-   The usual thing for this macro to do is to a flag in the
-   `symbol_ref' (such as `SYMBOL_REF_FLAG') or to store a modified
-   name string in the `symbol_ref' (if one bit is not enough
-   information).
-
-   On the HP-PA we use this to indicate if a symbol is in text or
-   data space.  Also, function labels need special treatment. */
-
-#define TEXT_SPACE_P(DECL)\
-  (TREE_CODE (DECL) == FUNCTION_DECL                                   \
-   || (TREE_CODE (DECL) == VAR_DECL                                    \
-       && TREE_READONLY (DECL) && ! TREE_SIDE_EFFECTS (DECL)           \
-       && (! DECL_INITIAL (DECL) || ! reloc_needed (DECL_INITIAL (DECL))) \
-       && !flag_pic)                                                   \
-   || (TREE_CODE_CLASS (TREE_CODE (DECL)) == 'c'                       \
-       && !(TREE_CODE (DECL) == STRING_CST && flag_writable_strings)))
-
-#define FUNCTION_NAME_P(NAME) \
-(*(NAME) == '@' || (*(NAME) == '*' && *((NAME) + 1) == '@'))
-
-#define ENCODE_SECTION_INFO(DECL)\
-do                                                     \
-  { if (TEXT_SPACE_P (DECL))                           \
-      {        rtx _rtl;                                       \
-       if (TREE_CODE (DECL) == FUNCTION_DECL           \
-           || TREE_CODE (DECL) == VAR_DECL)            \
-         _rtl = DECL_RTL (DECL);                       \
-       else                                            \
-         _rtl = TREE_CST_RTL (DECL);                   \
-       SYMBOL_REF_FLAG (XEXP (_rtl, 0)) = 1;           \
-       if (TREE_CODE (DECL) == FUNCTION_DECL)          \
-         hppa_encode_label (XEXP (DECL_RTL (DECL), 0), 0);\
-      }                                                        \
-  }                                                    \
-while (0)
-
-/* Store the user-specified part of SYMBOL_NAME in VAR.
-   This is sort of inverse to ENCODE_SECTION_INFO.  */
-
-#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME)   \
-  (VAR) = ((SYMBOL_NAME)  + ((SYMBOL_NAME)[0] == '*' ? \
-                            1 + (SYMBOL_NAME)[1] == '@'\
-                            : (SYMBOL_NAME)[0] == '@'))
-
-/* On hpux10, the linker will give an error if we have a reference
-   in the read-only data section to a symbol defined in a shared
-   library.  Therefore, expressions that might require a reloc can
-   not be placed in the read-only data section.  */
-#define SELECT_SECTION(EXP,RELOC) \
-  if (TREE_CODE (EXP) == VAR_DECL \
-      && TREE_READONLY (EXP) \
-      && !TREE_THIS_VOLATILE (EXP) \
-      && DECL_INITIAL (EXP) \
-      && (DECL_INITIAL (EXP) == error_mark_node \
-          || TREE_CONSTANT (DECL_INITIAL (EXP))) \
-      && !RELOC) \
-    readonly_data_section (); \
-  else if (TREE_CODE_CLASS (TREE_CODE (EXP)) == 'c' \
-          && !(TREE_CODE (EXP) == STRING_CST && flag_writable_strings) \
-          && !RELOC) \
-    readonly_data_section (); \
-  else \
-    data_section ();
-   
 /* Arghh.  The hpux10 linker chokes if we have a reference to symbols
    in a readonly data section when the symbol is defined in a shared
    library.  Since we can't know at compile time if a symbol will be
@@ -1865,15 +1620,6 @@ while (0)
 /* Nonzero if access to memory by bytes is slow and undesirable.  */
 #define SLOW_BYTE_ACCESS 1
 
-/* Do not break .stabs pseudos into continuations.
-
-   This used to be zero (no max length), but big enums and such can
-   cause huge strings which killed gas.
-
-   We also have to avoid lossage in dbxout.c -- it does not compute the
-   string size accurately, so we are real conservative here.  */
-#define DBX_CONTIN_LENGTH 3000
-
 /* Value is 1 if truncating an integer of INPREC bits to OUTPREC bits
    is done just by pretending it is already truncated.  */
 #define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
@@ -2055,25 +1801,6 @@ while (0)
 \f
 /* Control the assembler format that we output.  */
 
-/* Output at beginning of assembler file.  */
-
-#define ASM_FILE_START(FILE) \
-do { fputs ("\t.SPACE $PRIVATE$\n\
-\t.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31\n\
-\t.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82\n\
-\t.SPACE $TEXT$\n\
-\t.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44\n\
-\t.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n\
-\t.IMPORT $global$,DATA\n\
-\t.IMPORT $$dyncall,MILLICODE\n", FILE);\
-     if (profile_flag)\
-       fprintf (FILE, "\t.IMPORT _mcount, CODE\n");\
-     if (write_symbols != NO_DEBUG) \
-       output_file_directive ((FILE), main_input_filename); \
-   } while (0)
-
-#define ASM_FILE_END(FILE) output_deferred_plabels (FILE)
-
 /* Output to assembler file text saying following lines
    may contain character constants, extra white space, comments, etc.  */
 
@@ -2084,98 +1811,6 @@ do { fputs ("\t.SPACE $PRIVATE$\n\
 
 #define ASM_APP_OFF ""
 
-/* We don't yet know how to identify GCC to HP-PA machines.  */
-#define ASM_IDENTIFY_GCC(FILE) fputs ("; gcc_compiled.:\n", FILE)
-
-/* Output before code.  */
-
-/* Supposedly the assembler rejects the command if there is no tab!  */
-#define TEXT_SECTION_ASM_OP "\t.SPACE $TEXT$\n\t.SUBSPA $CODE$\n"
-
-/* Output before read-only data.  */
-
-/* Supposedly the assembler rejects the command if there is no tab!  */
-#define READONLY_DATA_ASM_OP "\t.SPACE $TEXT$\n\t.SUBSPA $LIT$\n"
-
-#define READONLY_DATA_SECTION readonly_data
-
-/* Output before writable data.  */
-
-/* Supposedly the assembler rejects the command if there is no tab!  */
-#define DATA_SECTION_ASM_OP "\t.SPACE $PRIVATE$\n\t.SUBSPA $DATA$\n"
-
-/* Output before uninitialized data.  */
-
-#define BSS_SECTION_ASM_OP "\t.SPACE $PRIVATE$\n\t.SUBSPA $BSS$\n"
-
-/* Define the .bss section for ASM_OUTPUT_LOCAL to use. */
-
-#ifndef CTORS_SECTION_FUNCTION
-#define EXTRA_SECTIONS in_readonly_data
-#define CTORS_SECTION_FUNCTION
-#define DTORS_SECTION_FUNCTION
-#else
-#define EXTRA_SECTIONS in_readonly_data, in_ctors, in_dtors
-#endif
-
-/* Switch into a generic section.
-   This is currently only used to support section attributes.
-
-   We make the section read-only and executable for a function decl,
-   read-only for a const data decl, and writable for a non-const data decl.  */
-#define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME, RELOC) \
-  if (DECL && TREE_CODE (DECL) == FUNCTION_DECL)               \
-    {                                                          \
-      fputs ("\t.SPACE $TEXT$\n", FILE);                       \
-      fprintf (FILE,                                           \
-              "\t.SUBSPA %s%s%s,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY,SORT=24\n",\
-              TARGET_GAS ? "" : "$", NAME, TARGET_GAS ? "" : "$"); \
-    }                                                          \
-  else if (DECL && DECL_READONLY_SECTION (DECL, RELOC))                \
-    {                                                          \
-      fputs ("\t.SPACE $TEXT$\n", FILE);                       \
-      fprintf (FILE,                                           \
-              "\t.SUBSPA %s%s%s,QUAD=0,ALIGN=8,ACCESS=44,SORT=16\n", \
-              TARGET_GAS ? "" : "$", NAME, TARGET_GAS ? "" : "$"); \
-    }                                                          \
-  else                                                         \
-    {                                                          \
-      fputs ("\t.SPACE $PRIVATE$\n", FILE);                    \
-      fprintf (FILE,                                           \
-              "\t.SUBSPA %s%s%s,QUAD=1,ALIGN=8,ACCESS=31,SORT=16\n", \
-              TARGET_GAS ? "" : "$", NAME, TARGET_GAS ? "" : "$"); \
-    }
-
-/* FIXME: HPUX ld generates incorrect GOT entries for "T" fixups
-   which reference data within the $TEXT$ space (for example constant
-   strings in the $LIT$ subspace).
-
-   The assemblers (GAS and HP as) both have problems with handling
-   the difference of two symbols which is the other correct way to
-   reference constant data during PIC code generation.
-
-   So, there's no way to reference constant data which is in the
-   $TEXT$ space during PIC generation.  Instead place all constant
-   data into the $PRIVATE$ subspace (this reduces sharing, but it
-   works correctly).  */
-
-#define EXTRA_SECTION_FUNCTIONS                                                \
-void                                                                   \
-readonly_data ()                                                       \
-{                                                                      \
-  if (in_section != in_readonly_data)                                  \
-    {                                                                  \
-      if (flag_pic)                                                    \
-       fprintf (asm_out_file, "%s\n", DATA_SECTION_ASM_OP);            \
-      else                                                             \
-       fprintf (asm_out_file, "%s\n", READONLY_DATA_ASM_OP);           \
-      in_section = in_readonly_data;                                   \
-    }                                                                  \
-}                                                                      \
-CTORS_SECTION_FUNCTION                                                 \
-DTORS_SECTION_FUNCTION
-
-
 /* How to refer to registers in assembler output.
    This sequence is indexed by compiler's hard-register-number (see above).  */
 
@@ -2203,18 +1838,6 @@ DTORS_SECTION_FUNCTION
  {"%fr28L",80}, {"%fr29L",82}, {"%fr30L",84}, {"%fr31R",86},           \
  {"%cr11",88}}
 
-/* How to renumber registers for dbx and gdb.
-
-   Registers 0  - 31 remain unchanged.
-
-   Registers 32 - 87 are mapped to 72 - 127
-
-   Register 88 is mapped to 32.  */
-
-#define DBX_REGISTER_NUMBER(REGNO) \
-  ((REGNO) <= 31 ? (REGNO) :                                           \
-   ((REGNO) > 31 && (REGNO) <= 87 ? (REGNO) + 40 : 32))
-
 /* This is how to output the definition of a user-level label named NAME,
    such as the label on a static function or variable NAME.  */
 
@@ -2222,53 +1845,6 @@ DTORS_SECTION_FUNCTION
   do { assemble_name (FILE, NAME);     \
        fputc ('\n', FILE); } while (0)
 
-/* This is how to output a command to make the user-level label named NAME
-   defined for reference from other files.
-
-   We call assemble_name, which in turn sets TREE_SYMBOL_REFERENCED.  This
-   macro will restore the original value of TREE_SYMBOL_REFERENCED to avoid
-   placing useless function definitions in the output file.  */
-
-#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME)  \
-  do { int save_referenced;                                    \
-       save_referenced = TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)); \
-       fputs ("\t.IMPORT ", FILE);                                     \
-        assemble_name (FILE, NAME);                            \
-       if (FUNCTION_NAME_P (NAME))                                     \
-        fputs (",CODE\n", FILE);                               \
-       else                                                    \
-        fputs (",DATA\n", FILE);                               \
-       TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)) = save_referenced; \
-     } while (0)
-
-/* The bogus HP assembler requires ALL external references to be
-   "imported", even library calls. They look a bit different, so
-   here's this macro.
-
-   Also note not all libcall names are passed to ENCODE_SECTION_INFO
-   (__main for example).  To make sure all libcall names have section
-   info recorded in them, we do it here.  */
-
-#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, RTL) \
-  do { fputs ("\t.IMPORT ", FILE);                                     \
-       if (!function_label_operand (RTL, VOIDmode))                    \
-        hppa_encode_label (RTL, 1);                                    \
-       assemble_name (FILE, XSTR ((RTL), 0));                          \
-       fputs (",CODE\n", FILE);                                                \
-     } while (0)
-
-#define ASM_GLOBALIZE_LABEL(FILE, NAME)                                        \
-  do {                                                                 \
-    /* We only handle DATA objects here, functions are globalized in   \
-       ASM_DECLARE_FUNCTION_NAME.  */                                  \
-    if (! FUNCTION_NAME_P (NAME))                                      \
-      {                                                                        \
-       fputs ("\t.EXPORT ", FILE);                                     \
-       assemble_name (FILE, NAME);                                     \
-       fputs (",DATA\n", FILE);                                        \
-      }                                                                        \
-  } while (0)
-
 /* This is how to output a reference to a user-level label named NAME.
    `assemble_name' uses this.  */
 
@@ -2305,20 +1881,6 @@ DTORS_SECTION_FUNCTION
        fprintf (FILE, "\t.word 0x%lx\n", l);                           \
      } while (0)
 
-/* This is how to output an assembler line defining an `int' constant. 
-
-   This is made more complicated by the fact that functions must be
-   prefixed by a P% as well as code label references for the exception
-   table -- otherwise the linker chokes.  */
-
-#define ASM_OUTPUT_INT(FILE,VALUE)  \
-{ fputs ("\t.word ", FILE);                    \
-  if (function_label_operand (VALUE, VOIDmode) \
-      && !TARGET_PORTABLE_RUNTIME)             \
-    fputs ("P%", FILE);                                \
-  output_addr_const (FILE, (VALUE));           \
-  fputs ("\n", FILE);}
-
 /* Likewise for `short' and `char' constants.  */
 
 #define ASM_OUTPUT_SHORT(FILE,VALUE)  \
@@ -2568,22 +2130,6 @@ extern int insn_sets_and_refs_are_delayed ();
 
 extern struct rtx_def *return_addr_rtx ();
 
-/* We want __gcc_plt_call to appear in every program built by
-   gcc, so we make a reference to it out of __main.
-   We use the asm statement to fool the optimizer into not
-   removing the dead (but important) initialization of
-   REFERENCE.  */
-
-#define DO_GLOBAL_DTORS_BODY                   \
-do {                                           \
-  extern void __gcc_plt_call ();               \
-  void (*reference)() = &__gcc_plt_call;       \
-  func_ptr *p;                                 \
-  __asm__ ("" : : "r" (reference));            \
-  for (p = __DTOR_LIST__ + 1; *p; )            \
-    (*p++) ();                                 \
-} while (0)
-
 /* Find the return address associated with the frame given by
    FRAMEADDR.  */
 #define RETURN_ADDR_RTX(COUNT, FRAMEADDR)                               \
diff --git a/gcc/config/pa/som.h b/gcc/config/pa/som.h
new file mode 100644 (file)
index 0000000..1f8e5c7
--- /dev/null
@@ -0,0 +1,463 @@
+/* Definitions for SOM assembler support.
+   Copyright (C) 1999 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 1, 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.  */
+
+/* So we can conditionalize small amounts of code in pa.c or pa.md.  */
+#define OBJ_SOM
+
+/* We do not use BINCL stabs in SOM.
+   ??? If it does not hurt, we probably should to avoid useless divergence
+   from other embedded stabs implementations.  */
+#undef DBX_USE_BINCL
+
+/* We make the first line stab special to avoid adding several
+   gross hacks to GAS.  */
+#undef  ASM_OUTPUT_SOURCE_LINE
+#define ASM_OUTPUT_SOURCE_LINE(file, line)             \
+  { static int sym_lineno = 1;                         \
+    static tree last_function_decl = NULL;             \
+    if (current_function_decl == last_function_decl)   \
+      fprintf (file, "\t.stabn 68,0,%d,L$M%d-%s\nL$M%d:\n",    \
+              line, sym_lineno,                        \
+              XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0) + 1, \
+              sym_lineno);                             \
+    else                                               \
+      fprintf (file, "\t.stabn 68,0,%d,0\n", line);    \
+    last_function_decl = current_function_decl;                \
+    sym_lineno += 1; }
+
+/* gdb needs a null N_SO at the end of each file for scattered loading. */
+
+#undef DBX_OUTPUT_MAIN_SOURCE_FILE_END
+#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \
+  text_section (); \
+  fputs ("\t.SPACE $TEXT$\n\t.NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE); \
+  fprintf (FILE,                                                       \
+          "\t.stabs \"\",%d,0,0,L$text_end0000\nL$text_end0000:\n", N_SO)
+
+/* On hpux10, the linker will give an error if we have a reference
+   in the read-only data section to a symbol defined in a shared
+   library.  Therefore, expressions that might require a reloc can
+   not be placed in the read-only data section.  */
+#define SELECT_SECTION(EXP,RELOC) \
+  if (TREE_CODE (EXP) == VAR_DECL \
+      && TREE_READONLY (EXP) \
+      && !TREE_THIS_VOLATILE (EXP) \
+      && DECL_INITIAL (EXP) \
+      && (DECL_INITIAL (EXP) == error_mark_node \
+          || TREE_CONSTANT (DECL_INITIAL (EXP))) \
+      && !RELOC) \
+    readonly_data_section (); \
+  else if (TREE_CODE_CLASS (TREE_CODE (EXP)) == 'c' \
+          && !(TREE_CODE (EXP) == STRING_CST && flag_writable_strings) \
+          && !RELOC) \
+    readonly_data_section (); \
+  else \
+    data_section ();
+   
+/* HPUX has a program 'chatr' to list the dependencies of dynamically
+   linked executables and shared libraries.  */
+#define LDD_SUFFIX "chatr"
+/* Look for lines like "dynamic   /usr/lib/X11R5/libX11.sl"
+   or "static    /usr/lib/X11R5/libX11.sl". 
+
+   HPUX 10.20 also has lines like "static branch prediction ..."
+   so we filter that out explicitly.
+
+   We also try to bound our search for libraries with marker
+   lines.  What a pain.  */
+#define PARSE_LDD_OUTPUT(PTR)                                  \
+do {                                                           \
+  static int in_shlib_list = 0;                                        \
+  while (*PTR == ' ') PTR++;                                   \
+  if (strncmp (PTR, "shared library list:",                    \
+              sizeof ("shared library list:") - 1) == 0)       \
+    {                                                          \
+      PTR = 0;                                                 \
+      in_shlib_list = 1;                                       \
+    }                                                          \
+  else if (strncmp (PTR, "shared library binding:",            \
+                   sizeof ("shared library binding:") - 1) == 0)\
+    {                                                          \
+      PTR = 0;                                                 \
+      in_shlib_list = 0;                                       \
+    }                                                          \
+  else if (strncmp (PTR, "static branch prediction disabled",  \
+                   sizeof ("static branch prediction disabled") - 1) == 0)\
+    {                                                          \
+      PTR = 0;                                                 \
+      in_shlib_list = 0;                                       \
+    }                                                          \
+  else if (in_shlib_list                                       \
+          &&  strncmp (PTR, "dynamic", sizeof ("dynamic") - 1) == 0) \
+    {                                                          \
+      PTR += sizeof ("dynamic") - 1;                           \
+      while (*p == ' ') PTR++;                                 \
+    }                                                          \
+  else if (in_shlib_list                                       \
+          && strncmp (PTR, "static", sizeof ("static") - 1) == 0) \
+    {                                                          \
+      PTR += sizeof ("static") - 1;                            \
+      while (*p == ' ') PTR++;                                 \
+    }                                                          \
+  else                                                         \
+    PTR = 0;                                                   \
+} while (0)
+
+/* Output the label for a function definition.  */
+#ifndef HP_FP_ARG_DESCRIPTOR_REVERSED
+#define ASM_DOUBLE_ARG_DESCRIPTORS(FILE, ARG0, ARG1)   \
+  do { fprintf (FILE, ",ARGW%d=FR", (ARG0));           \
+       fprintf (FILE, ",ARGW%d=FU", (ARG1));} while (0)
+#define DFMODE_RETURN_STRING ",RTNVAL=FU"
+#define SFMODE_RETURN_STRING ",RTNVAL=FR"
+#else
+#define ASM_DOUBLE_ARG_DESCRIPTORS(FILE, ARG0, ARG1)   \
+  do { fprintf (FILE, ",ARGW%d=FU", (ARG0));           \
+       fprintf (FILE, ",ARGW%d=FR", (ARG1));} while (0)
+#define DFMODE_RETURN_STRING ",RTNVAL=FR"
+#define SFMODE_RETURN_STRING ",RTNVAL=FU"
+#endif
+
+\f
+/* Define this macro if references to a symbol must be treated
+   differently depending on something about the variable or
+   function named by the symbol (such as what section it is in).
+
+   The macro definition, if any, is executed immediately after the
+   rtl for DECL or other node is created.
+   The value of the rtl will be a `mem' whose address is a
+   `symbol_ref'.
+
+   The usual thing for this macro to do is to a flag in the
+   `symbol_ref' (such as `SYMBOL_REF_FLAG') or to store a modified
+   name string in the `symbol_ref' (if one bit is not enough
+   information).
+
+   On the HP-PA we use this to indicate if a symbol is in text or
+   data space.  Also, function labels need special treatment. */
+
+#define TEXT_SPACE_P(DECL)\
+  (TREE_CODE (DECL) == FUNCTION_DECL                                   \
+   || (TREE_CODE (DECL) == VAR_DECL                                    \
+       && TREE_READONLY (DECL) && ! TREE_SIDE_EFFECTS (DECL)           \
+       && (! DECL_INITIAL (DECL) || ! reloc_needed (DECL_INITIAL (DECL))) \
+       && !flag_pic)                                                   \
+   || (TREE_CODE_CLASS (TREE_CODE (DECL)) == 'c'                       \
+       && !(TREE_CODE (DECL) == STRING_CST && flag_writable_strings)))
+
+#define FUNCTION_NAME_P(NAME) \
+(*(NAME) == '@' || (*(NAME) == '*' && *((NAME) + 1) == '@'))
+
+#define ENCODE_SECTION_INFO(DECL)\
+do                                                     \
+  { if (TEXT_SPACE_P (DECL))                           \
+      {        rtx _rtl;                                       \
+       if (TREE_CODE (DECL) == FUNCTION_DECL           \
+           || TREE_CODE (DECL) == VAR_DECL)            \
+         _rtl = DECL_RTL (DECL);                       \
+       else                                            \
+         _rtl = TREE_CST_RTL (DECL);                   \
+       SYMBOL_REF_FLAG (XEXP (_rtl, 0)) = 1;           \
+       if (TREE_CODE (DECL) == FUNCTION_DECL)          \
+         hppa_encode_label (XEXP (DECL_RTL (DECL), 0), 0);\
+      }                                                        \
+  }                                                    \
+while (0)
+
+/* Store the user-specified part of SYMBOL_NAME in VAR.
+   This is sort of inverse to ENCODE_SECTION_INFO.  */
+
+#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME)   \
+  (VAR) = ((SYMBOL_NAME)  + ((SYMBOL_NAME)[0] == '*' ? \
+                            1 + (SYMBOL_NAME)[1] == '@'\
+                            : (SYMBOL_NAME)[0] == '@'))
+
+/* NAME refers to the function's name.  If we are placing each function into
+   its own section, we need to switch to the section for this function.  Note
+   that the section name will have a "." prefix.  */
+#define ASM_OUTPUT_FUNCTION_PREFIX(FILE, NAME) \
+  {                                                                    \
+    char *name;                                                                \
+    STRIP_NAME_ENCODING (name, NAME);                                  \
+    if (TARGET_GAS && in_section == in_text)                           \
+      fputs ("\t.NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE); \
+    else if (TARGET_GAS)                                               \
+      fprintf (FILE,                                                   \
+              "\t.SUBSPA .%s\n", name);                                \
+  }
+    
+#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
+    do { tree fntype = TREE_TYPE (TREE_TYPE (DECL));                   \
+        tree tree_type = TREE_TYPE (DECL);                             \
+        tree parm;                                                     \
+        int i;                                                         \
+        if (TREE_PUBLIC (DECL) || TARGET_GAS)                          \
+          { extern int current_function_varargs;                       \
+            if (TREE_PUBLIC (DECL))                                    \
+              {                                                        \
+                fputs ("\t.EXPORT ", FILE);                            \
+                assemble_name (FILE, NAME);                            \
+                fputs (",ENTRY,PRIV_LEV=3", FILE);                     \
+              }                                                        \
+            else                                                       \
+              {                                                        \
+                fputs ("\t.PARAM ", FILE);                             \
+                assemble_name (FILE, NAME);                            \
+              }                                                        \
+            for (parm = DECL_ARGUMENTS (DECL), i = 0; parm && i < 4;   \
+                 parm = TREE_CHAIN (parm))                             \
+              {                                                        \
+                if (TYPE_MODE (DECL_ARG_TYPE (parm)) == SFmode         \
+                    && ! TARGET_SOFT_FLOAT)                            \
+                  fprintf (FILE, ",ARGW%d=FR", i++);                   \
+                else if (TYPE_MODE (DECL_ARG_TYPE (parm)) == DFmode    \
+                         && ! TARGET_SOFT_FLOAT)                       \
+                  {                                                    \
+                    if (i <= 2)                                        \
+                      {                                                \
+                        if (i == 1) i++;                               \
+                        ASM_DOUBLE_ARG_DESCRIPTORS (FILE, i++, i++);   \
+                      }                                                \
+                    else                                               \
+                      break;                                           \
+                  }                                                    \
+                else                                                   \
+                  {                                                    \
+                    int arg_size =                                     \
+                      FUNCTION_ARG_SIZE (TYPE_MODE (DECL_ARG_TYPE (parm)),\
+                                         DECL_ARG_TYPE (parm));        \
+                    /* Passing structs by invisible reference uses     \
+                       one general register.  */                       \
+                    if (arg_size > 2                                   \
+                        || TREE_ADDRESSABLE (DECL_ARG_TYPE (parm)))    \
+                      arg_size = 1;                                    \
+                    if (arg_size == 2 && i <= 2)                       \
+                      {                                                \
+                        if (i == 1) i++;                               \
+                        fprintf (FILE, ",ARGW%d=GR", i++);             \
+                        fprintf (FILE, ",ARGW%d=GR", i++);             \
+                      }                                                \
+                    else if (arg_size == 1)                            \
+                      fprintf (FILE, ",ARGW%d=GR", i++);               \
+                    else                                               \
+                      i += arg_size;                                   \
+                  }                                                    \
+              }                                                        \
+            /* anonymous args */                                       \
+            if ((TYPE_ARG_TYPES (tree_type) != 0                       \
+                 && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (tree_type)))\
+                     != void_type_node))                               \
+                || current_function_varargs)                           \
+              {                                                        \
+                for (; i < 4; i++)                                     \
+                  fprintf (FILE, ",ARGW%d=GR", i);                     \
+              }                                                        \
+            if (TYPE_MODE (fntype) == DFmode && ! TARGET_SOFT_FLOAT)   \
+              fputs (DFMODE_RETURN_STRING, FILE);                      \
+            else if (TYPE_MODE (fntype) == SFmode && ! TARGET_SOFT_FLOAT) \
+              fputs (SFMODE_RETURN_STRING, FILE);                      \
+            else if (fntype != void_type_node)                         \
+              fputs (",RTNVAL=GR", FILE);                              \
+            fputs ("\n", FILE);                                        \
+          }} while (0)
+
+/* Output at beginning of assembler file.  */
+
+#define ASM_FILE_START(FILE) \
+do { fputs ("\t.SPACE $PRIVATE$\n\
+\t.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31\n\
+\t.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82\n\
+\t.SPACE $TEXT$\n\
+\t.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44\n\
+\t.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n\
+\t.IMPORT $global$,DATA\n\
+\t.IMPORT $$dyncall,MILLICODE\n", FILE);\
+     if (profile_flag)\
+       fprintf (FILE, "\t.IMPORT _mcount, CODE\n");\
+     if (write_symbols != NO_DEBUG) \
+       output_file_directive ((FILE), main_input_filename); \
+   } while (0)
+
+/* Output before code.  */
+
+/* Supposedly the assembler rejects the command if there is no tab!  */
+#define TEXT_SECTION_ASM_OP "\t.SPACE $TEXT$\n\t.SUBSPA $CODE$\n"
+
+/* Output before read-only data.  */
+
+/* Supposedly the assembler rejects the command if there is no tab!  */
+#define READONLY_DATA_ASM_OP "\t.SPACE $TEXT$\n\t.SUBSPA $LIT$\n"
+
+#define READONLY_DATA_SECTION readonly_data
+
+/* Output before writable data.  */
+
+/* Supposedly the assembler rejects the command if there is no tab!  */
+#define DATA_SECTION_ASM_OP "\t.SPACE $PRIVATE$\n\t.SUBSPA $DATA$\n"
+
+/* Output before uninitialized data.  */
+
+#define BSS_SECTION_ASM_OP "\t.SPACE $PRIVATE$\n\t.SUBSPA $BSS$\n"
+
+/* Define the .bss section for ASM_OUTPUT_LOCAL to use. */
+
+#ifndef CTORS_SECTION_FUNCTION
+#define EXTRA_SECTIONS in_readonly_data
+#define CTORS_SECTION_FUNCTION
+#define DTORS_SECTION_FUNCTION
+#else
+#define EXTRA_SECTIONS in_readonly_data, in_ctors, in_dtors
+#endif
+
+/* Switch into a generic section.
+   This is currently only used to support section attributes.
+
+   We make the section read-only and executable for a function decl,
+   read-only for a const data decl, and writable for a non-const data decl.  */
+#define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME, RELOC) \
+  if (DECL && TREE_CODE (DECL) == FUNCTION_DECL)               \
+    {                                                          \
+      fputs ("\t.SPACE $TEXT$\n", FILE);                       \
+      fprintf (FILE,                                           \
+              "\t.SUBSPA %s%s%s,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY,SORT=24\n",\
+              TARGET_GAS ? "" : "$", NAME, TARGET_GAS ? "" : "$"); \
+    }                                                          \
+  else if (DECL && DECL_READONLY_SECTION (DECL, RELOC))                \
+    {                                                          \
+      fputs ("\t.SPACE $TEXT$\n", FILE);                       \
+      fprintf (FILE,                                           \
+              "\t.SUBSPA %s%s%s,QUAD=0,ALIGN=8,ACCESS=44,SORT=16\n", \
+              TARGET_GAS ? "" : "$", NAME, TARGET_GAS ? "" : "$"); \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      fputs ("\t.SPACE $PRIVATE$\n", FILE);                    \
+      fprintf (FILE,                                           \
+              "\t.SUBSPA %s%s%s,QUAD=1,ALIGN=8,ACCESS=31,SORT=16\n", \
+              TARGET_GAS ? "" : "$", NAME, TARGET_GAS ? "" : "$"); \
+    }
+
+/* FIXME: HPUX ld generates incorrect GOT entries for "T" fixups
+   which reference data within the $TEXT$ space (for example constant
+   strings in the $LIT$ subspace).
+
+   The assemblers (GAS and HP as) both have problems with handling
+   the difference of two symbols which is the other correct way to
+   reference constant data during PIC code generation.
+
+   So, there's no way to reference constant data which is in the
+   $TEXT$ space during PIC generation.  Instead place all constant
+   data into the $PRIVATE$ subspace (this reduces sharing, but it
+   works correctly).  */
+
+#define EXTRA_SECTION_FUNCTIONS                                                \
+void                                                                   \
+readonly_data ()                                                       \
+{                                                                      \
+  if (in_section != in_readonly_data)                                  \
+    {                                                                  \
+      if (flag_pic)                                                    \
+       fprintf (asm_out_file, "%s\n", DATA_SECTION_ASM_OP);            \
+      else                                                             \
+       fprintf (asm_out_file, "%s\n", READONLY_DATA_ASM_OP);           \
+      in_section = in_readonly_data;                                   \
+    }                                                                  \
+}                                                                      \
+CTORS_SECTION_FUNCTION                                                 \
+DTORS_SECTION_FUNCTION
+
+/* This is how to output a command to make the user-level label named NAME
+   defined for reference from other files.
+
+   We call assemble_name, which in turn sets TREE_SYMBOL_REFERENCED.  This
+   macro will restore the original value of TREE_SYMBOL_REFERENCED to avoid
+   placing useless function definitions in the output file.  */
+
+#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME)  \
+  do { int save_referenced;                                    \
+       save_referenced = TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)); \
+       fputs ("\t.IMPORT ", FILE);                                     \
+        assemble_name (FILE, NAME);                            \
+       if (FUNCTION_NAME_P (NAME))                                     \
+        fputs (",CODE\n", FILE);                               \
+       else                                                    \
+        fputs (",DATA\n", FILE);                               \
+       TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)) = save_referenced; \
+     } while (0)
+
+/* The bogus HP assembler requires ALL external references to be
+   "imported", even library calls. They look a bit different, so
+   here's this macro.
+
+   Also note not all libcall names are passed to ENCODE_SECTION_INFO
+   (__main for example).  To make sure all libcall names have section
+   info recorded in them, we do it here.  */
+
+#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, RTL) \
+  do { fputs ("\t.IMPORT ", FILE);                                     \
+       if (!function_label_operand (RTL, VOIDmode))                    \
+        hppa_encode_label (RTL, 1);                                    \
+       assemble_name (FILE, XSTR ((RTL), 0));                          \
+       fputs (",CODE\n", FILE);                                                \
+     } while (0)
+
+#define ASM_GLOBALIZE_LABEL(FILE, NAME)                                        \
+  do {                                                                 \
+    /* We only handle DATA objects here, functions are globalized in   \
+       ASM_DECLARE_FUNCTION_NAME.  */                                  \
+    if (! FUNCTION_NAME_P (NAME))                                      \
+      {                                                                        \
+       fputs ("\t.EXPORT ", FILE);                                     \
+       assemble_name (FILE, NAME);                                     \
+       fputs (",DATA\n", FILE);                                        \
+      }                                                                        \
+  } while (0)
+
+#define ASM_FILE_END(FILE) output_deferred_plabels (FILE)
+
+/* This is how to output an assembler line defining an `int' constant. 
+
+   This is made more complicated by the fact that functions must be
+   prefixed by a P% as well as code label references for the exception
+   table -- otherwise the linker chokes.  */
+
+#define ASM_OUTPUT_INT(FILE,VALUE)  \
+{ fputs ("\t.word ", FILE);                    \
+  if (function_label_operand (VALUE, VOIDmode))        \
+    fputs ("P%", FILE);                                \
+  output_addr_const (FILE, (VALUE));           \
+  fputs ("\n", FILE);}
+
+
+/* We want __gcc_plt_call to appear in every program built by
+   gcc, so we make a reference to it out of __main.
+   We use the asm statement to fool the optimizer into not
+   removing the dead (but important) initialization of
+   REFERENCE.  */
+
+#define DO_GLOBAL_DTORS_BODY                   \
+do {                                           \
+  extern void __gcc_plt_call ();               \
+  void (*reference)() = &__gcc_plt_call;       \
+  func_ptr *p;                                 \
+  __asm__ ("" : : "r" (reference));            \
+  for (p = __DTOR_LIST__ + 1; *p; )            \
+    (*p++) ();                                 \
+} while (0)
index 2ae1102..edfc670 100755 (executable)
@@ -3263,33 +3263,37 @@ for machine in $build $host $target; do
                tmake_file=pa/t-openbsd
                ;;
        hppa1.1-*-pro*)
-               tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h"
+               target_cpu_default="(MASK_JUMP_IN_DELAY | MASK_PORTABLE_RUNTIME | MASK_GAS | MASK_NO_SPACE_REGS | MASK_SOFT_FLOAT)"
+               tm_file="${tm_file} elfos.h pa/elf.h pa/pa-pro-end.h libgloss.h"
                xm_file=pa/xm-papro.h
                tmake_file=pa/t-pro
                ;;
        hppa1.1-*-osf*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-osf.h"
+               tm_file="${tm_file} pa/som.h pa/pa-osf.h"
                use_collect2=yes
                ;;
        hppa1.1-*-rtems*)
-               tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h pa/rtems.h"
+               target_cpu_default="(MASK_JUMP_IN_DELAY | MASK_PORTABLE_RUNTIME | MASK_GAS | MASK_NO_SPACE_REGS | MASK_SOFT_FLOAT)"
+               tm_file="${tm_file} elfos.h pa/elf.h pa/pa-pro-end.h libgloss.h pa/rtems.h"
                xm_file=pa/xm-papro.h
                tmake_file=pa/t-pro
                ;;
        hppa1.0-*-osf*)
-               tm_file="${tm_file} pa/pa-osf.h"
+               tm_file="${tm_file} pa/som.h pa/pa-osf.h"
                use_collect2=yes
                ;;
        hppa1.1-*-bsd*)
+               tm_file="${tm_file} pa/som.h"
                target_cpu_default="MASK_PA_11"
                use_collect2=yes
                ;;
        hppa1.0-*-bsd*)
+               tm_file="${tm_file} pa/som.h"
                use_collect2=yes
                ;;
        hppa1.0-*-hpux7*)
-               tm_file="pa/pa-oldas.h ${tm_file} pa/pa-hpux7.h"
+               tm_file="pa/pa-oldas.h ${tm_file} pa/som.h pa/pa-hpux7.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3300,7 +3304,7 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux8.0[0-2]*)
-               tm_file="${tm_file} pa/pa-hpux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3314,7 +3318,7 @@ for machine in $build $host $target; do
                ;;
        hppa1.1-*-hpux8.0[0-2]*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3328,7 +3332,7 @@ for machine in $build $host $target; do
                ;;
        hppa1.1-*-hpux8*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3339,7 +3343,7 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux8*)
-               tm_file="${tm_file} pa/pa-hpux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3351,7 +3355,7 @@ for machine in $build $host $target; do
                ;;
        hppa1.1-*-hpux10* | hppa2*-*-hpux10*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux10.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                tmake_file=pa/t-pa
@@ -3370,7 +3374,7 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux10*)
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux10.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                tmake_file=pa/t-pa
@@ -3390,7 +3394,7 @@ for machine in $build $host $target; do
                ;;
        hppa1.1-*-hpux11* | hppa2*-*-hpux11*)
                target_cpu_default=1
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux11.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux11.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                tmake_file=pa/t-pa
@@ -3409,7 +3413,7 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux11*)
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux11.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux11.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if [ x$gas = xyes ]
@@ -3428,7 +3432,7 @@ for machine in $build $host $target; do
                ;;
        hppa1.1-*-hpux* | hppa2*-*-hpux*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux9.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3439,7 +3443,7 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux*)
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux9.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3451,7 +3455,7 @@ for machine in $build $host $target; do
                ;;
        hppa1.1-*-hiux* | hppa2*-*-hiux*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hiux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3462,7 +3466,7 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hiux*)
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hiux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -3473,6 +3477,7 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa*-*-lites*)
+               tm_file="${tm_file} elfos.h pa/elf.h"
                target_cpu_default="MASK_PA_11"
                use_collect2=yes
                ;;
@@ -6082,7 +6087,7 @@ fi
 
 
         echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6
-echo "configure:6086: checking for strerror in -lcposix" >&5
+echo "configure:6091: checking for strerror in -lcposix" >&5
 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6090,7 +6095,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6094 "configure"
+#line 6099 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6101,7 +6106,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:6105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6124,12 +6129,12 @@ fi
   
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:6128: checking for working const" >&5
+echo "configure:6133: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6133 "configure"
+#line 6138 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -6178,7 +6183,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:6182: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6187: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -6199,21 +6204,21 @@ EOF
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:6203: checking for inline" >&5
+echo "configure:6208: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 6210 "configure"
+#line 6215 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:6217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -6239,12 +6244,12 @@ EOF
 esac
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:6243: checking for off_t" >&5
+echo "configure:6248: checking for off_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6248 "configure"
+#line 6253 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6272,12 +6277,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:6276: checking for size_t" >&5
+echo "configure:6281: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6281 "configure"
+#line 6286 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6307,19 +6312,19 @@ fi
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:6311: checking for working alloca.h" >&5
+echo "configure:6316: checking for working alloca.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6316 "configure"
+#line 6321 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:6323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -6340,12 +6345,12 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:6344: checking for alloca" >&5
+echo "configure:6349: checking for alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6349 "configure"
+#line 6354 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -6373,7 +6378,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:6377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -6405,12 +6410,12 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:6409: checking whether alloca needs Cray hooks" >&5
+echo "configure:6414: checking whether alloca needs Cray hooks" >&5
 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6414 "configure"
+#line 6419 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -6435,12 +6440,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6439: checking for $ac_func" >&5
+echo "configure:6444: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6444 "configure"
+#line 6449 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6463,7 +6468,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6490,7 +6495,7 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:6494: checking stack direction for C alloca" >&5
+echo "configure:6499: checking stack direction for C alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6498,7 +6503,7 @@ else
   ac_cv_c_stack_direction=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 6502 "configure"
+#line 6507 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -6517,7 +6522,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:6521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_stack_direction=1
 else
@@ -6542,17 +6547,17 @@ for ac_hdr in unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6546: checking for $ac_hdr" >&5
+echo "configure:6551: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6551 "configure"
+#line 6556 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6581,12 +6586,12 @@ done
 for ac_func in getpagesize
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6585: checking for $ac_func" >&5
+echo "configure:6590: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6590 "configure"
+#line 6595 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6609,7 +6614,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6634,7 +6639,7 @@ fi
 done
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:6638: checking for working mmap" >&5
+echo "configure:6643: checking for working mmap" >&5
 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6642,7 +6647,7 @@ else
   ac_cv_func_mmap_fixed_mapped=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 6646 "configure"
+#line 6651 "configure"
 #include "confdefs.h"
 
 /* Thanks to Mike Haertel and Jim Avera for this test.
@@ -6782,7 +6787,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:6786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -6810,17 +6815,17 @@ unistd.h sys/param.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6814: checking for $ac_hdr" >&5
+echo "configure:6819: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6819 "configure"
+#line 6824 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6824: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6829: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6850,12 +6855,12 @@ done
 strdup __argz_count __argz_stringify __argz_next
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6854: checking for $ac_func" >&5
+echo "configure:6859: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6859 "configure"
+#line 6864 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6878,7 +6883,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6907,12 +6912,12 @@ done
      for ac_func in stpcpy
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6911: checking for $ac_func" >&5
+echo "configure:6916: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6916 "configure"
+#line 6921 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6935,7 +6940,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6939: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6969,19 +6974,19 @@ EOF
 
    if test $ac_cv_header_locale_h = yes; then
     echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:6973: checking for LC_MESSAGES" >&5
+echo "configure:6978: checking for LC_MESSAGES" >&5
 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6978 "configure"
+#line 6983 "configure"
 #include "confdefs.h"
 #include <locale.h>
 int main() {
 return LC_MESSAGES
 ; return 0; }
 EOF
-if { (eval echo configure:6985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_val_LC_MESSAGES=yes
 else
@@ -7002,7 +7007,7 @@ EOF
     fi
   fi
    echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:7006: checking whether NLS is requested" >&5
+echo "configure:7011: checking whether NLS is requested" >&5
         # Check whether --enable-nls or --disable-nls was given.
 if test "${enable_nls+set}" = set; then
   enableval="$enable_nls"
@@ -7022,7 +7027,7 @@ fi
 EOF
 
       echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:7026: checking whether included gettext is requested" >&5
+echo "configure:7031: checking whether included gettext is requested" >&5
       # Check whether --with-included-gettext or --without-included-gettext was given.
 if test "${with_included_gettext+set}" = set; then
   withval="$with_included_gettext"
@@ -7041,17 +7046,17 @@ fi
 
        ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:7045: checking for libintl.h" >&5
+echo "configure:7050: checking for libintl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7050 "configure"
+#line 7055 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7055: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7060: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7068,19 +7073,19 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:7072: checking for gettext in libc" >&5
+echo "configure:7077: checking for gettext in libc" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7077 "configure"
+#line 7082 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 int main() {
 return (int) gettext ("")
 ; return 0; }
 EOF
-if { (eval echo configure:7084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gettext_libc=yes
 else
@@ -7096,7 +7101,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
 
           if test "$gt_cv_func_gettext_libc" != "yes"; then
             echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:7100: checking for bindtextdomain in -lintl" >&5
+echo "configure:7105: checking for bindtextdomain in -lintl" >&5
 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7104,7 +7109,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7108 "configure"
+#line 7113 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7115,7 +7120,7 @@ int main() {
 bindtextdomain()
 ; return 0; }
 EOF
-if { (eval echo configure:7119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7131,12 +7136,12 @@ fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:7135: checking for gettext in libintl" >&5
+echo "configure:7140: checking for gettext in libintl" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:7140: checking for gettext in -lintl" >&5
+echo "configure:7145: checking for gettext in -lintl" >&5
 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7144,7 +7149,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7148 "configure"
+#line 7153 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7155,7 +7160,7 @@ int main() {
 gettext()
 ; return 0; }
 EOF
-if { (eval echo configure:7159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7194,7 +7199,7 @@ EOF
              # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7198: checking for $ac_word" >&5
+echo "configure:7203: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7228,12 +7233,12 @@ fi
                for ac_func in dcgettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7232: checking for $ac_func" >&5
+echo "configure:7237: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7237 "configure"
+#line 7242 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7256,7 +7261,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7283,7 +7288,7 @@ done
                # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7287: checking for $ac_word" >&5
+echo "configure:7292: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7319,7 +7324,7 @@ fi
                # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7323: checking for $ac_word" >&5
+echo "configure:7328: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7351,7 +7356,7 @@ else
 fi
 
                cat > conftest.$ac_ext <<EOF
-#line 7355 "configure"
+#line 7360 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -7359,7 +7364,7 @@ extern int _nl_msg_cat_cntr;
                               return _nl_msg_cat_cntr
 ; return 0; }
 EOF
-if { (eval echo configure:7363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   CATOBJEXT=.gmo
                   DATADIRNAME=share
@@ -7382,7 +7387,7 @@ fi
 
         if test "$CATOBJEXT" = "NONE"; then
          echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6
-echo "configure:7386: checking whether catgets can be used" >&5
+echo "configure:7391: checking whether catgets can be used" >&5
          # Check whether --with-catgets or --without-catgets was given.
 if test "${with_catgets+set}" = set; then
   withval="$with_catgets"
@@ -7395,7 +7400,7 @@ fi
 
          if test "$nls_cv_use_catgets" = "yes"; then
                    echo $ac_n "checking for main in -li""... $ac_c" 1>&6
-echo "configure:7399: checking for main in -li" >&5
+echo "configure:7404: checking for main in -li" >&5
 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7403,14 +7408,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-li  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7407 "configure"
+#line 7412 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:7414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7438,12 +7443,12 @@ else
 fi
 
            echo $ac_n "checking for catgets""... $ac_c" 1>&6
-echo "configure:7442: checking for catgets" >&5
+echo "configure:7447: checking for catgets" >&5
 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7447 "configure"
+#line 7452 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char catgets(); below.  */
@@ -7466,7 +7471,7 @@ catgets();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_catgets=yes"
 else
@@ -7488,7 +7493,7 @@ EOF
               # Extract the first word of "gencat", so it can be a program name with args.
 set dummy gencat; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7492: checking for $ac_word" >&5
+echo "configure:7497: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7524,7 +7529,7 @@ fi
                 # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7528: checking for $ac_word" >&5
+echo "configure:7533: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7561,7 +7566,7 @@ fi
                   # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7565: checking for $ac_word" >&5
+echo "configure:7570: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7596,7 +7601,7 @@ fi
                 # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7600: checking for $ac_word" >&5
+echo "configure:7605: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7654,7 +7659,7 @@ fi
         # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7658: checking for $ac_word" >&5
+echo "configure:7663: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7688,7 +7693,7 @@ fi
         # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7692: checking for $ac_word" >&5
+echo "configure:7697: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7724,7 +7729,7 @@ fi
         # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7728: checking for $ac_word" >&5
+echo "configure:7733: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7817,7 +7822,7 @@ fi
        LINGUAS=
      else
        echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:7821: checking for catalogs to be installed" >&5
+echo "configure:7826: checking for catalogs to be installed" >&5
        NEW_LINGUAS=
        for lang in ${LINGUAS=$ALL_LINGUAS}; do
          case "$ALL_LINGUAS" in
@@ -7845,17 +7850,17 @@ echo "configure:7821: checking for catalogs to be installed" >&5
    if test "$CATOBJEXT" = ".cat"; then
      ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:7849: checking for linux/version.h" >&5
+echo "configure:7854: checking for linux/version.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7854 "configure"
+#line 7859 "configure"
 #include "confdefs.h"
 #include <linux/version.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7864: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8089,7 +8094,7 @@ fi
 
 # Figure out what assembler alignment features are present.
 echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6
-echo "configure:8093: checking assembler alignment features" >&5
+echo "configure:8098: checking assembler alignment features" >&5
 gcc_cv_as=
 gcc_cv_as_alignment_features=
 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
@@ -8210,7 +8215,7 @@ fi
 echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6
 
 echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6
-echo "configure:8214: checking assembler subsection support" >&5
+echo "configure:8219: checking assembler subsection support" >&5
 gcc_cv_as_subsections=
 if test x$gcc_cv_as != x; then
        # Check if we have .subsection
@@ -8250,7 +8255,7 @@ fi
 echo "$ac_t""$gcc_cv_as_subsections" 1>&6
 
 echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
-echo "configure:8254: checking assembler instructions" >&5
+echo "configure:8259: checking assembler instructions" >&5
 gcc_cv_as_instructions=
 if test x$gcc_cv_as != x; then
        set "filds fists" "filds mem; fists mem"
index 6abde67..c74469c 100644 (file)
@@ -836,33 +836,37 @@ changequote([,])dnl
                tmake_file=pa/t-openbsd
                ;;
        hppa1.1-*-pro*)
-               tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h"
+               target_cpu_default="(MASK_JUMP_IN_DELAY | MASK_PORTABLE_RUNTIME | MASK_GAS | MASK_NO_SPACE_REGS | MASK_SOFT_FLOAT)"
+               tm_file="${tm_file} elfos.h pa/elf.h pa/pa-pro-end.h libgloss.h"
                xm_file=pa/xm-papro.h
                tmake_file=pa/t-pro
                ;;
        hppa1.1-*-osf*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-osf.h"
+               tm_file="${tm_file} pa/som.h pa/pa-osf.h"
                use_collect2=yes
                ;;
        hppa1.1-*-rtems*)
-               tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h pa/rtems.h"
+               target_cpu_default="(MASK_JUMP_IN_DELAY | MASK_PORTABLE_RUNTIME | MASK_GAS | MASK_NO_SPACE_REGS | MASK_SOFT_FLOAT)"
+               tm_file="${tm_file} elfos.h pa/elf.h pa/pa-pro-end.h libgloss.h pa/rtems.h"
                xm_file=pa/xm-papro.h
                tmake_file=pa/t-pro
                ;;
        hppa1.0-*-osf*)
-               tm_file="${tm_file} pa/pa-osf.h"
+               tm_file="${tm_file} pa/som.h pa/pa-osf.h"
                use_collect2=yes
                ;;
        hppa1.1-*-bsd*)
+               tm_file="${tm_file} pa/som.h"
                target_cpu_default="MASK_PA_11"
                use_collect2=yes
                ;;
        hppa1.0-*-bsd*)
+               tm_file="${tm_file} pa/som.h"
                use_collect2=yes
                ;;
        hppa1.0-*-hpux7*)
-               tm_file="pa/pa-oldas.h ${tm_file} pa/pa-hpux7.h"
+               tm_file="pa/pa-oldas.h ${tm_file} pa/som.h pa/pa-hpux7.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -875,7 +879,7 @@ changequote([,])dnl
 changequote(,)dnl
        hppa1.0-*-hpux8.0[0-2]*)
 changequote([,])dnl
-               tm_file="${tm_file} pa/pa-hpux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -891,7 +895,7 @@ changequote(,)dnl
        hppa1.1-*-hpux8.0[0-2]*)
 changequote([,])dnl
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -905,7 +909,7 @@ changequote([,])dnl
                ;;
        hppa1.1-*-hpux8*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -916,7 +920,7 @@ changequote([,])dnl
                use_collect2=yes
                ;;
        hppa1.0-*-hpux8*)
-               tm_file="${tm_file} pa/pa-hpux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -928,7 +932,7 @@ changequote([,])dnl
                ;;
        hppa1.1-*-hpux10* | hppa2*-*-hpux10*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux10.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                tmake_file=pa/t-pa
@@ -947,7 +951,7 @@ changequote([,])dnl
                use_collect2=yes
                ;;
        hppa1.0-*-hpux10*)
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux10.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                tmake_file=pa/t-pa
@@ -967,7 +971,7 @@ changequote([,])dnl
                ;;
        hppa1.1-*-hpux11* | hppa2*-*-hpux11*)
                target_cpu_default=1
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux11.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux11.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                tmake_file=pa/t-pa
@@ -986,7 +990,7 @@ changequote([,])dnl
                use_collect2=yes
                ;;
        hppa1.0-*-hpux11*)
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux11.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux11.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if [[ x$gas = xyes ]]
@@ -1005,7 +1009,7 @@ changequote([,])dnl
                ;;
        hppa1.1-*-hpux* | hppa2*-*-hpux*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux9.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -1016,7 +1020,7 @@ changequote([,])dnl
                use_collect2=yes
                ;;
        hppa1.0-*-hpux*)
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hpux9.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -1028,7 +1032,7 @@ changequote([,])dnl
                ;;
        hppa1.1-*-hiux* | hppa2*-*-hiux*)
                target_cpu_default="MASK_PA_11"
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hiux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -1039,7 +1043,7 @@ changequote([,])dnl
                use_collect2=yes
                ;;
        hppa1.0-*-hiux*)
-               tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
+               tm_file="${tm_file} pa/som.h pa/pa-hpux.h pa/pa-hiux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
                if test x$gas = xyes
@@ -1050,6 +1054,7 @@ changequote([,])dnl
                use_collect2=yes
                ;;
        hppa*-*-lites*)
+               tm_file="${tm_file} elfos.h pa/elf.h"
                target_cpu_default="MASK_PA_11"
                use_collect2=yes
                ;;