diff --git a/ld/ChangeLog b/ld/ChangeLog index 10912da681..89d3e1d5dd 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +Tue Dec 12 13:55:41 1995 Stan Shebs + + * 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 * scripttempl/ppcpe.sc (FINI): Moved the .reloc section. diff --git a/ld/mac-ld.r b/ld/mac-ld.r index 8500a8057f..b316fc5f19 100644 --- a/ld/mac-ld.r +++ b/ld/mac-ld.r @@ -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 } }; diff --git a/ld/mpw-config.in b/ld/mpw-config.in index 45fc41f3d9..ff45f96935 100644 --- a/ld/mpw-config.in +++ b/ld/mpw-config.in @@ -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 diff --git a/ld/mpw-eppcmacos.c b/ld/mpw-eppcmac.c similarity index 98% rename from ld/mpw-eppcmacos.c rename to ld/mpw-eppcmac.c index 0febbe33db..b25b371fe7 100644 --- a/ld/mpw-eppcmacos.c +++ b/ld/mpw-eppcmac.c @@ -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");