* mpw-config.in: Recognize mips-*-* as equivalent to
authorStan Shebs <shebs@codesourcery.com>
Tue, 12 Dec 1995 22:35:48 +0000 (22:35 +0000)
committerStan Shebs <shebs@codesourcery.com>
Tue, 12 Dec 1995 22:35:48 +0000 (22:35 +0000)
mips-idt-ecoff.
* mpw-eppcmac.c: Shortened from mpw-eppcmacos.c.
* mpw-ld.r: Add version resources.
(cfrg): Use symbolic instead of literal name for executable.

ld/ChangeLog
ld/mac-ld.r
ld/mpw-config.in
ld/mpw-eppcmac.c [moved from ld/mpw-eppcmacos.c with 98% similarity]

index 10912da..89d3e1d 100644 (file)
@@ -1,3 +1,11 @@
+Tue Dec 12 13:55:41 1995  Stan Shebs  <shebs@andros.cygnus.com>
+
+       * mpw-config.in: Recognize mips-*-* as equivalent to
+       mips-idt-ecoff.
+       * mpw-eppcmacos.c: Rename to shorter mpw-eppcmac.c.
+       * mpw-ld.r: Add version resources.
+       (cfrg): Use symbolic instead of literal name for executable.
+
 Mon Dec 11 15:13:41 1995  Kim Knuttila  <krk@cygnus.com>
 
        * scripttempl/ppcpe.sc (FINI): Moved the .reloc section.
index 8500a80..b316fc5 100644 (file)
@@ -1,3 +1,29 @@
+/* Resources for GNU LD. */
+
+#include "SysTypes.r"
+
+/* Version resources. */
+
+resource 'vers' (1)  {
+       0,
+       0,
+       0,
+       0,
+       verUs,
+       VERSION_STRING,
+       VERSION_STRING  " (C) 1986-95 FSF, Inc."
+};
+
+resource 'vers' (2, purgeable)  {
+       0,
+       0,
+       0,
+       0,
+       verUs,
+       VERSION_STRING,
+       "GLD " VERSION_STRING " for MPW"
+};
+
 #ifdef WANT_CFRG
 
 #include "CodeFragmentTypes.r"
@@ -9,7 +35,7 @@ resource 'cfrg' (0) {
                kNoVersionNum, kNoVersionNum,
                0, 0,
                kIsApp, kOnDiskFlat, kZeroOffset, kWholeFork,
-               "ld"
+               PROG_NAME
        }
 };
 
index 45fc41f..ff45f96 100644 (file)
@@ -4,18 +4,22 @@ 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}" =~ /powerpc-apple-macos/
        Set emulname ppcmacos
-       forward-include "{srcdir}"mpw-eppcmacos.c eppcmacos.c
+       forward-include "{srcdir}"mpw-eppcmac.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
        Set emulation_ofiles "{o}"ei386go32.c.o
-Else If "{target_canonical}" =~ /mips-idt-ecoff/
+
+Else If "{target_canonical}" =~ /mips-\Option-x-\Option-x/
        Set emulname mipsidt
        forward-include "{srcdir}"mpw-emipsidt.c emipsidt.c
        Set emulation_ofiles "{o}"emipsidt.c.o
+
 Else If "{target_canonical}" =~ /sh-hitachi-hms/
        Set emulname sh
        forward-include "{srcdir}"mpw-esh.c esh.c
similarity index 98%
rename from ld/mpw-eppcmacos.c
rename to ld/mpw-eppcmac.c
index 0febbe3..b25b371 100644 (file)
@@ -72,6 +72,9 @@ static unsigned short modtype = ('1' << 8) | 'L';
    permitted).  */
 static int textro;
 
+/* Whether to implement Unix like linker semantics.  */
+static int unix_ld;
+
 /* Structure used to hold import file list.  */
 
 struct filelist
@@ -134,6 +137,7 @@ gldppcmacos_parse_args (argc, argv)
 #define OPTION_PD (OPTION_NOSTRCMPCT + 1)
 #define OPTION_PT (OPTION_PD + 1)
 #define OPTION_STRCMPCT (OPTION_PT + 1)
+#define OPTION_UNIX (OPTION_STRCMPCT + 1)
 
   static struct option longopts[] = {
     {"basis", no_argument, NULL, OPTION_IGNORE},
@@ -174,6 +178,7 @@ gldppcmacos_parse_args (argc, argv)
     {"bstrcmpct", no_argument, NULL, OPTION_STRCMPCT},
     {"btextro", no_argument, &textro, 1},
     {"static", no_argument, NULL, OPTION_NOAUTOIMP},
+    {"unix", no_argument, NULL, OPTION_UNIX},
     {NULL, no_argument, NULL, 0}
   };
 
@@ -381,6 +386,10 @@ gldppcmacos_parse_args (argc, argv)
     case OPTION_STRCMPCT:
       config.traditional_format = false;
       break;
+
+    case OPTION_UNIX:
+      unix_ld = true;
+      break;
     }
 
   return 1;
@@ -437,6 +446,7 @@ gldppcmacos_before_allocation ()
   struct filelist *fl;
   struct export_symbol_list *el;
   char *libpath;
+  boolean export_defineds;
   asection *special_sections[6];
   int i;
 
@@ -487,13 +497,20 @@ gldppcmacos_before_allocation ()
        }
     }
 
+  /* If we are emulating the Unix linker, we want to export all
+     defined symbols, unless an explicit -bE option was used.  */
+  export_defineds = false;
+  if (unix_ld && export_symbols == NULL)
+    export_defineds = true;
+
   /* 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,
+                                        gc && ! unix_ld ? true : false,
                                         modtype,
                                         textro ? true : false,
+                                        export_defineds,
                                         special_sections))
     einfo ("%P%F: failed to set dynamic section sizes: %E\n");