* configure.host (sparc-*-sunos64*): Remove.
authorIan Lance Taylor <ian@airs.com>
Thu, 7 Sep 1995 14:52:12 +0000 (14:52 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 7 Sep 1995 14:52:12 +0000 (14:52 +0000)
* ldlang.c (lang_map): Check BFD64, not HOST_64_BIT.

ld/ChangeLog
ld/configure.host [new file with mode: 0644]
ld/ldlang.c

index 16ceb65b6f8b309342e17a6f629d84aa0b722b92..217764278bd45f6b1c127c8fe0d4f201d1ee1321 100644 (file)
@@ -1,5 +1,8 @@
 Thu Sep  7 10:48:26 1995  Ian Lance Taylor  <ian@cygnus.com>
 
+       * configure.host (sparc-*-sunos64*): Remove.
+       * ldlang.c (lang_map): Check BFD64, not HOST_64_BIT.
+
        * ldexp.c (exp_fold_tree): Don't warn about moving the location
        counter backward in the absolute section.
 
diff --git a/ld/configure.host b/ld/configure.host
new file mode 100644 (file)
index 0000000..e16209d
--- /dev/null
@@ -0,0 +1,103 @@
+# This is the linker host specific file.  This is invoked by the
+# autoconf generated configure script.  Putting it in a separate shell
+# file lets us skip running autoconf when modifying host specific
+# information.
+
+# This file sets the following shell variables:
+#  CC                  compiler to use (only if needed and not already set)
+#  HDEFINES            host specific compiler flags
+#  HOSTING_CRT0                crt0.o file used for bootstrapping
+#  HOSTING_LIBS                libraries used for bootstrapping
+#  NATIVE_LIB_DIRS     library directories to search on this host
+
+HDEFINES=
+HOSTING_CRT0=/lib/crt0.o
+HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc'
+NATIVE_LIB_DIRS=
+
+case "${host}" in
+
+alpha-*-*)
+  HOSTING_CRT0=/usr/ccs/lib/crt0.o
+  NATIVE_LIB_DIRS=/usr/ccs/lib
+  ;;
+
+i[345]86-*-bsd* | i[345]86-*-freebsd* | i[345]86-*-netbsd*)
+  # The new BSD `make' has a bug: it doesn't pass empty arguments in
+  # shell commands.  So we need to make this value non-empty in order
+  # for the genscripts.sh call to work.  There's nothing magic about
+  # the value `/lib'; it's just a dummy.
+  NATIVE_LIB_DIRS = /lib
+  ;;
+
+i[345]86-*-go32*)
+  test -z "${CC}" && CC="i386-go32-gcc -O2 -fno-omit-frame-pointer -Wl,-S"
+  ;;
+
+i[345]86-*-sysv4*)
+  HOSTING_CRT0='/usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xa.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtbegin.o/'; fi`'
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi`  -lc `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtend.o/'; fi` /usr/ccs/lib/crtn.o'
+  NATIVE_LIB_DIRS=/usr/ccs/lib
+  ;;
+
+i[345]86-*-sysv*)
+  HOSTING_CRT0='/lib/crt1.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; fi`'
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi`  -lc `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; fi` /lib/crtn.o'
+  ;;
+
+i[345]86-*-solaris*)
+  HOSTING_CRT0='`if [ -f ../gcc/crt1.o ]; then echo ../gcc/crt1.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crt1.o/'; fi` `if [ -f ../gcc/crti.o ]; then echo ../gcc/crti.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crti.o/'; fi` /usr/ccs/lib/values-Xa.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtbegin.o/'; fi`'
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi`  -lc `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtend.o/'; fi` `if [ -f ../gcc/crtn.o ]; then echo ../gcc/crtn.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtn.o/'; fi`'
+  NATIVE_LIB_DIRS=/usr/ccs/lib
+  ;;
+
+i[345]86-*-sco* | i[345]86-*-isc*)
+  HOSTING_CRT0='/lib/crt1.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtbegin.o/'; fi`'
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtend.o/'; fi` /lib/crtn.o'
+  ;;
+
+i[345]86-*-linux*)
+  HOSTING_CRT0=/usr/lib/crt0.o
+  ;;
+
+i[345]86-*-lynxos*)
+  HOSTING_CRT0=/lib/init1.o
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc -lm /lib/initn.o'
+  ;;
+
+mips-dec-bsd*)
+  HOSTING_CRT0=/usr/lib/crt0.o
+  ;;
+
+mips-sgi-irix4*)
+  HOSTING_CRT0=/usr/lib/crt1.o
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc /usr/lib/crtn.o'
+  ;;
+
+m68*-*-lynxos*)
+  HOSTING_CRT0=/lib/init1.o
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi` -lc -lm /lib/initn.o'
+  ;;
+
+m68*-sun-*)
+  HOSTING_CRT0='/usr/lib/crt0.o /usr/lib/Fcrt1.o -L/usr/lib/fsoft.o'
+  ;;
+
+m88*-*-dgux*)
+  HDEFINES = -D__using_DGUX
+  HOSTING_CRT0=/lib/crt0.o -X
+  HOSTING_LIBS=/usr/sde/m88kbcs/lib/libc.a
+  ;;
+
+romp-*-*)
+  HDEFINES=-DNO_VARARGS
+  CC=${CC-gcc}
+  ;;
+
+sparc-*-solaris2*)
+  HOSTING_CRT0='`if [ -f ../gcc/crt1.o ]; then echo ../gcc/crt1.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crt1.o/'; fi` `if [ -f ../gcc/crti.o ]; then echo ../gcc/crti.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crti.o/'; fi` /usr/ccs/lib/values-Xa.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtbegin.o/'; fi`'
+  HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else gcc -print-libgcc-file-name; fi`  -lc `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtend.o/'; fi` `if [ -f ../gcc/crtn.o ]; then echo ../gcc/crtn.o; else gcc -print-libgcc-file-name | sed -e 's/libgcc.a/crtn.o/'; fi`'
+  NATIVE_LIB_DIRS=/usr/ccs/lib
+  ;;
+
+esac
index aaf4e84c952e5ea97c1212decc103e65552021db..212c9b60f55bb4b1b16a50a4551748f97249bc4e 100644 (file)
@@ -440,14 +440,23 @@ lang_memory_region_lookup (name)
          return p;
        }
     }
