diff src/unexec.c @ 96732:1e0b67e40d48

* systty.h: Remove code for Aix on 386, unsupported platform. * s/ms-w32.h: Remove boilerplate comments. (fcloseall, fgetchar, flushall, fputchar, getw, putw): Remove, unused. * s/gnu-linux.h (TERM): Remove support. (HAVE_SYSVIPC): Remove, unused. (A_TEXT_OFFSET, A_TEXT_SEEK, ADJUST_EXEC_HEADER): Remove, not used for this system. * process.c: Remove support for IRIS, unused. Remove support for TERM, not relevant anymore. * unexalpha.c (DEFAULT_ENTRY_ADDRESS): Remove, replace the only used with the definition. * s/aix4-2.h (static): Do not undef. * m/ibmrs6000.h: Remove code depending on USG5_4, this file is only used on Aix. (HAVE_SYSVIPC): Remove, unused. * m/hp800.h (CANNOT_DUMP): Do not undef. * m/alpha.h: Fix comment. * s/usg5-4.h (HAVE_SYSVIPC): Remove, unused. (USG_SHARED_LIBRARIES): Remove, only used in unexec.c which is not used by this configuration. * emacs.c: Remove code depending on USG_SHARED_LIBRARIES. * unexec.c: Remove code depending on HPUX and USG_SHARED_LIBRARIES, not used with this file. Remove code depending on IRIS, unused. Remove if 0-ed code.
author Dan Nicolaescu <dann@ics.uci.edu>
date Wed, 16 Jul 2008 08:06:18 +0000
parents 31cae2dacc05
children baf6162e41d4
line wrap: on
line diff
--- a/src/unexec.c	Wed Jul 16 07:55:50 2008 +0000
+++ b/src/unexec.c	Wed Jul 16 08:06:18 2008 +0000
@@ -229,41 +229,11 @@
 
 #else /* not COFF */
 
-#ifdef HPUX
-extern void *sbrk ();
-#else
-#if 0
-/* Some systems with __STDC__ compilers still declare this `char *' in some
-   header file, and our declaration conflicts.  The return value is always
-   cast, so it should be harmless to leave it undefined.  Hopefully
-   machines with different size pointers and ints declare sbrk in a header
-   file.  */
-#ifdef __STDC__
-extern void *sbrk ();
-#else
 extern char *sbrk ();
-#endif /* __STDC__ */
-#endif
-#endif /* HPUX */
 
 #define SYMS_START ((long) N_SYMOFF (ohdr))
 
-#ifdef HPUX
-#ifdef HP9000S200_ID
-#define MY_ID HP9000S200_ID
-#else
-#include <model.h>
-#define MY_ID MYSYS
-#endif /* no HP9000S200_ID */
-static MAGIC OLDMAGIC = {MY_ID, SHARE_MAGIC};
-static MAGIC NEWMAGIC = {MY_ID, DEMAND_MAGIC};
-#define N_TXTOFF(x) TEXT_OFFSET(x)
-#define N_SYMOFF(x) LESYM_OFFSET(x)
-static struct exec hdr, ohdr;
-
-#else /* not HPUX */
-
-#if defined (USG) && !defined (IRIS) && !defined (GNU_LINUX)
+#if defined (USG)
 static struct bhdr hdr, ohdr;
 #define a_magic fmagic
 #define a_text tsize
@@ -277,11 +247,10 @@
     (((x).fmagic)!=OMAGIC && ((x).fmagic)!=NMAGIC &&\
      ((x).fmagic)!=FMAGIC && ((x).fmagic)!=IMAGIC)
 #define NEWMAGIC FMAGIC
-#else /* IRIS or not USG */
+#else /* not USG */
 static struct exec hdr, ohdr;
 #define NEWMAGIC ZMAGIC
-#endif /* IRIS or not USG */
-#endif /* not HPUX */
+#endif /* not USG */
 
 static int unexec_text_start;
 static int unexec_data_start;
@@ -358,11 +327,7 @@
   auto struct scnhdr scntemp;		/* Temporary section header */
   register int scns;
 #endif /* COFF */
-#ifdef USG_SHARED_LIBRARIES
-  extern unsigned int bss_end;
-#else
   unsigned int bss_end;
-#endif
 
   pagemask = getpagesize () - 1;
 
@@ -479,17 +444,6 @@
   /* Now we alter the contents of all the f_*hdr variables
      to correspond to what we want to dump.  */
 
-#ifdef USG_SHARED_LIBRARIES
-
-  /* The amount of data we're adding to the file is distance from the
-   * end of the original .data space to the current end of the .data
-   * space.
-   */
-
-  bias = bss_start - (f_ohdr.data_start + f_dhdr.s_size);
-
-#endif
-
   f_hdr.f_flags |= (F_RELFLG | F_EXEC);
 #ifndef NO_REMAP
   f_ohdr.text_start = (long) start_of_text ();
@@ -532,9 +486,7 @@
   f_bhdr.s_vaddr = f_ohdr.data_start + f_ohdr.dsize;
   f_bhdr.s_size = f_ohdr.bsize;
   f_bhdr.s_scnptr = 0L;
-#ifndef USG_SHARED_LIBRARIES
   bias = f_dhdr.s_scnptr + f_dhdr.s_size - block_copy_start;
-#endif
 
   if (f_hdr.f_symptr > 0L)
     {
@@ -560,8 +512,6 @@
       PERROR (new_name);
     }
 
