# HG changeset patch # User Dan Nicolaescu # Date 1216795226 0 # Node ID baf6162e41d4d06c179e08bb6d6a67ee091e06f3 # Parent c3d63bafd46399cc08f043ce9a71bf79ded50614 Remove code depending on !COFF and USG, the file is not used for such systems. diff -r c3d63bafd463 -r baf6162e41d4 src/ChangeLog --- a/src/ChangeLog Wed Jul 23 06:39:16 2008 +0000 +++ b/src/ChangeLog Wed Jul 23 06:40:26 2008 +0000 @@ -1,5 +1,8 @@ 2008-07-23 Dan Nicolaescu + * unexec.c: Remove code depending on !COFF and USG, the file is + not used for such systems. + * s/netbsd.h (A_TEXT_OFFSET, A_TEXT_SEEK): * s/freebsd.h (A_TEXT_OFFSET, A_TEXT_SEEK): Remove, unused. (LD_SWITCH_SYSTEM_1): Remove, update users. diff -r c3d63bafd463 -r baf6162e41d4 src/unexec.c --- a/src/unexec.c Wed Jul 23 06:39:16 2008 +0000 +++ b/src/unexec.c Wed Jul 23 06:40:26 2008 +0000 @@ -112,25 +112,6 @@ boundary is needed, define SEGMENT_MASK to a mask of the bits that must be zero on such a boundary. -* A_TEXT_OFFSET(HDR) - -Some machines count the a.out header as part of the size of the text -segment (a_text); they may actually load the header into core as the -first data in the text segment. Some have additional padding between -the header and the real text of the program that is counted in a_text. - -For these machines, define A_TEXT_OFFSET(HDR) to examine the header -structure HDR and return the number of bytes to add to `a_text' -before writing it (above and beyond the number of bytes of actual -program text). HDR's standard fields are already correct, except that -this adjustment to the `a_text' field has not yet been made; -thus, the amount of offset can depend on the data in the file. - -* A_TEXT_SEEK(HDR) - -If defined, this macro specifies the number of bytes to seek into the -a.out file before starting to write the text segment. - * ADJUST_EXEC_HEADER This macro can be used to generate statements to adjust or @@ -156,7 +137,7 @@ #ifndef CANNOT_DUMP /* all rest of file! */ -#if defined(COFF) && defined(HAVE_COFF_H) +#ifdef HAVE_COFF_H #include #ifdef MSDOS #if __DJGPP__ > 1 @@ -182,9 +163,9 @@ unsigned long data_start;/* base of data used for this file */ }; #endif /* not MSDOS */ -#else /* not COFF */ +#else /* not HAVE_COFF_H */ #include -#endif /* not COFF */ +#endif /* not HAVE_COFF_H */ /* Define getpagesize if the system does not. Note that this may depend on symbols defined in a.out.h. */ @@ -197,11 +178,7 @@ #include #include -#include /* Must be after sys/types.h for USG*/ - -#ifdef USG5 -#include -#endif +#include #ifndef O_RDONLY #define O_RDONLY 0 @@ -214,7 +191,6 @@ extern char *start_of_text (); /* Start of text */ extern char *start_of_data (); /* Start of initialized data */ -#ifdef COFF static long block_copy_start; /* Old executable start point */ static struct filehdr f_hdr; /* File header */ static struct aouthdr f_ohdr; /* Optional file header (a.out) */ @@ -227,36 +203,6 @@ static long coff_offset; -#else /* not COFF */ - -extern char *sbrk (); - -#define SYMS_START ((long) N_SYMOFF (ohdr)) - -#if defined (USG) -static struct bhdr hdr, ohdr; -#define a_magic fmagic -#define a_text tsize -#define a_data dsize -#define a_bss bsize -#define a_syms ssize -#define a_trsize rtsize -#define a_drsize rdsize -#define a_entry entry -#define N_BADMAG(x) \ - (((x).fmagic)!=OMAGIC && ((x).fmagic)!=NMAGIC &&\ - ((x).fmagic)!=FMAGIC && ((x).fmagic)!=IMAGIC) -#define NEWMAGIC FMAGIC -#else /* not USG */ -static struct exec hdr, ohdr; -#define NEWMAGIC ZMAGIC -#endif /* not USG */ - -static int unexec_text_start; -static int unexec_data_start; - -#endif /* not COFF */ - static int pagemask; /* Correct an int which is the bit pattern of a pointer to a byte @@ -320,13 +266,11 @@ char *new_name; { int tem; -#ifdef COFF 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; -#endif /* COFF */ unsigned int bss_end; pagemask = getpagesize () - 1; @@ -370,7 +314,6 @@ data_start, bss_start); } -#ifdef COFF coff_offset = 0L; /* stays zero, except in DJGPP */ /* Salvage as much info from the existing file as possible */ @@ -529,69 +472,6 @@ return (0); -#else /* if not COFF */ - - /* Get symbol table info from header of a.out file if given one. */ - if (a_out >= 0) - { - if (read (a_out, &ohdr, sizeof hdr) != sizeof hdr) - { - PERROR (a_name); - } - - if (N_BADMAG (ohdr)) - { - ERROR1 ("invalid magic number in %s", a_name); - } - hdr = ohdr; - } - else - { -#ifdef MSDOS /* Demacs 1.1.1 91/10/16 HIRANO Satoshi */ - bzero ((void *)&hdr, sizeof hdr); -#else - bzero (&hdr, sizeof hdr); -#endif - } - - unexec_text_start = (long) start_of_text (); - unexec_data_start = data_start; - - /* Machine-dependent fixup for header, or maybe for unexec_text_start */ -#ifdef ADJUST_EXEC_HEADER - ADJUST_EXEC_HEADER; -#endif /* ADJUST_EXEC_HEADER */ - - hdr.a_trsize = 0; - hdr.a_drsize = 0; - if (entry_address != 0) - hdr.a_entry = entry_address; - - hdr.a_bss = bss_end - bss_start; - hdr.a_data = bss_start - data_start; -#ifdef NO_REMAP - hdr.a_text = ohdr.a_text; -#else /* not NO_REMAP */ - hdr.a_text = data_start - unexec_text_start; - -#ifdef A_TEXT_OFFSET - hdr.a_text += A_TEXT_OFFSET (ohdr); -#endif - -#endif /* not NO_REMAP */ - - if (write (new, &hdr, sizeof hdr) != sizeof hdr) - { - PERROR (new_name); - } - -#ifdef A_TEXT_OFFSET - hdr.a_text -= A_TEXT_OFFSET (ohdr); -#endif - - return 0; - -#endif /* not COFF */ } write_segment (new, ptr, end) @@ -661,8 +541,6 @@ register char *end; register char *ptr; -#ifdef COFF - #ifdef MSDOS #if __DJGPP__ >= 2 /* Dump the original table of exception handlers, not the one @@ -696,35 +574,6 @@ #endif #endif -#else /* if not COFF */ - -/* Some machines count the header as part of the text segment. - That is to say, the header appears in core - just before the address that start_of_text returns. - For them, N_TXTOFF is the place where the header goes. - We must adjust the seek to the place after the header. - Note that at this point hdr.a_text does *not* count - the extra A_TEXT_OFFSET bytes, only the actual bytes of code. */ - -#ifdef A_TEXT_SEEK - lseek (new, (long) A_TEXT_SEEK (hdr), 0); -#else - lseek (new, (long) N_TXTOFF (hdr), 0); -#endif /* no A_TEXT_SEEK */ - - ptr = (char *) unexec_text_start; - end = ptr + hdr.a_text; - write_segment (new, ptr, end); - - ptr = (char *) unexec_data_start; - end = ptr + hdr.a_data; -/* This lseek is certainly incorrect when A_TEXT_OFFSET - and I believe it is a no-op otherwise. - Let's see if its absence ever fails. */ -/* lseek (new, (long) N_TXTOFF (hdr) + hdr.a_text, 0); */ - write_segment (new, ptr, end); - -#endif /* not COFF */ return 0; } @@ -745,19 +594,13 @@ if (a_out < 0) return 0; -#ifdef COFF if (SYMS_START == 0L) return 0; -#endif /* COFF */ -#ifdef COFF if (lnnoptr) /* if there is line number info */ lseek (a_out, coff_offset + lnnoptr, 0); /* start copying from there */ else lseek (a_out, coff_offset + SYMS_START, 0); /* Position a.out to symtab. */ -#else /* not COFF */ - lseek (a_out, SYMS_START, 0); /* Position a.out to symtab. */ -#endif /* not COFF */ while ((n = read (a_out, page, sizeof page)) > 0) { @@ -797,7 +640,6 @@ PERROR (name); } -#ifdef COFF #ifndef COFF_BSD_SYMBOLS /* @@ -869,8 +711,6 @@ #endif /* COFF_BSD_SYMBOLS */ -#endif /* COFF */ - /* **************************************************************** * unexec * @@ -894,11 +734,9 @@ if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) < 0 || copy_text_and_data (new, a_out) < 0 || copy_sym (new, a_out, a_name, new_name) < 0 -#ifdef COFF #ifndef COFF_BSD_SYMBOLS || adjust_lnnoptrs (new, a_out, new_name) < 0 #endif -#endif ) { close (new);