+
+#if 0
+  /* This code used to always use the first region in the list as the
+     default region.  I changed it to instead use a region
+     encompassing all of memory as the default region.  This permits
+     NOLOAD sections to work reasonably without requiring a region.
+     People should specify what region they mean, if they really want
+     a region.  */
   if (strcmp (name, "*default*") == 0)
     {
-      /* This is the default region, dig out first one on the list */
       if (lang_memory_region_list != (lang_memory_region_type *) NULL)
        {
          return lang_memory_region_list;
        }
     }
+#endif
+
   {
     lang_memory_region_type *new =
     (lang_memory_region_type *) stat_alloc (sizeof (lang_memory_region_type));
@@ -549,7 +558,7 @@ lang_map ()
   lang_memory_region_type *m;
 
   fprintf (config.map_file, "**MEMORY CONFIGURATION**\n\n");
-#ifdef HOST_64_BIT
+#ifdef BFD64
   fprintf (config.map_file, "name\t\torigin\t\tlength\t\tattributes\n");
 #else
   fprintf (config.map_file,
@@ -604,7 +613,6 @@ init_os (s)
             output_bfd->xvec->name, s->name);
     }
   s->bfd_section->output_section = s->bfd_section;
-/*  s->bfd_section->flags = s->flags;*/
 
   /* We initialize an output sections output offset to minus its own */
   /* vma to allow us to output a section through itself */
@@ -1874,7 +1882,12 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
        }
        dot += size;
        output_section_statement->bfd_section->_raw_size += size;
+       /* The output section gets contents, and then we inspect for
+         any flags set in the input script which override any ALLOC */
        output_section_statement->bfd_section->flags |= SEC_HAS_CONTENTS;
+       if (!(output_section_statement->flags & SEC_NEVER_LOAD)) {
+        output_section_statement->bfd_section->flags |= SEC_ALLOC | SEC_LOAD;
+       }
      }
       break;