* mpw-config.in: Add PowerMac target support, generate config.h.
authorStan Shebs <shebs@codesourcery.com>
Fri, 27 Oct 1995 05:28:17 +0000 (05:28 +0000)
committerStan Shebs <shebs@codesourcery.com>
Fri, 27 Oct 1995 05:28:17 +0000 (05:28 +0000)
* mac-ld.r: New file, Mac resources.
* mpw-make.sed: New file, edits Makefile.in into MPW syntax.
* mpw-make.in: Remove.
* mpw-eppcmacos.c: Prebuilt version of PowerMac linking script.

ld/ChangeLog
ld/mac-ld.r [new file with mode: 0644]
ld/mpw-config.in
ld/mpw-eppcmacos.c [new file with mode: 0644]
ld/mpw-make.in [deleted file]
ld/mpw-make.sed [new file with mode: 0644]

index 6827fbadf26f90daa45b0998ca2a1d37d567b2d6..339481498625344150f4a40c179b181954b72f2e 100644 (file)
@@ -1,3 +1,11 @@
+Thu Oct 26 22:22:49 1995  Stan Shebs  <shebs@andros.cygnus.com>
+
+       * mpw-config.in: Add PowerMac target support, generate config.h.
+       * mac-ld.r: New file, Mac resources.
+       * mpw-make.sed: New file, edits Makefile.in into MPW syntax.
+       * mpw-make.in: Remove.
+       * mpw-eppcmacos.c: Prebuilt version of PowerMac linking script.
+
 Thu Oct 26 14:11:26 1995  Ian Lance Taylor  <ian@cygnus.com>
 
        * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Treat
diff --git a/ld/mac-ld.r b/ld/mac-ld.r
new file mode 100644 (file)
index 0000000..8500a80
--- /dev/null
@@ -0,0 +1,16 @@
+#ifdef WANT_CFRG
+
+#include "CodeFragmentTypes.r"
+
+resource 'cfrg' (0) {
+       {
+               kPowerPC,
+               kFullLib,
+               kNoVersionNum, kNoVersionNum,
+               0, 0,
+               kIsApp, kOnDiskFlat, kZeroOffset, kWholeFork,
+               "ld"
+       }
+};
+
+#endif /* WANT_CFRG */
index 928e903aa209ed7913a0714aa9db84a5314723cf..45fc41f3d9951c1f44e0d07e016e9e635d27e06f 100644 (file)
@@ -4,10 +4,10 @@ If "{target_canonical}" =~ /m68k-apple-macos/
        Set emulname m68kcoff
        forward-include "{srcdir}"mpw-em68kcoff.c em68kcoff.c
        Set emulation_ofiles "{o}"em68kcoff.c.o
-Else If "{target_canonical}" =~ /ppc-apple-macos/
-       Set emulname xcoff
-       forward-include "{srcdir}"mpw-excoff.c excoff.c
-       Set emulation_ofiles "{o}"excoff.c.o
+Else If "{target_canonical}" =~ /powerpc-apple-macos/
+       Set emulname ppcmacos
+       forward-include "{srcdir}"mpw-eppcmacos.c eppcmacos.c
+       Set emulation_ofiles "{o}"eppcmacos.c.o
 Else If "{target_canonical}" =~ /i386-unknown-go32/
        Set emulname i386go32
        forward-include "{srcdir}"mpw-ei386go32.c ei386go32.c
@@ -27,13 +27,17 @@ Echo "extern ld_emulation_xfer_type ld_{emulname}_emulation;" >> "{o}"ldemul-tmp
 Echo '#define EMULATION_LIST \'                                >> "{o}"ldemul-tmp.h
 Echo "  &ld_{emulname}_emulation, \"                   >> "{o}"ldemul-tmp.h
 Echo '  0'                                             >> "{o}"ldemul-tmp.h
-MoveIfChange "{o}"ldemul-tmp.h "{o}"ldemul-list.h
 
-Echo '# From mpw-config.in'      > "{o}"mk.tmp
+MoveIfChange "{o}"ldemul-tmp.h "{o}"ldemul-list.h
 
-Echo "EMUL = " {emulname}      >> "{o}"mk.tmp
-Echo "EMULATION_OFILES = " {emulation_ofiles} >> "{o}"mk.tmp
+Echo '# From mpw-config.in'                             > "{o}"mk.tmp
+Echo "EMUL = " {emulname}                              >> "{o}"mk.tmp
+Echo "EMULATION_OFILES = " {emulation_ofiles}          >> "{o}"mk.tmp
 Echo 'version = ' `Search 'ld version ' {srcdir}ldver.c | sed -e 's/.*ld version \([^ ]*\).*/\1/'` >> "{o}"mk.tmp
-Echo "TDEFINES = "             >> "{o}"mk.tmp
+Echo "TDEFINES = "                                     >> "{o}"mk.tmp
+Echo '# End from mpw-config.in'                                >> "{o}"mk.tmp
+
+Echo '/* config.h.  Generated by mpw-configure.  */'    > "{o}"config.new
+Echo '#include "mpw.h"'                                        >> "{o}"config.new
 
