]> git.eshelyaron.com Git - emacs.git/commitdiff
Remove unused arguments for unexec.
authorDan Nicolaescu <dann@ics.uci.edu>
Sun, 3 Oct 2010 13:59:56 +0000 (06:59 -0700)
committerDan Nicolaescu <dann@ics.uci.edu>
Sun, 3 Oct 2010 13:59:56 +0000 (06:59 -0700)
The third one is never used, and the last two are always passed as zero.
* src/emacs.c (unexec): Add declaration.
(Fdump_emacs): Only pass the first two arguments to unexec.
Simplify #ifdef.
* src/unexw32.c (unexec):
* src/unexsol.c (unexec):
* src/unexhp9k800.c (unexec):
* src/unexcw.c (unexec): Remove the last 3 arguments, unused.
* src/unexelf.c (unexec): Remove the last 3 arguments, unused.
(find_section): Use const.
* src/unexmacosx.c (unexec): Remove the last 3 arguments, unused.
(unexec_error): Declare it NO_RETURN.
* src/unexcoff.c (make_hdr): Assume bss_start is always zero, remove
it as an argument, remove data_start and entry_address arguments, unused.
(unexec): Remove bss_start, data_start and
entry_address arguments.
* src/unexaix.c (make_hdr): Assume bss_start is always zero, remove
it as an argument, remove data_start and entry_address arguments, unused.
(unexec): Remove bss_start, data_start and
entry_address arguments.

src/ChangeLog
src/emacs.c
src/unexaix.c
src/unexcoff.c
src/unexcw.c
src/unexelf.c
src/unexhp9k800.c
src/unexmacosx.c
src/unexsol.c
src/unexw32.c

index 70ed07cb24e742effcbd79de83af812fd908b068..2e1864b270eedfc0142c44522c8ae66d1b55ee5e 100644 (file)
@@ -1,3 +1,27 @@
+2010-10-03  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       Remove unused arguments for unexec.
+       The third one is never used, and the last two are always passed as zero.
+       * emacs.c (unexec): Add declaration.
+       (Fdump_emacs): Only pass the first two arguments to unexec.
+       Simplify #ifdef.
+       * unexw32.c (unexec):
+       * unexsol.c (unexec):
+       * unexhp9k800.c (unexec):
+       * unexcw.c (unexec): Remove the last 3 arguments, unused.
+       * unexelf.c (unexec): Remove the last 3 arguments, unused.
+       (find_section): Use const.
+       * unexmacosx.c (unexec): Remove the last 3 arguments, unused.
+       (unexec_error): Declare it NO_RETURN.
+       * unexcoff.c (make_hdr): Assume bss_start is always zero, remove
+       it as an argument, remove data_start and entry_address arguments, unused.
+       (unexec): Remove bss_start, data_start and
+       entry_address arguments.
+       * unexaix.c (make_hdr): Assume bss_start is always zero, remove
+       it as an argument, remove data_start and entry_address arguments, unused.
+       (unexec): Remove bss_start, data_start and
+       entry_address arguments.
+
 2010-10-03  Juanma Barranquero  <lekktu@gmail.com>
 
        * makefile.w32-in (TAGS, TAGS-LISP, TAGS-gmake): Add $(FONTOBJ).
index 41f091bd656345b2053cfc6ce16602170bc711f5..95e2f0c0d37ea94eb866399caa12a005f30cf005 100644 (file)
@@ -2118,6 +2118,10 @@ shut_down_emacs (int sig, int no_x, Lisp_Object stuff)
 \f
 #ifndef CANNOT_DUMP
 
+/* FIXME: maybe this should go into header file, config.h seems the
+   only one appropriate. */
+extern int unexec (const char *, const char *);
+
 DEFUN ("dump-emacs", Fdump_emacs, Sdump_emacs, 2, 2, 0,
        doc: /* Dump current state of Emacs into executable file FILENAME.
 Take symbols from SYMFILE (presumably the file you executed to run Emacs).
@@ -2185,13 +2189,13 @@ You must run Emacs in batch mode in order to dump it.  */)
      Meanwhile, my_edata is not valid on Windows.  */
   memory_warnings (my_edata, malloc_warning);
 #endif /* not WINDOWSNT */
