From: Stan Shebs Date: Fri, 27 Oct 1995 05:28:17 +0000 (+0000) Subject: * mpw-config.in: Add PowerMac target support, generate config.h. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=49af8a4ec7402f8eaa5677f47a9823cc4e225c59;p=binutils-gdb.git * 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. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index 6827fbadf26..33948149862 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +Thu Oct 26 22:22:49 1995 Stan Shebs + + * 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 * 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 index 00000000000..8500a8057f2 --- /dev/null +++ b/ld/mac-ld.r @@ -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 */ diff --git a/ld/mpw-config.in b/ld/mpw-config.in index 928e903aa20..45fc41f3d99 100644 --- a/ld/mpw-config.in +++ b/ld/mpw-config.in @@ -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 index 00000000000..9bc98127368 --- /dev/null +++ b/ld/mpw-eppcmacos.c @@ -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 + AIX support by Ian Lance Taylor + +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 + +#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 index cb325e343c5..00000000000 --- a/ld/mpw-make.in +++ /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 index 00000000000..f672da09870 --- /dev/null +++ b/ld/mpw-make.sed @@ -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