-Echo '# End from mpw-config.in'        >> "{o}"mk.tmp
+MoveIfChange "{o}"config.new "{o}"config.h
diff --git a/ld/mpw-eppcmacos.c b/ld/mpw-eppcmacos.c
new file mode 100644 (file)
index 0000000..9bc9812
--- /dev/null
@@ -0,0 +1,841 @@
+/* This file is is generated by a shell script.  DO NOT EDIT! */
+
+/* AIX emulation code for ppcmacos
+   Copyright (C) 1991, 1993, 1995 Free Software Foundation, Inc.
+   Written by Steve Chamberlain <sac@cygnus.com>
+   AIX support by Ian Lance Taylor <ian@cygnus.com>
+
+This file is part of GLD, the Gnu Linker.
+
+This program 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 of the License, or
+(at your option) any later version.
+
+This program 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 this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#define TARGET_IS_ppcmacos
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libiberty.h"
+#include "getopt.h"
+#include "bfdlink.h"
+
+#include <ctype.h>
+
+#include "ld.h"
+#include "ldmain.h"
+#include "ldemul.h"
+#include "ldfile.h"
+#include "ldmisc.h"
+#include "ldexp.h"
+#include "ldlang.h"
+
+static void gldppcmacos_before_parse PARAMS ((void));
+static int gldppcmacos_parse_args PARAMS ((int, char **));
+static void gldppcmacos_before_allocation PARAMS ((void));
+static void gldppcmacos_read_file PARAMS ((const char *, boolean));
+static void gldppcmacos_free PARAMS ((PTR));
+static char *gldppcmacos_get_script PARAMS ((int *isfile));
+
+/* The file alignment required for each section.  */
+static unsigned long file_align;
+
+/* The maximum size the stack is permitted to grow.  This is stored in
+   the a.out header.  */
+static unsigned long maxstack;
+
+/* The maximum data size.  This is stored in the a.out header.  */
+static unsigned long maxdata;
+
+/* Whether to perform garbage collection.  */
+static int gc = 1;
+
+/* The module type to use.  */
+static unsigned short modtype = ('1' << 8) | 'L';
+
+/* Whether the .text section must be read-only (i.e., no relocs
+   permitted).  */
+static int textro;
+
+/* Structure used to hold import or export file list.  */
+
+struct filelist
+{
+  struct filelist *next;
+  const char *name;
+};
+
+/* List of import files.  */
+struct filelist *import_files;
+
+/* List of export files.  */
+struct filelist *export_files;
+
+static void
+gldppcmacos_before_parse()
+{
+#ifndef TARGET_                        /* I.e., if not generic.  */
+  ldfile_output_architecture = bfd_arch_powerpc;
+#endif /* not TARGET_ */
+}
+
+/* Handle AIX specific options.  */
+
+static int
+gldppcmacos_parse_args (argc, argv)
+     int argc;
+     char **argv;
+{
+  int prevoptind = optind;
+  int prevopterr = opterr;
+  int longind;
+  int optc;
+  long val;
+  char *end;
+
+#define OPTION_IGNORE (300)
+#define OPTION_AUTOIMP (OPTION_IGNORE + 1)
+#define OPTION_ERNOTOK (OPTION_AUTOIMP + 1)
+#define OPTION_EROK (OPTION_ERNOTOK + 1)
+#define OPTION_EXPORT (OPTION_EROK + 1)
+#define OPTION_IMPORT (OPTION_EXPORT + 1)
+#define OPTION_MAXDATA (OPTION_IMPORT + 1)
+#define OPTION_MAXSTACK (OPTION_MAXDATA + 1)
+#define OPTION_MODTYPE (OPTION_MAXSTACK + 1)
+#define OPTION_NOAUTOIMP (OPTION_MODTYPE + 1)
+#define OPTION_NOSTRCMPCT (OPTION_NOAUTOIMP + 1)
+#define OPTION_STRCMPCT (OPTION_NOSTRCMPCT + 1)
+
+  static struct option longopts[] = {
+    {"basis", no_argument, NULL, OPTION_IGNORE},
+    {"bautoimp", no_argument, NULL, OPTION_AUTOIMP},
+    {"bcomprld", no_argument, NULL, OPTION_IGNORE},
+    {"bcrld", no_argument, NULL, OPTION_IGNORE},
+    {"bcror31", no_argument, NULL, OPTION_IGNORE},
+    {"bD", required_argument, NULL, OPTION_MAXDATA},
+    {"bE", required_argument, NULL, OPTION_EXPORT},
+    {"bernotok", no_argument, NULL, OPTION_ERNOTOK},
+    {"berok", no_argument, NULL, OPTION_EROK},
+    {"berrmsg", no_argument, NULL, OPTION_IGNORE},
+    {"bexport", required_argument, NULL, OPTION_EXPORT},
+    {"bf", no_argument, NULL, OPTION_ERNOTOK},
+    {"bgc", no_argument, &gc, 1},
+    {"bh", required_argument, NULL, OPTION_IGNORE},
+    {"bhalt", required_argument, NULL, OPTION_IGNORE},
+    {"bI", required_argument, NULL, OPTION_IMPORT},
+    {"bimport", required_argument, NULL, OPTION_IMPORT},
+    {"bmaxdata", required_argument, NULL, OPTION_MAXDATA},
+    {"bmaxstack", required_argument, NULL, OPTION_MAXSTACK},
+    {"bM", required_argument, NULL, OPTION_MODTYPE},
+    {"bmodtype", required_argument, NULL, OPTION_MODTYPE},
+    {"bnoautoimp", no_argument, NULL, OPTION_NOAUTOIMP},
+    {"bnodelcsect", no_argument, NULL, OPTION_IGNORE},
+    {"bnogc", no_argument, &gc, 0},
+    {"bnso", no_argument, NULL, OPTION_NOAUTOIMP},
+    {"bnostrcmpct", no_argument, NULL, OPTION_NOSTRCMPCT},
+    {"bnotextro", no_argument, &textro, 0},
+    {"bnro", no_argument, &textro, 0},
+    {"bro", no_argument, &textro, 1},
+    {"bS", required_argument, NULL, OPTION_MAXSTACK},
+    {"bso", no_argument, NULL, OPTION_AUTOIMP},
+    {"bstrcmpct", no_argument, NULL, OPTION_STRCMPCT},
+    {"btextro", no_argument, &textro, 1},
+    {NULL, no_argument, NULL, 0}
+  };
+
+  /* Options supported by the AIX linker which we do not support: -f,
+     -S, -v, -Z, -bbindcmds, -bbinder, -bbindopts, -bcalls, -bcaps,
+     -bcror15, -bdebugopt, -bdbg, -bdelcsect, -bex?, -bfilelist, -bfl,
+     -bgcbypass, -bglink, -binsert, -bi, -bloadmap, -bl, -bmap, -bnl,
+     -bnobind, -bnocomprld, -bnocrld, -bnoerrmsg, -bnoglink,
+     -bnoloadmap, -bnl, -bnoobjreorder, -bnoquiet, -bnoreorder,
+     -bnotypchk, -bnox, -bquiet, -bR, -brename, -breorder, -btypchk,
+     -bx, -bX, -bxref.  */
+
+  /* If the first option starts with -b, change the first : to an =.
+     The AIX linker uses : to separate the option from the argument;
+     changing it to = lets us treat it as a getopt option.  */
+  if (optind < argc && strncmp (argv[optind], "-b", 2) == 0)
+    {
+      char *s;
+
+      for (s = argv[optind]; *s != '\0'; s++)
+       {
+         if (*s == ':')
+           {
+             *s = '=';
+             break;
+           }
+       }
+    }
+
+  opterr = 0;
+  optc = getopt_long_only (argc, argv, "-D:H:KT:z", longopts, &longind);
+  opterr = prevopterr;
+
+  switch (optc)
+    {
+    default:
+      optind = prevoptind;
+      return 0;
+
+    case 0:
+      /* Long option which just sets a flag.  */
+      break;
+
+    case 'D':
+      val = strtol (optarg, &end, 0);
+      if (*end != '\0')
+       einfo ("%P: warning: ignoring invalid -D number %s\n", optarg);
+      else if (val != -1)
+       lang_section_start (".data", exp_intop (val));
+      break;
+
+    case 'H':
+      val = strtoul (optarg, &end, 0);
+      if (*end != '\0'
+         || (val & (val - 1)) != 0)
+       einfo ("%P: warning: ignoring invalid -H number %s\n", optarg);
+      else
+       file_align = val;
+      break;
+
+    case 'K':
+    case 'z':
+      /* FIXME: This should use the page size for the target system.  */
+      file_align = 4096;
+      break;
+
+    case 'T':
+      /* On AIX this is the same as GNU ld -Ttext.  When we see -T
+         number, we assume the AIX option is intended.  Otherwise, we
+         assume the usual GNU ld -T option is intended.  We can't just
+         ignore the AIX option, because gcc passes it to the linker.  */
+      val = strtoul (optarg, &end, 0);
+      if (*end != '\0')
+       {
+         optind = prevoptind;
+         return 0;
+       }
+      lang_section_start (".text", exp_intop (val));
+      break;
+
+    case OPTION_IGNORE:
+      break;
+
+    case OPTION_AUTOIMP:
+      link_info.static_link = false;
+      break;
+
+    case OPTION_ERNOTOK:
+      force_make_executable = false;
+      break;
+
+    case OPTION_EROK:
+      force_make_executable = true;
+      break;
+
+    case OPTION_EXPORT:
+    case OPTION_IMPORT:
+      {
+       struct filelist *n;
+       struct filelist **flpp;
+
+       n = (struct filelist *) xmalloc (sizeof (struct filelist));
+       n->next = NULL;
+       n->name = optarg;
+       if (optc == OPTION_EXPORT)
+         flpp = &export_files;
+       else
+         flpp = &import_files;
+       while (*flpp != NULL)
+         flpp = &(*flpp)->next;
+       *flpp = n;
+      }
+      break;
+
+    case OPTION_MAXDATA:
+      val = strtoul (optarg, &end, 0);
+      if (*end != '\0')
+       einfo ("%P: warning: ignoring invalid -bmaxdata number %s\n",
+              optarg);
+      else
+       maxdata = val;
+      break;
+
+    case OPTION_MAXSTACK:
+      val = strtoul (optarg, &end, 0);
+      if (*end != '\0')
+       einfo ("%P: warning: ignoring invalid -bmaxstack number %s\n",
+              optarg);
+      else
+       maxstack = val;
+      break;
+
+    case OPTION_MODTYPE:
+      if (*optarg == 'S')
+       {
+         link_info.shared = true;
+         ++optarg;
+       }
+      if (*optarg == '\0' || optarg[1] == '\0')
+       einfo ("%P: warning: ignoring invalid module type %s\n", optarg);
+      else
+       modtype = (*optarg << 8) | optarg[1];
+      break;
+
+    case OPTION_NOAUTOIMP:
+      link_info.static_link = true;
+      break;
+
+    case OPTION_NOSTRCMPCT:
+      config.traditional_format = true;
+      break;
+
+    case OPTION_STRCMPCT:
+      config.traditional_format = false;
+      break;
+    }
+
+  return 1;
+}
+
+/* This is called after the sections have been attached to output
+   sections, but before any sizes or addresses have been set.  */
+
+static void
+gldppcmacos_before_allocation ()
+{
+  struct filelist *fl;
+  char *libpath;
+
+  /* Handle the import and export files, if any.  */
+  for (fl = import_files; fl != NULL; fl = fl->next)
+    gldppcmacos_read_file (fl->name, true);
+  for (fl = export_files; fl != NULL; fl = fl->next)
+    gldppcmacos_read_file (fl->name, false);
+
+  /* We need to build LIBPATH from the -L arguments.  If any -rpath
+     arguments were used, though, we use -rpath instead, as a GNU
+     extension.  */
+  if (command_line.rpath != NULL)
+    libpath = command_line.rpath;
+  else if (search_head == NULL)
+    libpath = (char *) "";
+  else
+    {
+      size_t len;
+      search_dirs_type *search;
+
+      len = strlen (search_head->name);
+      libpath = xmalloc (len + 1);
+      strcpy (libpath, search_head->name);
+      for (search = search_head->next; search != NULL; search = search->next)
+       {
+         size_t nlen;
+
+         nlen = strlen (search->name);
+         libpath = xrealloc (libpath, len + nlen + 2);
+         libpath[len] = ':';
+         strcpy (libpath + len + 1, search->name);
+         len += nlen + 1;
+       }
+    }
+
+  /* Let the XCOFF backend set up the .loader section.  */
+  if (! bfd_xcoff_size_dynamic_sections (output_bfd, &link_info, libpath,
+                                        entry_symbol, file_align,
+                                        maxstack, maxdata,
+                                        gc ? true : false,
+                                        modtype,
+                                        textro ? true : false))
+    einfo ("%P%F: failed to set dynamic section sizes: %E\n");
+}
+
+/* Read an import or export file.  */
+
+static void
+gldppcmacos_read_file (filename, import)
+     const char *filename;
+     boolean import;
+{
+  struct obstack *o;
+  FILE *f;
+  int lineno;
+  int c;
+  boolean keep;
+  const char *imppath;
+  const char *impfile;
+  const char *impmember;
+
+  o = (struct obstack *) xmalloc (sizeof (struct obstack));
+  obstack_specify_allocation (o, 0, 0, xmalloc, gldppcmacos_free);
+
+  f = fopen (filename, "r");
+  if (f == NULL)
+    {
+      bfd_set_error (bfd_error_system_call);
+      einfo ("%F%s: %E\n", filename);
+    }
+
+  keep = false;
+
+  imppath = NULL;
+  impfile = NULL;
+  impmember = NULL;
+
+  lineno = 0;
+  while ((c = getc (f)) != EOF)
+    {
+      char *s;
+      char *symname;
+      boolean syscall;
+      bfd_vma address;
+      struct bfd_link_hash_entry *h;
+
+      if (c != '\n')
+       {
+         obstack_1grow (o, c);
+         continue;
+       }
+
+      obstack_1grow (o, '\0');
+      ++lineno;
+
+      s = (char *) obstack_base (o);
+      while (isspace ((unsigned char) *s))
+       ++s;
+      if (*s == '\0'
+         || *s == '*'
+         || (*s == '#' && s[1] == ' ')
+         || (! import && *s == '#' && s[1] == '!'))
+       {
+         obstack_free (o, obstack_base (o));
+         continue;
+       }
+
+      if (*s == '#' && s[1] == '!')
+       {
+         s += 2;
+         while (isspace ((unsigned char) *s))
+           ++s;
+         if (*s == '\0')
+           {
+             imppath = NULL;
+             impfile = NULL;
+             impmember = NULL;
+             obstack_free (o, obstack_base (o));
+           }
+         else if (*s == '(')
+           einfo ("%F%s%d: #! ([member]) is not supported in import files",
+                  filename, lineno);
+         else
+           {
+             char cs;
+             char *file;
+
+             (void) obstack_finish (o);
+             keep = true;
+             imppath = s;
+             impfile = NULL;
+             while (! isspace ((unsigned char) *s) && *s != '(' && *s != '\0')
+               {
+                 if (*s == '/')
+                   file = s + 1;
+                 ++s;
+               }
+             if (file != NULL)
+               {
+                 file[-1] = '\0';
+                 impfile = file;
+                 if (imppath == file - 1)
+                   imppath = "/";
+               }
+             else
+               {
+                 impfile = imppath;
+                 imppath = "";
+               }
+             cs = *s;
+             *s = '\0';
+             while (isspace ((unsigned char) cs))
+               {
+                 ++s;
+                 cs = *s;
+               }
+             if (cs != '(')
+               {
+                 impmember = "";
+                 if (cs != '\0')
+                   einfo ("%s:%d: warning: syntax error in import file\n",
+                          filename, lineno);
+               }
+             else
+               {
+                 ++s;
+                 impmember = s;
+                 while (*s != ')' && *s != '\0')
+                   ++s;
+                 if (*s == ')')
+                   *s = '\0';
+                 else
+                   einfo ("%s:%d: warning: syntax error in import file\n",
+                          filename, lineno);
+               }
+           }
+
+         continue;
+       }
+
+      /* This is a symbol to be imported or exported.  */
+      symname = s;
+      syscall = false;
+      address = (bfd_vma) -1;
+
+      while (! isspace ((unsigned char) *s) && *s != '\0')
+       ++s;
+      if (*s != '\0')
+       {
+         char *se;
+
+         *s++ = '\0';
+
+         while (isspace ((unsigned char) *s))
+           ++s;
+
+         se = s;
+         while (! isspace ((unsigned char) *se) && *se != '\0')
+           ++se;
+         if (*se != '\0')
+           {
+             *se++ = '\0';
+             while (isspace ((unsigned char) *se))
+               ++se;
+             if (*se != '\0')
+               einfo ("%s%d: warning: syntax error in import/export file\n",
+                      filename, lineno);
+           }
+
+         if (strcasecmp (s, "svc") == 0
+             || strcasecmp (s, "syscall") == 0)
+           syscall = true;
+         else
+           {
+             char *end;
+
+             address = strtoul (s, &end, 0);
+             if (*end != '\0')
+               einfo ("%s:%d: warning: syntax error in import/export file\n",
+                      filename, lineno);
+           }
+       }
+
+      h = bfd_link_hash_lookup (link_info.hash, symname, false, false, true);
+      if (h == NULL || h->type == bfd_link_hash_new)
+       {
+         /* We can just ignore attempts to import an unreferenced
+            symbol.  */
+         if (! import)
+           einfo ("%X%s:%d: attempt to export undefined symbol %s\n",
+                  filename, lineno, symname);
+       }
+      else if (import)
+       {
+         if (! bfd_xcoff_import_symbol (output_bfd, &link_info, h, address,
+                                        imppath, impfile, impmember))
+           einfo ("%X%s:%d: failed to import symbol %s: %E\n",
+                  filename, lineno, symname);
+       }
+      else
+       {
+         if (! bfd_xcoff_export_symbol (output_bfd, &link_info, h, syscall))
+           einfo ("%X%s:%d: failed to export symbol %s: %E\n",
+                  filename, lineno, symname);
+       }
+
+      obstack_free (o, obstack_base (o));
+    }
+
+  if (obstack_object_size (o) > 0)
+    {
+      einfo ("%s:%d: warning: ignoring unterminated last line\n",
+            filename, lineno);
+      obstack_free (o, obstack_base (o));
+    }
+
+  if (! keep)
+    {
+      obstack_free (o, NULL);
+      free (o);
+    }
+}
+
+/* This routine saves us from worrying about declaring free.  */
+
+static void
+gldppcmacos_free (p)
+     PTR p;
+{
+  free (p);
+}
+
+static char *
+gldppcmacos_get_script(isfile)
+     int *isfile;
+{                           
+  *isfile = 0;
+
+  if (link_info.relocateable == true && config.build_constructors == true)
+    return
+"OUTPUT_FORMAT(\"xcoff-powermac\")\n\
+OUTPUT_ARCH(powerpc)\n\
+ENTRY(__start)\n\
+SECTIONS\n\
+{\n\
+  .pad 0 : { *(.pad) }\n\
+  .text 0 : {\n\
+    *(.text)\n\
+    *(.pr)\n\
+    *(.ro)\n\
+    *(.db)\n\
+    *(.gl)\n\
+    *(.xo)\n\
+    *(.ti)\n\
+    *(.tb)\n\
+  }\n\
+  .data 0 : {\n\
+    *(.data)\n\
+    *(.rw)\n\
+    *(.sv)\n\
+    *(.ua)\n\
+    *(.ds)\n\
+    *(.tc0)\n\
+    *(.tc)\n\
+    *(.td)\n\
+  }\n\
+  .bss : {\n\
+    *(.bss)\n\
+    *(.bs)\n\
+    *(.uc)\n\
+    *(COMMON)\n\
+  }\n\
+  .loader 0 : {\n\
+    *(.loader)\n\
+  }\n\
+  .debug 0 : {\n\
+    *(.debug)\n\
+  }\n\
+}\n\n"
+  ; else if (link_info.relocateable == true) return
+"OUTPUT_FORMAT(\"xcoff-powermac\")\n\
+OUTPUT_ARCH(powerpc)\n\
+ENTRY(__start)\n\
+SECTIONS\n\
+{\n\
+  .pad 0 : { *(.pad) }\n\
+  .text 0 : {\n\
+    *(.text)\n\
+    *(.pr)\n\
+    *(.ro)\n\
+    *(.db)\n\
+    *(.gl)\n\
+    *(.xo)\n\
+    *(.ti)\n\
+    *(.tb)\n\
+  }\n\
+  .data 0 : {\n\
+    *(.data)\n\
+    *(.rw)\n\
+    *(.sv)\n\
+    *(.ua)\n\
+    *(.ds)\n\
+    *(.tc0)\n\
+    *(.tc)\n\
+    *(.td)\n\
+  }\n\
+  .bss : {\n\
+    *(.bss)\n\
+    *(.bs)\n\
+    *(.uc)\n\
+    *(COMMON)\n\
+  }\n\
+  .loader 0 : {\n\
+    *(.loader)\n\
+  }\n\
+  .debug 0 : {\n\
+    *(.debug)\n\
+  }\n\
+}\n\n"
+  ; else if (!config.text_read_only) return
+"OUTPUT_FORMAT(\"xcoff-powermac\")\n\
+OUTPUT_ARCH(powerpc)\n\
+ SEARCH_DIR(/usr/local/powerpc-apple-macos/lib);\n\
+ENTRY(__start)\n\
+SECTIONS\n\
+{\n\
+  .pad 0 : { *(.pad) }\n\
+  .text   : {\n\
+    PROVIDE (_text = .);\n\
+    *(.text)\n\
+    *(.pr)\n\
+    *(.ro)\n\
+    *(.db)\n\
+    *(.gl)\n\
+    *(.xo)\n\
+    *(.ti)\n\
+    *(.tb)\n\
+    PROVIDE (_etext = .);\n\
+  }\n\
+  .data 0 : {\n\
+    PROVIDE (_data = .);\n\
+    *(.data)\n\
+    *(.rw)\n\
+    *(.sv)\n\
+    *(.ua)\n\
+    *(.ds)\n\
+    *(.tc0)\n\
+    *(.tc)\n\
+    *(.td)\n\
+    PROVIDE (_edata = .);\n\
+  }\n\
+  .bss : {\n\
+    *(.bss)\n\
+    *(.bs)\n\
+    *(.uc)\n\
+    *(COMMON)\n\
+    PROVIDE (_end = .);\n\
+    PROVIDE (end = .);\n\
+  }\n\
+  .loader 0 : {\n\
+    *(.loader)\n\
+  }\n\
+  .debug 0 : {\n\
+    *(.debug)\n\
+  }\n\
+}\n\n"
+  ; else if (!config.magic_demand_paged) return
+"OUTPUT_FORMAT(\"xcoff-powermac\")\n\
+OUTPUT_ARCH(powerpc)\n\
+ SEARCH_DIR(/usr/local/powerpc-apple-macos/lib);\n\
+ENTRY(__start)\n\
+SECTIONS\n\
+{\n\
+  .pad 0 : { *(.pad) }\n\
+  .text   : {\n\
+    PROVIDE (_text = .);\n\
+    *(.text)\n\
+    *(.pr)\n\
+    *(.ro)\n\
+    *(.db)\n\
+    *(.gl)\n\
+    *(.xo)\n\
+    *(.ti)\n\
+    *(.tb)\n\
+    PROVIDE (_etext = .);\n\
+  }\n\
+  .data 0 : {\n\
+    PROVIDE (_data = .);\n\
+    *(.data)\n\
+    *(.rw)\n\
+    *(.sv)\n\
+    *(.ua)\n\
+    *(.ds)\n\
+    *(.tc0)\n\
+    *(.tc)\n\
+    *(.td)\n\
+    PROVIDE (_edata = .);\n\
+  }\n\
+  .bss : {\n\
+    *(.bss)\n\
+    *(.bs)\n\
+    *(.uc)\n\
+    *(COMMON)\n\
+    PROVIDE (_end = .);\n\
+    PROVIDE (end = .);\n\
+  }\n\
+  .loader 0 : {\n\
+    *(.loader)\n\
+  }\n\
+  .debug 0 : {\n\
+    *(.debug)\n\
+  }\n\
+}\n\n"
+  ; else return
+"OUTPUT_FORMAT(\"xcoff-powermac\")\n\
+OUTPUT_ARCH(powerpc)\n\
+ SEARCH_DIR(/usr/local/powerpc-apple-macos/lib);\n\
+ENTRY(__start)\n\
+SECTIONS\n\
+{\n\
+  .pad 0 : { *(.pad) }\n\
+  .text   : {\n\
+    PROVIDE (_text = .);\n\
+    *(.text)\n\
+    *(.pr)\n\
+    *(.ro)\n\
+    *(.db)\n\
+    *(.gl)\n\
+    *(.xo)\n\
+    *(.ti)\n\
+    *(.tb)\n\
+    PROVIDE (_etext = .);\n\
+  }\n\
+  .data 0 : {\n\
+    PROVIDE (_data = .);\n\
+    *(.data)\n\
+    *(.rw)\n\
+    *(.sv)\n\
+    *(.ua)\n\
+    *(.ds)\n\
+    *(.tc0)\n\
+    *(.tc)\n\
+    *(.td)\n\
+    PROVIDE (_edata = .);\n\
+  }\n\
+  .bss : {\n\
+    *(.bss)\n\
+    *(.bs)\n\
+    *(.uc)\n\
+    *(COMMON)\n\
+    PROVIDE (_end = .);\n\
+    PROVIDE (end = .);\n\
+  }\n\
+  .loader 0 : {\n\
+    *(.loader)\n\
+  }\n\
+  .debug 0 : {\n\
+    *(.debug)\n\
+  }\n\
+}\n\n"
+; }
+
+struct ld_emulation_xfer_struct ld_ppcmacos_emulation = 
+{
+  gldppcmacos_before_parse,
+  syslib_default,
+  hll_default,
+  after_parse_default,
+  after_open_default,
+  after_allocation_default,
+  set_output_arch_default,
+  ldemul_default_target,
+  gldppcmacos_before_allocation,
+  gldppcmacos_get_script,
+  "ppcmacos",
+  "xcoff-powermac",
+  0,   /* finish */
+  0,   /* create_output_section_statements */
+  0,   /* open_dynamic_archive */
+  0,   /* place_orphan */
+  0,   /* set_symbols */
+  gldppcmacos_parse_args,
+};
diff --git a/ld/mpw-make.in b/ld/mpw-make.in
deleted file mode 100644 (file)
index cb325e3..0000000
+++ /dev/null
@@ -1,744 +0,0 @@
-
-s = "{srcdir}"
-
-o = :
-
-# File in object dir can come from either the current dir or srcdir.
-"{o}" \Option-f : "{s}"
-
-# Default rule that puts each file into separate segment.
-
-.c.o  \Option-f .c
-   {CC}  {DepDir}{Default}.c {ALL_CFLAGS} {SymOptions} -s {Default} -o {TargDir}{Default}.c.o
-
-# Makefile for the GNU linker ld (version 2)
-# Copyright (C) 1989, 90, 91, 92, 93, 1994 Free Software Foundation, Inc.
-
-# This file is part of GNU ld..
-
-# This program 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 of the License, or
-# (at your option) any later version.
-# 
-# This program 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 this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
-# srcdir = :
-objdir = :
-
-prefix = :usr:local
-
-program_transform_name =
-exec_prefix = {prefix}
-bindir = {exec_prefix}bin:
-libdir = {exec_prefix}:lib
-tooldir = {exec_prefix}:{target_alias}
-datadir = {prefix}:lib
-mandir = {prefix}:man
-man1dir = {mandir}:man1
-man2dir = {mandir}:man2
-man3dir = {mandir}:man3
-man4dir = {mandir}:man4
-man5dir = {mandir}:man5
-man6dir = {mandir}:man6
-man7dir = {mandir}:man7
-man8dir = {mandir}:man8
-man9dir = {mandir}:man9
-infodir = {prefix}:info
-includedir = {prefix}:include
-docdir = {datadir}:doc
-# We put the scripts in the directory {scriptdir}:ldscripts.
-# We can't put the scripts in {datadir} because the SEARCH_DIR
-# directives need to be different for native and cross linkers.
-scriptdir = {tooldir}:lib
-
-SHELL = :bin:sh
-
-INSTALL = `cd {srcdir}; pwd`:::install.sh -c
-INSTALL_PROGRAM = {INSTALL}
-INSTALL_DATA = {INSTALL}
-INSTALL_XFORM = {INSTALL} -t='{program_transform_name}'
-INSTALL_XFORM1 = {INSTALL_XFORM} -b=.1
-
-AR = ar
-AR_FLAGS = qv
-#CFLAGS = -g
-MAKEINFO = makeinfo
-TEXI2DVI = texi2dvi
-RANLIB = ranlib
-CC_FOR_BUILD={CC}
-BISON = byacc
-LEX = flex
-
-# Seach path to override the default search path for -lfoo libraries.
-# If LIB_PATH is empty, the ones in the script (if any) are left alone.
-# (The default is usually :lib \Option-f usr:lib \Option-f :usr:local:lib, unless building
-# a cross-linker, in which case the default is empty.  See genscripts.sh.)
-# Otherwise, they are replaced with the ones given in LIB_PATH,
-# which may have the form \Option-f  LIB_PATH=:lib \Option-f :usr:local:lib
-LIB_PATH =
-
-# Additional libraries which are used when ld is built native.  This
-# is set by some host makefile fragments.
-NATIVE_LIB_DIRS =
-
-BASEDIR = "{srcroot}"
-BFDDIR = {BASEDIR}bfd
-INCDIR = {BASEDIR}include
-INCLUDES = -i : -i {srcdir} -i ::bfd: -i {BFDDIR} -i {INCDIR} -i ::extra-include -i "{INCDIR}":mpw:
-DEP = mkdep
-
-# What version of the manual to build
-DOCVER = gen
-
-# Where to find texinfo.tex to format docn with TeX
-TEXIDIR = "{srcdir}":texinfo
-
-# Where to find other docs needed to format with TeX
-TEXINPUTS = {TEXIDIR} \Option-f {BFDDIR}:doc \Option-f {srcdir}
-
-# Whether to get roff to put indexing entries on stderr
-TEXI2OPT =
-# You neeed this to generate ld-index.ms (or .mm or .me)
-# TEXI2OPT = -i
-
-TEXI2ROFF=texi2roff
-
-# Which roff program to use to generate index for texi2roff'd doc
-ROFF = groff
-
-#stuff for self hosting (can be overridden in config file).
-HOSTING_CRT0 = "{o}":lib:crt0.c.o
-HOSTING_LIBS = `if [ -f ::gcc:libgcc.o ] ; then echo ::gcc:libgcc.o ; else gcc -print-libgcc-file-name; fi`  -lc
-HOSTING_EMU = -m {EMUL}
-
-CXX = `if [ -f ::gcc:xgcc ] ; then \Option-d
-               echo ::gcc:xgcc -B::gcc:; \Option-d
-           else echo gcc; \Option-d
-           fi`
-CXXFLAGS = -fgnu-linker
-
-# FIX_ME \Option-f  using ::gcc:xgcc breaks the cdtest. 
-CXX = g++
-
-# Setup the testing framework, if you have one
-RUNTEST = runtest
-RUNTEST_FLAGS =
-RUNTEST_CC = `if [ -f ::gcc:xgcc ] ; then \Option-d
-              echo ::gcc:xgcc -B::gcc:; \Option-d
-           else echo gcc; \Option-d
-           fi`
-RUNTEST_CFLAGS = {CFLAGS}
-RUNTEST_CXX = `if [ -f ::gcc:xgcc ] ; then \Option-d
-               echo ::gcc:xgcc -B::gcc:; \Option-d
-           else echo gcc; \Option-d
-           fi`
-# FIX_ME \Option-f  using ::gcc:xgcc breaks the cdtest. 
-RUNTEST_CXX = {CXX}
-RUNTEST_CXXFLAGS = {CXXFLAGS}
-
-# go directly to ld.new in case this ld isn't capable of
-# linking native object on this host.  It can be renamed on
-# install.
-LD_PROG        = ld.new
-
-all \Option-f  {LD_PROG}
-# .PHONY \Option-f  all
-
-### Host, target, and site specific Makefile fragments come in here.
-####
-
-LINTFLAGS =  {INCLUDES} {EXTRA_DEF} 
-
-# The "{s}".cc suffix is used by `make check'.
-
-# .SUFFIXES \Option-f  "{s}".y {SUFFIXES} "{s}".cc
-
-# Suppress smart makes who think they know how to automake Yacc files
-# .y.c \Option-f 
-
-# This rule is used for the check-cdtest target.
-"{o}".cc.c.o \Option-f 
-       {CXX} -c -i {srcdir} {CXXFLAGS} {CFLAGS} $<
-
-ALL_CFLAGS={INCLUDES} {HDEFINES} {TDEFINES} {CDEFINES} {CFLAGS}
-"{o}".c.c.o \Option-f 
-       {CC} -c {ALL_CFLAGS} $<
-
-# for self hosting
-BFDLIB = ::bfd:libbfd.o
-LIBIBERTY = ::libiberty:libiberty.o
-
-ALL_EMULATIONS = "{o}"elnk960.c.o "{o}"esun3.c.o "{o}"ei386aout.c.o "{o}"ego32.c.o "{o}"evsta.c.o \Option-d
-       "{o}"em88kbcs.c.o "{o}"ea29k.c.o "{o}"enews.c.o "{o}"ehp300bsd.c.o "{o}"ehp3hpux.c.o \Option-d
-       "{o}"eh8300.c.o "{o}"eh8300h.c.o "{o}"eebmon29k.c.o "{o}"esun4.c.o "{o}"egld960.c.o \Option-d
-       "{o}"em68kcoff.c.o "{o}"est2000.c.o "{o}"esa29200.c.o "{o}"ei386mach.c.o \Option-d
-       "{o}"evanilla.c.o "{o}"ei386coff.c.o "{o}"ez8ksim.c.o "{o}"emipslit.c.o "{o}"ei386bsd.c.o \Option-d
-       "{o}"emipsbig.c.o "{o}"emipsbsd.c.o "{o}"emipsidt.c.o "{o}"evax.c.o "{o}"eh8500.c.o \Option-d
-       "{o}"ehppaosf.c.o "{o}"emipsidtl.c.o "{o}"esh.c.o "{o}"eelf_i386.c.o "{o}"ealpha.c.o \Option-d
-       "{o}"ei386lynx.c.o "{o}"em68klynx.c.o "{o}"esparclynx.c.o "{o}"ecoff_sparc.c.o \Option-d
-       "{o}"edelta68.c.o \Option-d
-       {OTHER_EMULATIONS}
-
-CFILES = "{s}"ldctor.c "{s}"ldemul.c "{s}"ldexp.c "{s}"ldfile.c "{s}"ldlang.c \Option-d
-       ldmain.c "{s}"ldmisc.c "{s}"ldver.c "{s}"ldwrite.c "{s}"lexsup.c \Option-d
-       mri.c
-
-
-HFILES = "{s}"config.h "{s}"ld.h "{s}"ldctor.h "{s}"ldemul.h "{s}"ldexp.h "{s}"ldfile.h \Option-d
-       ldlang.h "{s}"ldlex.h "{s}"ldmain.h "{s}"ldmisc.h "{s}"ldver.h \Option-d
-       ldwrite.h "{s}"mri.h
-
-GENERATED_CFILES = :ldgram.c :ldlex.c
-GENERATED_HFILES = :ldgram.h :ldemul-list.h
-
-OFILES = "{o}"ldgram.c.o "{o}"ldlex.c.o "{o}"lexsup.c.o "{o}"ldlang.c.o "{o}"mri.c.o "{o}"ldctor.c.o "{o}"ldmain.c.o \Option-d
-       "{o}"ldwrite.c.o "{o}"ldexp.c.o  "{o}"ldemul.c.o "{o}"ldver.c.o "{o}"ldmisc.c.o \Option-d
-       "{o}"ldfile.c.o {EMULATION_OFILES}
-
-LINTSOURCES = {CFILES} {GENERATED_CFILES} e\Option-x.c
-
-STAGESTUFF = "{o}"\Option-x.c.o ldscripts:\Option-x e\Option-x.c {GENERATED_CFILES} {GENERATED_HFILES}
-
-info \Option-f  ld.info
-# .PHONY \Option-f  info
-
-:ldgram.c \Option-f "{s}"ldgram.y
-       {BISON} {BISONFLAGS} -d "{srcdir}"ldgram.y
-       Rename -y y.tab.c :ldgram.c
-       Rename -y y.tab.h :ldgram.h
-
-# Separate from ldgram.c so that a parallel make doesn't try to build
-# both ldgram.c and ldgram.h simultaneously.
-:ldgram.h \Option-f :ldgram.c
-
-# EMUL is the name of a file in the emulparams subdir, without the .sh.
-"{o}"ldmain.c.o \Option-f  "{s}"ldmain.c config.status 
-       {CC} {INCLUDES} {HDEFINES} {TDEFINES} {CDEFINES} -d DEFAULT_EMULATION=\Option-d"{EMUL}\Option-d" -d SCRIPTDIR=\Option-d"{scriptdir}\Option-d" {CFLAGS} "{s}"ldmain.c -o "{o}"ldmain.c.o
-
-# Use this when flex is working correctly.
-:ldlex.c \Option-f  "{s}"ldlex.l
-       {LEX} -i  -Cem "{srcdir}"ldlex.l
-       Catenate :lex.yy.c >:ldlex.c.new
-       Delete -y :lex.yy.c
-       Rename -y :ldlex.c.new :ldlex.c
-#:ldlex.c \Option-f  "{s}"mpw-ldlex.c
-#      Catenate "{s}"mpw-ldlex.c >:ldlex.c
-
-# These all start with e so 'make clean' can find them.
-
-GENSCRIPTS = {SHELL} "{srcdir}"genscripts.sh {srcdir} {libdir} {host_alias} {target_alias} {EMUL} "{NATIVE_LIB_DIRS}"
-GEN_DEPENDS = "{srcdir}"genscripts.sh
-
-esun4.c \Option-f  "{srcdir}"emulparams:sun4.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} sun4
-esun3.c \Option-f  "{srcdir}"emulparams:sun3.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} sun3
-evsta.c \Option-f  "{srcdir}"emulparams:vsta.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} vsta
-ego32.c \Option-f  "{srcdir}"emulparams:go32.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} go32
-enews.c \Option-f  "{srcdir}"emulparams:news.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} news
-evax.c \Option-f  "{srcdir}"emulparams:vax.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} vax
-ehp300bsd.c \Option-f  "{srcdir}"emulparams:hp300bsd.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} hp300bsd
-ehp3hpux.c \Option-f  "{srcdir}"emulparams:hp3hpux.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} hp3hpux
-ehppaosf.c \Option-f  "{srcdir}"emulparams:hppaosf.sh \Option-d
-  "{srcdir}"emultempl:hppaosf.em "{srcdir}"scripttempl:hppaosf.sc {GEN_DEPENDS}
-       {GENSCRIPTS} hppaosf
-ei386aout.c \Option-f  "{srcdir}"emulparams:i386aout.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} i386aout
-ei386mach.c \Option-f  "{srcdir}"emulparams:i386mach.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} i386mach
-eebmon29k.c \Option-f  "{srcdir}"emulparams:ebmon29k.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:ebmon29k.sc {GEN_DEPENDS}
-       {GENSCRIPTS} ebmon29k
-esa29200.c \Option-f  "{srcdir}"emulparams:sa29200.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:sa29200.sc {GEN_DEPENDS}
-       {GENSCRIPTS} sa29200
-ea29k.c \Option-f  "{srcdir}"emulparams:a29k.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:a29k.sc {GEN_DEPENDS}
-       {GENSCRIPTS} a29k
-em88kbcs.c \Option-f  "{srcdir}"emulparams:m88kbcs.sh \Option-d
-  "{srcdir}"emultempl:m88kbcs.em "{srcdir}"scripttempl:m88kbcs.sc {GEN_DEPENDS}
-       {GENSCRIPTS} m88kbcs
-eh8300.c \Option-f  "{srcdir}"emulparams:h8300.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:h8300.sc {GEN_DEPENDS}
-       {GENSCRIPTS} h8300
-eh8300h.c \Option-f  "{srcdir}"emulparams:h8300h.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:h8300h.sc {GEN_DEPENDS}
-       {GENSCRIPTS} h8300h
-eh8500.c \Option-f  "{srcdir}"emulparams:h8500.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:h8500.sc {GEN_DEPENDS}
-       {GENSCRIPTS} h8500
-esh.c \Option-f  "{srcdir}"emulparams:sh.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:sh.sc {GEN_DEPENDS}
-       {GENSCRIPTS} sh
-est2000.c \Option-f  "{srcdir}"emulparams:st2000.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:st2000.sc {GEN_DEPENDS}
-       {GENSCRIPTS} st2000
-ez8ksim.c \Option-f  "{srcdir}"emulparams:z8ksim.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:z8ksim.sc {GEN_DEPENDS}
-       {GENSCRIPTS} z8ksim
-evanilla.c \Option-f  "{srcdir}"emulparams:vanilla.sh \Option-d
-  "{srcdir}"emultempl:vanilla.em "{srcdir}"scripttempl:vanilla.sc {GEN_DEPENDS}
-       {GENSCRIPTS} vanilla
-elnk960.c \Option-f  "{srcdir}"emulparams:lnk960.sh \Option-d
-  "{srcdir}"emultempl:lnk960.em "{srcdir}"scripttempl:i960.sc {GEN_DEPENDS}
-       {GENSCRIPTS} lnk960
-egld960.c \Option-f  "{srcdir}"emulparams:gld960.sh \Option-d
-  "{srcdir}"emultempl:gld960.em "{srcdir}"scripttempl:i960.sc {GEN_DEPENDS}
-       {GENSCRIPTS} gld960
-em68kcoff.c \Option-f  "{srcdir}"emulparams:m68kcoff.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:m68kcoff.sc {GEN_DEPENDS}
-       {GENSCRIPTS} m68kcoff
-edelta68.c \Option-f  "{srcdir}"emulparams:delta68.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:delta68.sc {GEN_DEPENDS}
-       {GENSCRIPTS} delta68
-em68klynx.c \Option-f  "{srcdir}"emulparams:m68klynx.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:m68kcoff.sc {GEN_DEPENDS}
-       {GENSCRIPTS} m68klynx
-ei386coff.c \Option-f  "{srcdir}"emulparams:i386coff.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:i386coff.sc {GEN_DEPENDS}
-       {GENSCRIPTS} i386coff
-ei386lynx.c \Option-f  "{srcdir}"emulparams:i386lynx.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:i386coff.sc {GEN_DEPENDS}
-       {GENSCRIPTS} i386lynx
-esparclynx.c \Option-f  "{srcdir}"emulparams:sparclynx.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:sparccoff.sc {GEN_DEPENDS}
-       {GENSCRIPTS} sparclynx
-emipslit.c \Option-f   "{srcdir}"emulparams:mipslit.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:mips.sc {GEN_DEPENDS}
-       {GENSCRIPTS} mipslit
-ei386bsd.c \Option-f  "{srcdir}"emulparams:i386bsd.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} i386bsd
-emipsbig.c \Option-f   "{srcdir}"emulparams:mipsbig.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:mips.sc {GEN_DEPENDS}
-       {GENSCRIPTS} mipsbig
-emipsbsd.c \Option-f  "{srcdir}"emulparams:mipsbsd.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:aout.sc {GEN_DEPENDS}
-       {GENSCRIPTS} mipsbsd
-emipsidt.c \Option-f  "{srcdir}"emulparams:mipsidt.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:mips.sc {GEN_DEPENDS}
-       {GENSCRIPTS} mipsidt
-emipsidtl.c \Option-f  "{srcdir}"emulparams:mipsidtl.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:mips.sc {GEN_DEPENDS}
-       {GENSCRIPTS} mipsidtl
-eelf_i386.c \Option-f  "{srcdir}"emulparams:elf_i386.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:elf.sc {GEN_DEPENDS}
-       {GENSCRIPTS} elf_i386
-eelf32mipb.c \Option-f  "{srcdir}"emulparams:elf32mipb.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:elf.sc {GEN_DEPENDS}
-       {GENSCRIPTS} elf32mipb
-ealpha.c \Option-f  "{srcdir}"emulparams:alpha.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:alpha.sc {GEN_DEPENDS}
-       {GENSCRIPTS} alpha
-ecoff_sparc.c \Option-f  "{srcdir}"emulparams:coff_sparc.sh \Option-d
-  "{srcdir}"emultempl:generic.em "{srcdir}"scripttempl:sparccoff.sc {GEN_DEPENDS}
-       {GENSCRIPTS} coff_sparc
-
-{LD_PROG} \Option-f  {OFILES} {BFDLIB} {LIBIBERTY} "{o}"Version.r
-       Rez -rd -o {LD_PROG} "{o}"Version.r -append
-       Link    {LDFLAGS} -o {LD_PROG} {OFILES} {BFDLIB} {LIBIBERTY} {EXTRALIBS}
-
-"{o}"Version.r \Option-f "{o}"version-stamp
-
-"{o}"version-stamp \Option-f Makefile
-       Delete -i -y "{o}"version.new "{o}"version-stamp
-       Set major `Search 'ld version ' {srcdir}ldver.c | sed -e 's/.*ld version [^0-9]*\([0-9]*\)\.\([0-9]*\)\..*/\1/'`
-       Set minor `Search 'ld version ' {srcdir}ldver.c | sed -e 's/.*ld version [^0-9]*\([0-9]*\)\.\([0-9]*\)\..*/\2/'`
-       Set release 0
-       Echo '/* Version resources. */'                  > "{o}"version.new
-       Echo '#include "SysTypes.r"'                    >> "{o}"version.new
-       Echo ''                                         >> "{o}"version.new
-       Echo "resource 'vers' (1) " `open-brace`        >> "{o}"version.new
-       Echo "  {major},"                               >> "{o}"version.new
-       Echo "  {minor},"                               >> "{o}"version.new
-       Echo "  {release},"                             >> "{o}"version.new
-       Echo '  0,'                                     >> "{o}"version.new
-       Echo '  verUs,'                                 >> "{o}"version.new
-       Echo '  "{version}",'                           >> "{o}"version.new
-       Echo '  "{version} (c) 1986-95 FSF, Inc. "'     >> "{o}"version.new
-       Echo '};'                                       >> "{o}"version.new
-       Echo ''                                         >> "{o}"version.new
-       Echo "resource 'vers' (2, purgeable) " `open-brace`  >> "{o}"version.new
-       Echo "  {major},"                               >> "{o}"version.new
-       Echo "  {minor},"                               >> "{o}"version.new
-       Echo "  {release},"                             >> "{o}"version.new
-       Echo '  0,'                                     >> "{o}"version.new
-       Echo '  verUs,'                                 >> "{o}"version.new
-       Echo '  "{version}",'                           >> "{o}"version.new
-       Echo '  "GNU LD for MPW"'                       >> "{o}"version.new
-       Echo '};'                                       >> "{o}"version.new
-       MoveIfChange "{o}"version.new "{o}"Version.r
-       Echo ' ' > "{o}"version-stamp
-
-# The generated emulation files mostly have the same dependencies.
-{EMULATION_OFILES} \Option-f  ::bfd:bfd.h ::bfd:sysdep.h "{INCDIR}":bfdlink.h \Option-d
-  "{s}"ld.h "{s}"ldmain.h "{s}"ldemul.h "{s}"ldfile.h "{s}"ldmisc.h "{s}"ldexp.h "{s}"ldlang.h "{s}"config.h "{s}"ldctor.h
-
-# These targets are for the dejagnu testsuites. The file site.exp 
-# contains global variables that all the testsuites will use.
-# There is a current debate as to how and where to generate test
-# outputs. Rob feels each test should be built in {objdir} with
-# a unique name. Cassidy feels that we should create a directory
-# called {objdir}:tmpdir and do the work there. This way, there
-# is no potential conflict with existing objects, ie \Option-f  as there
-# was in the past with "{o}"loop.c.o and "{o}"flow.c.o, and, there is no chance
-# of filling :tmp, which would cause other problems. Lastly, this 
-# allow retention of the testcase name making debugging easier.
-#
-testdir = {objdir}:tmpdir
-
-site.exp \Option-f  :config.status Makefile
-       @if [ -d {testdir} ]; then true; else mkdir {testdir}; fi
-       @echo "Making a new config file..."
-       @rm -f :tmp?
-       @touch site.exp
-       @mv site.exp site.bak
-       @echo "## variables are automatically generated by make ##" > :tmp0
-       @echo "# Do not edit here. If you wish to override these" >> :tmp0
-       @echo "# values, add them to the last section" >> :tmp0
-       @echo "# HOST AND TARGET INFO" >> :tmp0
-       @echo "set host_os {host_os}" >> :tmp0
-       @echo "set host_alias {host_alias}" >> :tmp0
-       @echo "set host_cpu {host_cpu}" >> :tmp0
-       @echo "set host_vendor {host_vendor}" >> :tmp0
-       @echo "set target_os {target_os}" >> :tmp0
-       @echo "set target_alias {target_alias}" >> :tmp0
-       @echo "set target_cpu {target_cpu}" >> :tmp0
-       @echo "set target_vendor {target_vendor}" >> :tmp0
-       @echo "set host_triplet {host_canonical}" >> :tmp0
-       @echo "set target_triplet {target_canonical}" >> :tmp0
-       @echo "# DIRECTORY INFO" >> :tmp0
-       @echo "set objdir `pwd`" >> :tmp0
-       @echo "set tmpdir `cd {testdir}; pwd`" >> :tmp0
-       @echo "" >> :tmp0       
-       @echo "# LD DEPENDANCIES" >> :tmp0      
-       @echo "set OFILES \"{OFILES}\"" >> :tmp0
-       @echo "set BFDLIB \"{BFDLIB}\"" >> :tmp0
-       @echo "set LIBIBERTY \"{LIBIBERTY}\"" >> :tmp0
-       @echo "set HOSTING_EMU \"{HOSTING_EMU}\"" >> :tmp0
-       @echo "set HOSTING_CRT0 \"{HOSTING_CRT0}\"" >> :tmp0
-       @echo "set HOSTING_LIBS \"{HOSTING_LIBS}\"" >> :tmp0
-       @echo "" >> :tmp0       
-       @echo "## Variables generated by configure. Do Not Edit ##" >> :tmp0
-       @cat :tmp0 > site.exp
-       @cat site.bak | sed \Option-d
-                       e '1,:^## Variables generated by.\Option-x##: d' >> site.exp
-       @rm -f :tmp?
-
-check \Option-f  ld.new site.exp
-       {RUNTEST} --tool ld \Option-d
-       -srcdir "{srcdir}"testsuite {RUNTEST_FLAGS} \Option-d
-       CC="{RUNTEST_CC}" CFLAGS="{RUNTEST_CFLAGS}" \Option-d
-       CXX="{RUNTEST_CXX}" CXXFLAGS="{RUNTEST_CXXFLAGS}"
-
-installcheck \Option-f 
-# .PHONY \Option-f  check installcheck
-
-# Rules for testing by relinking ld itself.
-
-"{o}"ld-partial.c.o \Option-f  ld.new
-       :ld.new {HOSTING_EMU} -o "{o}"ld-partial.c.o -r {OFILES}
-ld1 \Option-f  "{o}"ld-partial.c.o
-       :ld.new {HOSTING_EMU} -o ld1 {HOSTING_CRT0} "{o}"ld-partial.c.o {BFDLIB} {LIBIBERTY} {HOSTING_LIBS}
-
-ld1-full \Option-f  ld.new
-       :ld.new {HOSTING_EMU} -o ld1-full {HOSTING_CRT0} {OFILES} {BFDLIB} {LIBIBERTY} {HOSTING_LIBS}
-
-ld2 \Option-f  ld1
-       :ld1 {HOSTING_EMU} -o ld2 {HOSTING_CRT0} {OFILES} {BFDLIB} {LIBIBERTY} {HOSTING_LIBS}
-
-ld3 \Option-f  ld2
-       :ld2 {HOSTING_EMU} -o ld3 {HOSTING_CRT0} {OFILES} {BFDLIB} {LIBIBERTY} {HOSTING_LIBS}
-
-bootstrap \Option-f  ld3
-       cmp ld2 ld3
-
-# .PHONY \Option-f  bootstrap
-
-# A test program for C++ constructors and destructors.
-
-cdtest \Option-f  "{o}"cdtest-main.c.o "{o}"cdtest-func.c.o "{o}"cdtest-foo.c.o ld.new
-       :ld.new {HOSTING_EMU} -o cdtest {HOSTING_CRT0} \Option-d
-         "{o}"cdtest-main.c.o "{o}"cdtest-func.c.o "{o}"cdtest-foo.c.o {HOSTING_LIBS}
-
-check-cdtest \Option-f  cdtest "{srcdir}"cdtest.exp
-       :cdtest "{o}">cdtest.c.out
-       diff "{srcdir}"cdtest.exp "{o}"cdtest.c.out
-
-# .PHONY \Option-f  check-cdtest
-
-# END OF CHECK TARGETS
-
-# DOCUMENTATION TARGETS
-# Manual configuration file; not usually attached to normal configuration,
-# because almost all configs use "gen" version of manual.
-#  Set DOCVER above to change.
-configdoc.texi \Option-f       {DOCVER}-doc.texi
-       # ln -s "{srcdir}"{DOCVER}-doc.texi :configdoc.texi || \Option-d
-       # ln "{srcdir}"{DOCVER}-doc.texi :configdoc.texi || \Option-d
-       Duplicate -d -y "{srcdir}"{DOCVER}-doc.texi :configdoc.texi
-
-# TeX output
-dvi \Option-f  ld.dvi
-ld.dvi \Option-f  "{srcdir}"ld.texinfo "{srcdir}"configdoc.texi {BFDDIR}:doc:bfdsumm.texi
-       TEXINPUTS={BFDDIR}:doc \Option-f $$TEXINPUTS {TEXI2DVI} "{srcdir}"ld.texinfo
-
-ldint.dvi \Option-f  "{srcdir}"ldint.texinfo
-       {TEXI2DVI} "{srcdir}"ldint.texinfo
-
-# info file for online browsing
-ld.info \Option-f  "{srcdir}"ld.texinfo configdoc.texi {BFDDIR}:doc:bfdsumm.texi
-       {MAKEINFO} -i {BFDDIR}:doc -o ld.info "{srcdir}"ld.texinfo
-
-ldint.info \Option-f  "{srcdir}"ldint.texinfo
-       {MAKEINFO} -o ldint.info "{srcdir}"ldint.texinfo
-
-# .PHONY \Option-f  dvi
-
-#separate targets for "ms", "me", and "mm" forms of roff doc
-# Try to use a recent texi2roff.  v2 was put on prep in jan91.
-# If you want an index, see texi2roff doc for postprocessing 
-# and add -i to texi2roff invocations below.
-# Workarounds for texi2roff-2 (probably fixed in later texi2roff's, delete
-#    correspondint -e lines when later texi2roff's are current)
-# + @ifinfo's deleted explicitly due to texi2roff-2 bug w nested constructs.
-# + @c's deleted explicitly because texi2roff sees texinfo commands in them
-# + @   (that's at-BLANK) not recognized by texi2roff, turned into blank
-# + @alphaenumerate is ridiculously new, turned into @enumerate
-
-ld.ms \Option-f  "{srcdir}"ld.texinfo
-       sed -e ':\\input texinfo:d' \Option-d
-               e ':@c TEXI2ROFF-KILL:,:@c END TEXI2ROFF-KILL:d' \Option-d
-               e ':^end ifinfo:d' \Option-d
-               e ':^@c:d' \Option-d
-               e 's:{.\Option-x,,:{:' \Option-d
-               e 's:@ : :g' \Option-d
-               e 's:^enumerate:g' \Option-d
-               e 's:^@end alphaenumerate:@end enumerate:g' \Option-d
-               "{srcdir}"ld.texinfo | \Option-d
-       {TEXI2ROFF} {TEXI2OPT} -ms | \Option-d
-       sed -e 's:---:\\(em:g' \Option-d
-               >>ld.ms 
-
-# index for roff output
-ld-index.ms \Option-f  ld.ms
-       {ROFF} -ms ld.ms 2>&1 1>:dev:null | \Option-d
-               sed -e ': \Option-f  warning \Option-f :d' | \Option-d
-               texi2index >ld-index.ms
-
-# roff output (-mm)
-ld.mm \Option-f  "{srcdir}"ld.texinfo
-       sed -e ':\\input texinfo:d' \Option-d
-               e ':@c TEXI2ROFF-KILL:,:@c END TEXI2ROFF-KILL:d' \Option-d
-               e ':^end ifinfo:d' \Option-d
-               e ':^@c:d' \Option-d
-               e 's:{.\Option-x,,:{:' \Option-d
-               e ':@noindent:d' \Option-d
-               e 's:@ : :g' \Option-d
-               e 's:^enumerate:g' \Option-d
-               e 's:^@end alphaenumerate:@end enumerate:g' \Option-d
-               "{srcdir}"ld.texinfo | \Option-d
-       {TEXI2ROFF} {TEXI2OPT} -mm | \Option-d
-       sed -e 's:---:\\(em:g' \Option-d
-       >ld.mm 
-
-# index for roff output
-ld-index.mm \Option-f  ld.mm
-       {ROFF} -mm ld.mm 2>&1 1>:dev:null | \Option-d
-               sed -e ': \Option-f  warning \Option-f :d' | \Option-d
-               texi2index >ld-index.mm
-
-# roff output (-me)
-ld.me \Option-f  "{srcdir}"ld.texinfo
-       sed -e ':\\input texinfo:d' \Option-d
-               e ':@c TEXI2ROFF-KILL:,:@c END TEXI2ROFF-KILL:d' \Option-d
-               e ':^end ifinfo:d' \Option-d
-               e ':^@c:d' \Option-d
-               e 's:{.\Option-x,,:{:' \Option-d
-               e 's:@ : :g' \Option-d
-               e 's:^enumerate:g' \Option-d
-               e 's:^@end alphaenumerate:@end enumerate:g' \Option-d
-               "{srcdir}"ld.texinfo | \Option-d
-       {TEXI2ROFF} {TEXI2OPT} -me | \Option-d
-       sed -e 's:---:\\(em:g' \Option-d
-               >>ld.me 
-
-# index for roff output
-ld-index.me \Option-f  ld.me
-       {ROFF} -me ld.me 2>&1 1>:dev:null | \Option-d
-               sed -e ': \Option-f  warning \Option-f :d' | \Option-d
-               texi2index >ld-index.me
-
-stage1 \Option-f       force
-       mkdir stage1
-       Rename -y {STAGESTUFF} {LD_PROG} stage1
-       (cd stage1 ; ln -s {LD_PROG} ld)
-
-stage2 \Option-f       force
-       mkdir stage2
-       Rename -y {STAGESTUFF} {LD_PROG} stage2
-       (cd stage2 ; ln -s {LD_PROG} ld)
-
-stage3 \Option-f       force
-       mkdir stage3
-       Rename -y {STAGESTUFF} {LD_PROG} stage3
-       (cd stage3 ; ln -s {LD_PROG} ld)
-
-against = stage2
-
-comparison \Option-f  force
-       for i in {STAGESTUFF} {LD_PROG} ; do cmp $$i {against}:$$i ; done
-
-de-stage1 \Option-f  force
-       (cd stage1 ; mv -f \Option-x ..)
-       Delete -y ld
-       rmdir stage1
-
-de-stage2 \Option-f  force
-       (cd stage2 ; mv -f \Option-x ..)
-       Delete -y ld
-       rmdir stage2
-
-de-stage3 \Option-f  force
-       (cd stage3 ; mv -f \Option-x ..)
-       Delete -y ld
-       rmdir stage3
-
-# .PHONY \Option-f  stage1 stage2 stage3 comparison de-stage1 de-stage2 de-stage3
-
-# Stuff that should be included in a distribution \Option-f 
-LDDISTSTUFF = :ldgram.c :ldgram.h :ldlex.c
-diststuff \Option-f  {LDDISTSTUFF}
-
-mostlyclean \Option-f 
-       Delete -y {STAGESTUFF} ld.?? ld.??? ldlex.[qp]
-       Delete -y ld ld1 ld2 ld3 "{o}"\Option-x.c.o "{o}"y.c.output cdtest "{o}"cdtest.c.out
-clean \Option-f  mostlyclean
-       Delete -y {LD_PROG}
-distclean \Option-f 
-       Delete -yr Makefile config.status TAGS "{s}"sysdep.h ldscripts site.exp \Option-d
-               {STAGESTUFF} ld.?? ld.??s ld.toc ld.aux "{s}"ld.log ldlex.[qp] \Option-d
-               {LD_PROG} ld ld1 ld2 ld3 "{o}"\Option-x.c.o "{o}"y.c.output cdtest "{o}"cdtest.c.out
-realclean \Option-f  clean distclean
-       Delete -y {LDDISTSTUFF}
-
-# .PHONY \Option-f  diststuff mostlyclean clean distclean realclean
-
-
-
-TAGS \Option-f 
-       etags -t "{srcdir}"\Option-x.[chly] \Option-x.[chly]
-
-
-install \Option-f  all install-only
-
-install-only \Option-f
-       If "`Exists "{prefix}"`" == ""
-               Echo "{prefix}" does not exist, cannot install anything
-               Exit 1
-       End If
-       If "`Exists "{bindir}"`" == ""
-               NewFolder "{bindir}"
-       End If
-       Duplicate -y :ld.new "{bindir}"ld
-
-install-info \Option-f  
-       for i in ld.info\Option-x ; do \Option-d
-               {INSTALL_DATA} $$i {infodir}:$$i ; \Option-d
-       done
-
-clean-info \Option-f 
-       Delete -y -rf \Option-x.info\Option-x
-
-# .PHONY \Option-f  install install-info clean-info
-
-# Targets to rebuild dependencies in this Makefile.
-# Have to get rid of .dep1 here so that "$?" later includes all of {CFILES}.
-
-# Dummy target to force execution of dependent targets.
-#
-force \Option-f 
-
-# .PHONY \Option-f  force
-
-Makefile \Option-f  "{srcdir}"Makefile.in {host_makefile_frag} {target_makefile_frag}
-       {SHELL} :config.status
-
-# What appears below is generated by a hacked mkdep using gcc -MM.
-
-# DO NOT DELETE THIS LINE -- mkdep uses it.
-# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-
-"{o}"ldctor.c.o  \Option-f  "{s}"ldctor.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{INCDIR}":bfdlink.h "{s}"ld.h "{s}"ldexp.h "{s}"ldlang.h "{s}"ldmisc.h \Option-d
-  :ldgram.h "{s}"ldctor.h
-"{o}"ldemul.c.o  \Option-f  "{s}"ldemul.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{s}"config.h "{s}"ld.h "{s}"ldemul.h "{s}"ldmisc.h "{s}"ldfile.h "{s}"ldmain.h :ldemul-list.h
-"{o}"ldexp.c.o  \Option-f  "{s}"ldexp.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{INCDIR}":bfdlink.h "{s}"ld.h "{s}"ldmain.h "{s}"ldmisc.h "{s}"ldexp.h \Option-d
-  :ldgram.h "{s}"ldlang.h
-"{o}"ldfile.c.o  \Option-f  "{s}"ldfile.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{s}"ld.h "{s}"ldmisc.h "{s}"ldexp.h "{s}"ldlang.h "{s}"ldfile.h "{s}"ldmain.h "{s}"ldlex.h
-"{o}"ldlang.c.o  \Option-f  "{s}"ldlang.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{INCDIR}":bfdlink.h "{s}"ld.h "{s}"ldmain.h :ldgram.h "{s}"ldexp.h \Option-d
-  "{s}"ldlang.h "{s}"ldemul.h "{s}"ldlex.h "{s}"ldmisc.h "{s}"ldctor.h "{s}"ldfile.h
-"{o}"ldmain.c.o  \Option-f  "{s}"ldmain.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{INCDIR}":bfdlink.h "{s}"config.h "{s}"ld.h "{s}"ldmain.h "{s}"ldmisc.h \Option-d
-  "{s}"ldwrite.h :ldgram.h "{s}"ldexp.h "{s}"ldlang.h "{s}"ldemul.h "{s}"ldlex.h \Option-d
-  "{s}"ldfile.h "{s}"ldctor.h
-"{o}"ldmisc.c.o  \Option-f  "{s}"ldmisc.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{s}"ld.h "{s}"ldmisc.h "{s}"ldexp.h "{s}"ldlang.h "{s}"ldlex.h "{s}"ldmain.h "{s}"ldfile.h
-"{o}"ldver.c.o  \Option-f  "{s}"ldver.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{s}"ld.h "{s}"ldver.h "{s}"ldemul.h "{s}"ldmain.h
-"{o}"ldwrite.c.o  \Option-f  "{s}"ldwrite.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{INCDIR}":bfdlink.h "{s}"ld.h "{s}"ldexp.h "{s}"ldlang.h "{s}"ldwrite.h \Option-d
-  "{s}"ldmisc.h :ldgram.h "{s}"ldmain.h
-"{o}"lexsup.c.o  \Option-f  "{s}"lexsup.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{s}"ldlex.h "{s}"ld.h "{s}"ldexp.h :ldgram.h "{s}"ldmisc.h
-"{o}"mri.c.o  \Option-f  "{s}"mri.c ::bfd:bfd.h "{INCDIR}":ansidecl.h "{INCDIR}":obstack.h \Option-d
-  ::bfd:sysdep.h "{INCDIR}":fopen-same.h "{s}"ld.h "{s}"ldexp.h \Option-d
-  "{s}"ldlang.h "{s}"ldmisc.h "{s}"mri.h :ldgram.h
-"{o}"ldgram.c.o  \Option-f  :ldgram.c ::bfd:bfd.h "{INCDIR}":ansidecl.h \Option-d
-  "{INCDIR}":obstack.h ::bfd:sysdep.h "{INCDIR}":fopen-same.h \Option-d
-  "{INCDIR}":bfdlink.h "{s}"ld.h "{s}"ldexp.h "{s}"ldver.h "{s}"ldlang.h "{s}"ldemul.h \Option-d
-  "{s}"ldfile.h "{s}"ldmisc.h "{s}"ldmain.h "{s}"mri.h "{s}"ldlex.h
-"{o}"ldlex.c.o  \Option-f  :ldlex.c ::bfd:bfd.h "{INCDIR}":obstack.h \Option-d
-  "{s}"ld.h :ldgram.h "{s}"ldmisc.h "{s}"ldexp.h "{s}"ldlang.h "{s}"ldfile.h "{s}"ldlex.h
-
-# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/ld/mpw-make.sed b/ld/mpw-make.sed
new file mode 100644 (file)
index 0000000..f672da0
--- /dev/null
@@ -0,0 +1,74 @@
+# Sed commands to finish translating the ld Makefile.in into MPW syntax.
+
+/HDEFINES/s/@HDEFINES@//
+
+/^target_alias = @target_alias@/s/^/#/
+
+/^EMUL = @EMUL@/s/^/#/
+
+/^EMULATION_OFILES = @EMULATION_OFILES@/s/^/#/
+
+# Fixadd to the include paths.
+/^INCLUDES = .*$/s/$/ -i "{INCDIR}":mpw: -i ::extra-include:/
+/BFDDIR/s/-i {BFDDIR} /-i "{BFDDIR}": /
+/INCDIR/s/-i {INCDIR} /-i "{INCDIR}": /
+
+# Use byacc instead of bison (for now anyway).
+/BISON/s/^BISON =.*$/BISON = byacc/
+#/BISONFLAGS/s/^BISONFLAGS =.*$/BISONFLAGS = /
+
+# Suppress the suppression of smart makes.
+/^\.y\.c/d
+
+# Hack up ldmain compile.
+/^"{o}"ldmain.c.o \\Option-f .* config.status$/,/^$/c\
+"{o}"ldmain.c.o \\Option-f  "{s}"ldmain.c\
+       {CC} -d DEFAULT_EMULATION='"'{EMUL}'"' -d SCRIPTDIR='"'{scriptdir}'"' {ALL_CFLAGS} "{s}"ldmain.c -o "{o}"ldmain.c.o\
+
+
+# Remove ldemul-list.h build, rely on configure to make one.
+/^ldemul-list.h /,/Rename -y "{s}"ldemul-tmp.h /d
+
+# Fix pathnames to generated files.
+/config.h/s/"{s}"config\.h/"{o}"config.h/g
+/config.h/s/^config\.h/"{o}"config.h/
+
+/y.tab.c/s/"{s}"y\.tab\.c/"{o}"y.tab.c/g
+/y.tab.c/s/^y\.tab\.c/"{o}"y.tab.c/
+/y.tab.h/s/"{s}"y\.tab\.h/"{o}"y.tab.h/g
+/y.tab.h/s/^y\.tab\.h/"{o}"y.tab.h/
+
+/ldgram.c/s/"{s}"ldgram\.c/"{o}"ldgram.c/g
+/ldgram.c/s/^ldgram\.c/"{o}"ldgram.c/
+
+/ldgram.h/s/"{s}"ldgram\.h/"{o}"ldgram.h/g
+/ldgram.h/s/^ldgram\.h/"{o}"ldgram.h/
+
+/ldlex.c/s/"{s}"ldlex\.c/"{o}"ldlex.c/g
+/ldlex.c/s/^ldlex\.c/"{o}"ldlex.c/
+
+/ldlex.c.new/s/"{s}"ldlex\.c\.new/"{o}"ldlex.c.new/g
+
+/lex.yy.c/s/"{s}"lex\.yy\.c/"{o}"lex.yy.c/g
+
+/ldemul-list.h/s/"{s}"ldemul-list\.h/"{o}"ldemul-list.h/g
+/ldemul-list.h/s/^ldemul-list\.h/"{o}"ldemul-list.h/
+
+/"{s}"e.*\.c/s/"{s}"e\([-_a-z0-9]*\)\.c/"{o}"e\1.c/g
+/^e.*\.c/s/^e\([-_a-z0-9]*\)\.c/"{o}"e\1.c/
+
+#/sed.*free/,/> "{o}"ldlex.c.new/c\
+#      \       Catenate "{o}"lex.yy.c >"{o}"ldlex.c.new
+
+# The resource file is called mac-ld.r.
+/{LD_PROG}.r/s/{LD_PROG}\.r/mac-ld.r/
+
+# Remove dependency rebuilding crud.
+/^.dep /,/# .PHONY /d
+
+# Remove the lintlog action, pipe symbols in column 1 lose.
+/^lintlog \\Option-f/,/^$/d
+
+/^Makefile \\Option-f/,/^$/d
+/^"{o}"config.h \\Option-f/,/^$/d
+/^config.status \\Option-f/,/^$/d