-#endif
-#if !defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) && !defined SYNC_INPUT
+#if defined (HAVE_GTK_AND_PTHREAD) && !defined SYNC_INPUT
   /* Pthread may call malloc before main, and then we will get an endless
      loop, because pthread_self (see alloc.c) calls malloc the first time
      it is called on some systems.  */
   reset_malloc_hooks ();
 #endif
+#endif /* not SYSTEM_MALLOC */
 #ifdef DOUG_LEA_MALLOC
   malloc_state_ptr = malloc_get_state ();
 #endif
@@ -2199,8 +2203,7 @@ You must run Emacs in batch mode in order to dump it.  */)
 #ifdef USE_MMAP_FOR_BUFFERS
   mmap_set_vars (0);
 #endif
-  unexec (SDATA (filename),
-         !NILP (symfile) ? SDATA (symfile) : 0, my_edata, 0, 0);
+  unexec (SDATA (filename), !NILP (symfile) ? SDATA (symfile) : 0);
 #ifdef USE_MMAP_FOR_BUFFERS
   mmap_set_vars (1);
 #endif
index 949616d5e3157b61ad0ba9c8eb64c5d1747bc1aa..8365396b498f26fa34b11c11bf5652689a8271e2 100644 (file)
@@ -31,24 +31,13 @@ what you give them.   Help stamp out software-hoarding!  */
  * Mike Sperber <sperber@informatik.uni-tuebingen.de>
  *
  * Synopsis:
- *     unexec (new_name, a_name, data_start, bss_start, entry_address)
- *     char *new_name, *a_name;
- *     unsigned data_start, bss_start, entry_address;
+ *     unexec (const char *new_name, const *old_name);
  *
  * Takes a snapshot of the program and makes an a.out format file in the
  * file named by the string argument new_name.
  * If a_name is non-NULL, the symbol table will be taken from the given file.
  * On some machines, an existing a_name file is required.
  *
- * data_start and entry_address are ignored.
- *
- * bss_start indicates how much of the data segment is to be saved in the
- * a.out file and restored when the program is executed.  It gives the lowest
- * unsaved address, and is rounded up to a page boundary.  The default when 0
- * is given assumes that the entire data segment is to be stored, including
- * the previous data and bss as well as any additional storage allocated with
- * sbrk(2).
- *
  */
 
 #ifndef emacs
@@ -143,10 +132,7 @@ static void write_segment (int, char *, char *);
  *
  * driving logic.
  */