-#ifndef USG_SHARED_LIBRARIES
-
   if (write (new, &f_thdr, sizeof (f_thdr)) != sizeof (f_thdr))
     {
       PERROR (new_name);
@@ -577,55 +527,6 @@
       PERROR (new_name);
     }
 
-#else /* USG_SHARED_LIBRARIES */
-
-  /* The purpose of this code is to write out the new file's section
-   * header table.
-   *
-   * Scan through the original file's sections.  If the encountered
-   * section is one we know (.text, .data or .bss), write out the
-   * correct header.  If it is a section we do not know (such as
-   * .lib), adjust the address of where the section data is in the
-   * file, and write out the header.
-   *
-   * If any section precedes .text or .data in the file, this code
-   * will not adjust the file pointer for that section correctly.
-   */
-
-  /* This used to use sizeof (f_ohdr) instead of .f_opthdr.
-     .f_opthdr is said to be right when there is no optional header.  */
-  lseek (a_out, sizeof (f_hdr) + f_hdr.f_opthdr, 0);
-
-  for (scns = f_hdr.f_nscns; scns > 0; scns--)
-    {
-      if (read (a_out, &scntemp, sizeof (scntemp)) != sizeof (scntemp))
-	PERROR (a_name);
-
-      if (!strcmp (scntemp.s_name, f_thdr.s_name))	/* .text */
-	{
-	  if (write (new, &f_thdr, sizeof (f_thdr)) != sizeof (f_thdr))
-	    PERROR (new_name);
-	}
-      else if (!strcmp (scntemp.s_name, f_dhdr.s_name))	/* .data */
-	{
-	  if (write (new, &f_dhdr, sizeof (f_dhdr)) != sizeof (f_dhdr))
-	    PERROR (new_name);
-	}
-      else if (!strcmp (scntemp.s_name, f_bhdr.s_name))	/* .bss */
-	{
-	  if (write (new, &f_bhdr, sizeof (f_bhdr)) != sizeof (f_bhdr))
-	    PERROR (new_name);
-	}
-      else
-	{
-	  if (scntemp.s_scnptr)
-	    scntemp.s_scnptr += bias;
-	  if (write (new, &scntemp, sizeof (scntemp)) != sizeof (scntemp))
-	    PERROR (new_name);
-	}
-    }
-#endif /* USG_SHARED_LIBRARIES */
-
   return (0);
 
 #else /* if not COFF */
@@ -684,11 +585,6 @@
       PERROR (new_name);
     }
 
-#if 0 /* This #ifndef caused a bug on GNU/Linux when using QMAGIC.  */
-  /* This adjustment was done above only #ifndef NO_REMAP,
-     so only undo it now #ifndef NO_REMAP.  */
-  /* #ifndef NO_REMAP  */
-#endif
 #ifdef A_TEXT_OFFSET
   hdr.a_text -= A_TEXT_OFFSET (ohdr);
 #endif
@@ -767,63 +663,6 @@
 
 #ifdef COFF
 
-#ifdef USG_SHARED_LIBRARIES
-
-  int scns;
-  struct scnhdr scntemp;		/* Temporary section header */
-
-  /* The purpose of this code is to write out the new file's section
-   * contents.
-   *
-   * Step through the section table.  If we know the section (.text,
-   * .data) do the appropriate thing.  Otherwise, if the section has
-   * no allocated space in the file (.bss), do nothing.  Otherwise,
-   * the section has space allocated in the file, and is not a section
-   * we know.  So just copy it.
-   */
-
-  lseek (a_out, sizeof (struct filehdr) + sizeof (struct aouthdr), 0);
-
-  for (scns = f_hdr.f_nscns; scns > 0; scns--)
-    {
-      if (read (a_out, &scntemp, sizeof (scntemp)) != sizeof (scntemp))
-	PERROR ("temacs");
-
-      if (!strcmp (scntemp.s_name, ".text"))
-	{
-	  lseek (new, (long) text_scnptr, 0);
-	  ptr = (char *) f_ohdr.text_start;
-	  end = ptr + f_ohdr.tsize;
-	  write_segment (new, ptr, end);
-	}
-      else if (!strcmp (scntemp.s_name, ".data"))
-	{
-	  lseek (new, (long) data_scnptr, 0);
-	  ptr = (char *) f_ohdr.data_start;
-	  end = ptr + f_ohdr.dsize;
-	  write_segment (new, ptr, end);
-	}
-      else if (!scntemp.s_scnptr)
-	; /* do nothing - no data for this section */
-      else
-	{
-	  char page[BUFSIZ];
-	  int size, n;
-	  long old_a_out_ptr = lseek (a_out, 0, 1);
-
-	  lseek (a_out, scntemp.s_scnptr, 0);
-	  for (size = scntemp.s_size; size > 0; size -= sizeof (page))
-	    {
-	      n = size > sizeof (page) ? sizeof (page) : size;
-	      if (read (a_out, page, n) != n || write (new, page, n) != n)
-		PERROR ("emacs");
-	    }
-	  lseek (a_out, old_a_out_ptr, 0);
-	}
-    }
-
-#else /* COFF, but not USG_SHARED_LIBRARIES */
-
 #ifdef MSDOS
 #if __DJGPP__ >= 2
   /* Dump the original table of exception handlers, not the one
@@ -857,8 +696,6 @@
 #endif
 #endif
 
-#endif /* USG_SHARED_LIBRARIES */
-
 #else /* if not COFF */
 
 /* Some machines count the header as part of the text segment.