-int unexec (char *new_name, char *a_name,
-           unsigned data_start,
-           unsigned bss_start,
-           unsigned entry_address)
+int unexec (const char *new_name, const char *a_name)
 {
   int new = -1, a_out = -1;
 
@@ -159,8 +145,6 @@ int unexec (char *new_name, char *a_name,
       PERROR (new_name);
     }
   if (make_hdr (new, a_out,
-               data_start, bss_start,
-               entry_address,
                a_name, new_name) < 0
       || copy_text_and_data (new) < 0
       || copy_sym (new, a_out, a_name, new_name) < 0
@@ -186,12 +170,11 @@ int unexec (char *new_name, char *a_name,
  */
 static int
 make_hdr (int new, int a_out,
-         unsigned data_start, unsigned bss_start,
-         unsigned entry_address,
          char *a_name, char *new_name)
 {
   int scns;
-  unsigned int bss_end;
+  unsigned int bss_start;
+  unsigned int data_start;
 
   struct scnhdr section[MAX_SECTIONS];
   struct scnhdr * f_thdr;              /* Text section header */
@@ -211,22 +194,8 @@ make_hdr (int new, int a_out,
 
   data_start = data_start & ~pagemask; /* (Down) to page boundary. */
 
-  bss_end = ADDR_CORRECT (sbrk (0)) + pagemask;
-  bss_end &= ~ pagemask;
-  /* Adjust data/bss boundary. */
-  if (bss_start != 0)
-    {
-      bss_start = (ADDR_CORRECT (bss_start) + pagemask);
-      /* (Up) to page bdry. */
-      bss_start &= ~ pagemask;
-      if (bss_start > bss_end)
-       {
-         ERROR1 ("unexec: Specified bss_start (%u) is past end of program",
-                 bss_start);
-       }
-    }
-  else
-    bss_start = bss_end;
+  bss_start = ADDR_CORRECT (sbrk (0)) + pagemask;
+  bss_start &= ~ pagemask;
 
   if (data_start > bss_start)  /* Can't have negative data size. */
     {
@@ -311,7 +280,7 @@ make_hdr (int new, int a_out,
   f_hdr.f_flags |= (F_RELFLG | F_EXEC);
 
   f_ohdr.dsize = bss_start - f_ohdr.data_start;
-  f_ohdr.bsize = bss_end - bss_start;
+  f_ohdr.bsize = 0;
 
   f_dhdr->s_size = f_ohdr.dsize;
   f_bhdr->s_size = f_ohdr.bsize;
index cb4b8d603b523f61cc760997d906cc90073d640f..428382e4a3def9b7768111230095d84702410113 100644 (file)
@@ -34,37 +34,13 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
  * Modified heavily since then.
  *
  * Synopsis:
- *     unexec (new_name, a_name, data_start, bss_start, entry_address)
- *     char *new_name, *a_name;
- *     unsigned data_start, bss_start, entry_address;
+ *     unexec (const char *new_name, const char *old_name);
  *
  * Takes a snapshot of the program and makes an a.out format file in the
  * file named by the string argument new_name.
  * If a_name is non-NULL, the symbol table will be taken from the given file.
  * On some machines, an existing a_name file is required.
  *
- * The boundaries within the a.out file may be adjusted with the data_start
- * and bss_start arguments.  Either or both may be given as 0 for defaults.
- *
- * Data_start gives the boundary between the text segment and the data
- * segment of the program.  The text segment can contain shared, read-only
- * program code and literal data, while the data segment is always unshared
- * and unprotected.  Data_start gives the lowest unprotected address.
- * The value you specify may be rounded down to a suitable boundary
- * as required by the machine you are using.
- *
- * Specifying zero for data_start means the boundary between text and data
- * should not be the same as when the program was loaded.
- *
- * Bss_start indicates how much of the data segment is to be saved in the
- * a.out file and restored when the program is executed.  It gives the lowest
- * unsaved address, and is rounded up to a page boundary.  The default when 0
- * is given assumes that the entire data segment is to be stored, including
- * the previous data and bss as well as any additional storage allocated with
- * break (2).
- *
- * The new file is set up to start at entry_address.
- *
  * If you make improvements I'd like to get them too.
  * harpo!utah-cs!thomas, thomas@Utah-20
  *
@@ -186,15 +162,16 @@ static void mark_x (const char *);
  * Modify the text and data sizes.
  */
 static int
-make_hdr (int new, int a_out, unsigned data_start, unsigned bss_start,
-         unsigned entry_address, const char *a_name, const char *new_name)
+make_hdr (int new, int a_out,
+         const char *a_name, const char *new_name)
 {
   auto struct scnhdr f_thdr;           /* Text section header */
   auto struct scnhdr f_dhdr;           /* Data section header */
   auto struct scnhdr f_bhdr;           /* Bss section header */
   auto struct scnhdr scntemp;          /* Temporary section header */
   register int scns;
-  unsigned int bss_end;
+  unsigned int bss_start;
+  unsigned int data_start;
 
   pagemask = getpagesize () - 1;
 
@@ -203,23 +180,8 @@ make_hdr (int new, int a_out, unsigned data_start, unsigned bss_start,
   data_start = ADDR_CORRECT (data_start);
   data_start = data_start & ~pagemask; /* (Down) to page boundary. */
 
-  bss_end = ADDR_CORRECT (sbrk (0)) + pagemask;
-  bss_end &= ~ pagemask;
-
-  /* Adjust data/bss boundary. */
-  if (bss_start != 0)
-    {
-      bss_start = (ADDR_CORRECT (bss_start) + pagemask);
-      /* (Up) to page bdry. */
-      bss_start &= ~ pagemask;
-      if (bss_start > bss_end)
-       {
-         ERROR1 ("unexec: Specified bss_start (%u) is past end of program",
-                 bss_start);
-       }
-    }
-  else
-    bss_start = bss_end;
+  bss_start = ADDR_CORRECT (sbrk (0)) + pagemask;
+  bss_start &= ~ pagemask;
 
   if (data_start > bss_start)  /* Can't have negative data size. */
     {
@@ -300,7 +262,7 @@ make_hdr (int new, int a_out, unsigned data_start, unsigned bss_start,
 
   f_hdr.f_flags |= (F_RELFLG | F_EXEC);
   f_ohdr.dsize = bss_start - f_ohdr.data_start;
-  f_ohdr.bsize = bss_end - bss_start;
+  f_ohdr.bsize = 0;
   f_thdr.s_size = f_ohdr.tsize;
   f_thdr.s_scnptr = sizeof (f_hdr) + sizeof (f_ohdr);
   f_thdr.s_scnptr += (f_hdr.f_nscns) * (sizeof (f_thdr));
@@ -571,8 +533,7 @@ adjust_lnnoptrs (int writedesc, int readdesc, const char *new_name)
  * driving logic.
  */
 int
-unexec (const char *new_name, const char *a_name,
-       unsigned data_start, unsigned bss_start, unsigned entry_address)
+unexec (const char *new_name, const char *a_name)
 {
   int new = -1, a_out = -1;
 
@@ -585,7 +546,7 @@ unexec (const char *new_name, const char *a_name,
       PERROR (new_name);
     }
 
-  if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) < 0
+  if (make_hdr (new, a_out, a_name, new_name) < 0
       || copy_text_and_data (new, a_out) < 0
       || copy_sym (new, a_out, a_name, new_name) < 0
       || adjust_lnnoptrs (new, a_out, new_name) < 0
index 4930eb4631597ec31d6e218394857d82198b98f0..c33d9d902151d694e5bf029aa81b1b6bf61e7d7a 100644 (file)
@@ -248,8 +248,7 @@ add_exe_suffix_if_necessary (const char *name, char *modified)
 }
 
 int
-unexec (char *outfile, char *infile, unsigned start_data, unsigned d1,
-       unsigned d2)
+unexec (const char *outfile, const char *infile)
 {
   char infile_buffer[FILENAME_MAX];
   char outfile_buffer[FILENAME_MAX];
index 0de69a4cabc6de6dacfeea6772a2e69185f72f00..e4d26b310ff8024287fc5df361bef9a95ae27120 100644 (file)
@@ -33,34 +33,13 @@ what you give them.   Help stamp out software-hoarding!  */
  * Modified heavily since then.
  *
  * Synopsis:
- *     unexec (new_name, old_name, data_start, bss_start, entry_address)
- *     char *new_name, *old_name;
- *     unsigned data_start, bss_start, entry_address;
+ *     unexec (const char *new_name, const char *old_name);
  *
  * Takes a snapshot of the program and makes an a.out format file in the
  * file named by the string argument new_name.
  * If old_name is non-NULL, the symbol table will be taken from the given file.
  * On some machines, an existing old_name file is required.
  *
- * The boundaries within the a.out file may be adjusted with the data_start
- * and bss_start arguments.  Either or both may be given as 0 for defaults.
- *
- * Data_start gives the boundary between the text segment and the data
- * segment of the program.  The text segment can contain shared, read-only
- * program code and literal data, while the data segment is always unshared
- * and unprotected.  Data_start gives the lowest unprotected address.
- * The value you specify may be rounded down to a suitable boundary
- * as required by the machine you are using.
- *
- * Bss_start indicates how much of the data segment is to be saved in the
- * a.out file and restored when the program is executed.  It gives the lowest
- * unsaved address, and is rounded up to a page boundary.  The default when 0
- * is given assumes that the entire data segment is to be stored, including
- * the previous data and bss as well as any additional storage allocated with
- * break (2).
- *
- * The new file is set up to start at entry_address.
- *
  */
 
 /* Even more heavily modified by james@bigtex.cactus.org of Dell Computer Co.
@@ -610,7 +589,7 @@ round_up (ElfW(Addr) x, ElfW(Addr) y)
    if NOERROR is 0; we return -1 if NOERROR is nonzero.  */
 
 static int
-find_section (const char *name, char *section_names, char *file_name,
+find_section (const char *name, const char *section_names, const char *file_name,
              ElfW(Ehdr) *old_file_h, ElfW(Shdr) *old_section_h, int noerror)
 {
   int idx;
@@ -646,8 +625,7 @@ find_section (const char *name, char *section_names, char *file_name,
  *
  */
 void
-unexec (char *new_name, char *old_name, unsigned int data_start,
-       unsigned int bss_start, unsigned int entry_address)
+unexec (const char *new_name, const char *old_name)
 {
   int new_file, old_file, new_file_size;
 
index cad2a5025abecc73d4007e6a6b8f8b7960822d4e..b410092b1cc936048183ec5c5f426bda9a25fa83 100644 (file)
@@ -79,12 +79,9 @@ run_time_remap (ignored)
 
 
 /* Create a new a.out file, same as old but with current data space */
-
-unexec (new_name, old_name, new_end_of_text, dummy1, dummy2)
-     char new_name[];          /* name of the new a.out file to be created */
-     char old_name[];          /* name of the old a.out file */
-     char *new_end_of_text;    /* ptr to new edata/etext; NOT USED YET */
-     int dummy1, dummy2;       /* not used by emacs */
+int
+unexec (const char *new_name,      /* name of the new a.out file to be created */
+       const char *old_name)       /* name of the old a.out file */
 {
   int old, new;
   int old_size, new_size;
index 5c450e062c631a8c2a4b88114eee7ac0bea3746e..f48c8d7dfa6bea6912844da2d3df49dba03d62fd 100644 (file)
@@ -190,6 +190,8 @@ static off_t data_segment_old_fileoff = 0;
 
 static struct segment_command *data_segment_scp;
 
+static void unexec_error (const char *format, ...) NO_RETURN;
+
 /* Read N bytes from infd into memory starting at address DEST.
    Return true if successful, false otherwise.  */
 static int
@@ -1217,9 +1219,8 @@ dump_it (void)
    from it.  The file names of the output and input files are outfile
    and infile, respectively.  The three other parameters are
    ignored.  */
-void
-unexec (char *outfile, char *infile, void *start_data, void *start_bss,
-        void *entry_address)
+int
+unexec (const char *outfile, const char *infile)
 {
   if (in_dumped_exec)
     unexec_error ("Unexec from a dumped executable is not supported.");
@@ -1249,6 +1250,7 @@ unexec (char *outfile, char *infile, void *start_data, void *start_bss,
   dump_it ();
 
   close (outfd);
+  return 0;
 }
 
 
index da4865d8ca843a6d6b43b4d02a2765e21c674b0a..1d58ed46d4bdb836ee82d314edbe00e5a741ed0d 100644 (file)
@@ -10,8 +10,7 @@
 #include "coding.h"
 
 int
-unexec (char *new_name, char *old_name, unsigned int data_start,
-        unsigned int bss_start, unsigned int entry_address)
+unexec (const char *new_name, const char *old_name)
 {
   Lisp_Object data;
   Lisp_Object errstring;
index d3e4e812480da9e7072ed2c04e1ee9bda9bff452..a4dba647f535a963b02a630e13eb2ab56057e363 100644 (file)
@@ -724,9 +724,8 @@ copy_executable_and_dump_data (file_data *p_infile,
 
 
 /* Dump out .data and .bss sections into a new executable.  */
-void
-unexec (char *new_name, char *old_name, void *start_data, void *start_bss,
-       void *entry_address)
+int
+unexec (const char *new_name, const char *old_name)
 {
   file_data in_file, out_file;
   char out_filename[MAX_PATH], in_filename[MAX_PATH];
@@ -821,6 +820,8 @@ unexec (char *new_name, char *old_name, void *start_data, void *start_bss,
 
   close_file_data (&in_file);
   close_file_data (&out_file);
+
+  return 0;
 }
 
 /* eof */