annotate src/unexhp9k800.c @ 93762:46d39c0f7bf9

(uniscribe_shape): Increase items buffer size. Give up if glyph indices not supported. Use uniscribe obtained ABC widths for individual metrics. Map glyph clusters back to characters using fClusterStart flag. Return number of glyphs produced, not chars processed.
author Jason Rumney <jasonr@gnu.org>
date Sun, 06 Apr 2008 01:04:45 +0000
parents 5cb7ffd03e07
children ddedcecb18ef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
76673
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1 /* Unexec for HP 9000 Series 800 machines.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3 This file is in the public domain.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5 Author: John V. Morris
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
6
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
7 This file was written by John V. Morris at Hewlett Packard.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8 Both the author and Hewlett Packard Co. have disclaimed the
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9 copyright on this file, and it is therefore in the public domain.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
10 (Search for "hp9k800" in copyright.list.)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
11 */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
12
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
13 /*
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
14 Bob Desinger <hpsemc!bd@hplabs.hp.com>
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
15
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
16 Note that the GNU project considers support for HP operation a
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
17 peripheral activity which should not be allowed to divert effort
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
18 from development of the GNU system. Changes in this code will be
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
19 installed when users send them in, but aside from that we don't
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
20 plan to think about it, or about whether other Emacs maintenance
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
21 might break it.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
22
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
23
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
24 Unexec creates a copy of the old a.out file, and replaces the old data
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
25 area with the current data area. When the new file is executed, the
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
26 process will see the same data structures and data values that the
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
27 original process had when unexec was called.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
28
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
29 Unlike other versions of unexec, this one copies symbol table and
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
30 debug information to the new a.out file. Thus, the new a.out file
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
31 may be debugged with symbolic debuggers.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
32
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
33 If you fix any bugs in this, I'd like to incorporate your fixes.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
34 Send them to uunet!hpda!hpsemc!jmorris or jmorris%hpsemc@hplabs.HP.COM.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
35
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
36 CAVEATS:
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
37 This routine saves the current value of all static and external
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
38 variables. This means that any data structure that needs to be
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
39 initialized must be explicitly reset. Variables will not have their
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
40 expected default values.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
41
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
42 Unfortunately, the HP-UX signal handler has internal initialization
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
43 flags which are not explicitly reset. Thus, for signals to work in
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
44 conjunction with this routine, the following code must executed when
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45 the new process starts up.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47 void _sigreturn ();
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48 ...
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49 sigsetreturn (_sigreturn);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
50 */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
51
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52 #ifdef emacs
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53 #include <config.h>
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54 #endif
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56 #include <stdio.h>
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57 #include <fcntl.h>
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
58 #include <errno.h>
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60 #include <a.out.h>
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62 #ifdef HPUX_USE_SHLIBS
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63 #include <dl.h>
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
64 #endif
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
65
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
66 /* brk value to restore, stored as a global.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
67 This is really used only if we used shared libraries. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 static long brk_on_dump = 0;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70 /* Called from main, if we use shared libraries. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71 int
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
72 run_time_remap (ignored)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
73 char *ignored;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
74 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
75 brk ((char *) brk_on_dump);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
76 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
77
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
78 #undef roundup
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
79 #define roundup(x,n) (((x) + ((n) - 1)) & ~((n) - 1)) /* n is power of 2 */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
80 #define min(x,y) (((x) < (y)) ? (x) : (y))
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
81
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
82
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
83 /* Create a new a.out file, same as old but with current data space */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
84
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85 unexec (new_name, old_name, new_end_of_text, dummy1, dummy2)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
86 char new_name[]; /* name of the new a.out file to be created */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87 char old_name[]; /* name of the old a.out file */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
88 char *new_end_of_text; /* ptr to new edata/etext; NOT USED YET */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
89 int dummy1, dummy2; /* not used by emacs */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
90 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
91 int old, new;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
92 int old_size, new_size;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
93 struct header hdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
94 struct som_exec_auxhdr auxhdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95 long i;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
96
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
97 /* For the greatest flexibility, should create a temporary file in
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
98 the same directory as the new file. When everything is complete,
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
99 rename the temp file to the new name.
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
100 This way, a program could update its own a.out file even while
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
101 it is still executing. If problems occur, everything is still
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102 intact. NOT implemented. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
104 /* Open the input and output a.out files */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
105 old = open (old_name, O_RDONLY);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
106 if (old < 0)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107 { perror (old_name); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108 new = open (new_name, O_CREAT|O_RDWR|O_TRUNC, 0777);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109 if (new < 0)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 { perror (new_name); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112 /* Read the old headers */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113 read_header (old, &hdr, &auxhdr);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
114
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
115 brk_on_dump = (long) sbrk (0);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117 /* Decide how large the new and old data areas are */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
118 old_size = auxhdr.exec_dsize;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
119 /* I suspect these two statements are separate
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 to avoid a compiler bug in hpux version 8. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
121 i = (long) sbrk (0);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
122 new_size = i - auxhdr.exec_dmem;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
123
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124 /* Copy the old file to the new, up to the data space */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
125 lseek (old, 0, 0);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
126 copy_file (old, new, auxhdr.exec_dfile);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
127
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128 /* Skip the old data segment and write a new one */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129 lseek (old, old_size, 1);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130 save_data_space (new, &hdr, &auxhdr, new_size);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
132 /* Copy the rest of the file */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
133 copy_rest (old, new);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
134
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
135 /* Update file pointers since we probably changed size of data area */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
136 update_file_ptrs (new, &hdr, &auxhdr, auxhdr.exec_dfile, new_size-old_size);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
137
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
138 /* Save the modified header */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
139 write_header (new, &hdr, &auxhdr);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
140
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
141 /* Close the binary file */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
142 close (old);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
143 close (new);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
144 return 0;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
145 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
146
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
147 /* Save current data space in the file, update header. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
148
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
149 save_data_space (file, hdr, auxhdr, size)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
150 int file;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
151 struct header *hdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
152 struct som_exec_auxhdr *auxhdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
153 int size;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
154 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
155 /* Write the entire data space out to the file */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
156 if (write (file, auxhdr->exec_dmem, size) != size)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
157 { perror ("Can't save new data space"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
158
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
159 /* Update the header to reflect the new data size */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
160 auxhdr->exec_dsize = size;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
161 auxhdr->exec_bsize = 0;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
162 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
163
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
164 /* Update the values of file pointers when something is inserted. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
165
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
166 update_file_ptrs (file, hdr, auxhdr, location, offset)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
167 int file;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
168 struct header *hdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
169 struct som_exec_auxhdr *auxhdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
170 unsigned int location;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
171 int offset;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
172 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
173 struct subspace_dictionary_record subspace;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
174 int i;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
175
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
176 /* Increase the overall size of the module */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
177 hdr->som_length += offset;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
178
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
179 /* Update the various file pointers in the header */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
180 #define update(ptr) if (ptr > location) ptr = ptr + offset
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
181 update (hdr->aux_header_location);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
182 update (hdr->space_strings_location);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
183 update (hdr->init_array_location);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
184 update (hdr->compiler_location);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
185 update (hdr->symbol_location);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
186 update (hdr->fixup_request_location);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
187 update (hdr->symbol_strings_location);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
188 update (hdr->unloadable_sp_location);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
189 update (auxhdr->exec_tfile);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
190 update (auxhdr->exec_dfile);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
191
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
192 /* Do for each subspace dictionary entry */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
193 lseek (file, hdr->subspace_location, 0);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
194 for (i = 0; i < hdr->subspace_total; i++)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
195 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
196 if (read (file, &subspace, sizeof (subspace)) != sizeof (subspace))
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
197 { perror ("Can't read subspace record"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
198
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
199 /* If subspace has a file location, update it */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
200 if (subspace.initialization_length > 0
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
201 && subspace.file_loc_init_value > location)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
202 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
203 subspace.file_loc_init_value += offset;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
204 lseek (file, -sizeof (subspace), 1);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
205 if (write (file, &subspace, sizeof (subspace)) != sizeof (subspace))
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
206 { perror ("Can't update subspace record"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
207 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
208 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
209
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
210 /* Do for each initialization pointer record */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
211 /* (I don't think it applies to executable files, only relocatables) */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
212 #undef update
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
213 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
214
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
215 /* Read in the header records from an a.out file. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
216
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
217 read_header (file, hdr, auxhdr)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
218 int file;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
219 struct header *hdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
220 struct som_exec_auxhdr *auxhdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
221 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
222
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
223 /* Read the header in */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
224 lseek (file, 0, 0);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
225 if (read (file, hdr, sizeof (*hdr)) != sizeof (*hdr))
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
226 { perror ("Couldn't read header from a.out file"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
227
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
228 if (hdr->a_magic != EXEC_MAGIC && hdr->a_magic != SHARE_MAGIC
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
229 && hdr->a_magic != DEMAND_MAGIC)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
230 {
80031
5cb7ffd03e07 (read_header): Replace `legal' with `valid'.
Juanma Barranquero <lekktu@gmail.com>
parents: 76673
diff changeset
231 fprintf (stderr, "a.out file doesn't have valid magic number\n");
76673
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
232 exit (1);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
233 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
234
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
235 lseek (file, hdr->aux_header_location, 0);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
236 if (read (file, auxhdr, sizeof (*auxhdr)) != sizeof (*auxhdr))
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
237 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
238 perror ("Couldn't read auxiliary header from a.out file");
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
239 exit (1);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
240 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
241 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
242
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
243 /* Write out the header records into an a.out file. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
244
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
245 write_header (file, hdr, auxhdr)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
246 int file;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
247 struct header *hdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
248 struct som_exec_auxhdr *auxhdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
249 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
250 /* Update the checksum */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
251 hdr->checksum = calculate_checksum (hdr);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
252
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
253 /* Write the header back into the a.out file */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
254 lseek (file, 0, 0);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
255 if (write (file, hdr, sizeof (*hdr)) != sizeof (*hdr))
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
256 { perror ("Couldn't write header to a.out file"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
257 lseek (file, hdr->aux_header_location, 0);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
258 if (write (file, auxhdr, sizeof (*auxhdr)) != sizeof (*auxhdr))
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
259 { perror ("Couldn't write auxiliary header to a.out file"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
260 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
261
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
262 /* Calculate the checksum of a SOM header record. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
263
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
264 calculate_checksum (hdr)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
265 struct header *hdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
266 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
267 int checksum, i, *ptr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
268
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
269 checksum = 0; ptr = (int *) hdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
270
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
271 for (i = 0; i < sizeof (*hdr) / sizeof (int) - 1; i++)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
272 checksum ^= ptr[i];
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
273
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
274 return (checksum);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
275 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
276
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
277 /* Copy size bytes from the old file to the new one. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
278
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
279 copy_file (old, new, size)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
280 int new, old;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
281 int size;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
282 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
283 int len;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
284 int buffer[8192]; /* word aligned will be faster */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
285
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
286 for (; size > 0; size -= len)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
287 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
288 len = min (size, sizeof (buffer));
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
289 if (read (old, buffer, len) != len)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
290 { perror ("Read failure on a.out file"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
291 if (write (new, buffer, len) != len)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
292 { perror ("Write failure in a.out file"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
293 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
294 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
295
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
296 /* Copy the rest of the file, up to EOF. */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
297
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
298 copy_rest (old, new)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
299 int new, old;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
300 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
301 int buffer[4096];
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
302 int len;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
303
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
304 /* Copy bytes until end of file or error */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
305 while ((len = read (old, buffer, sizeof (buffer))) > 0)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
306 if (write (new, buffer, len) != len) break;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
307
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
308 if (len != 0)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
309 { perror ("Unable to copy the rest of the file"); exit (1); }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
310 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
311
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
312 #ifdef DEBUG
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
313 display_header (hdr, auxhdr)
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
314 struct header *hdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
315 struct som_exec_auxhdr *auxhdr;
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
316 {
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
317 /* Display the header information (debug) */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
318 printf ("\n\nFILE HEADER\n");
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
319 printf ("magic number %d \n", hdr->a_magic);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
320 printf ("text loc %.8x size %d \n", auxhdr->exec_tmem, auxhdr->exec_tsize);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
321 printf ("data loc %.8x size %d \n", auxhdr->exec_dmem, auxhdr->exec_dsize);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
322 printf ("entry %x \n", auxhdr->exec_entry);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
323 printf ("Bss segment size %u\n", auxhdr->exec_bsize);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
324 printf ("\n");
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
325 printf ("data file loc %d size %d\n",
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
326 auxhdr->exec_dfile, auxhdr->exec_dsize);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
327 printf ("som_length %d\n", hdr->som_length);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
328 printf ("unloadable sploc %d size %d\n",
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
329 hdr->unloadable_sp_location, hdr->unloadable_sp_size);
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
330 }
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
331 #endif /* DEBUG */
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
332
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
333 /* arch-tag: d55a09ac-9427-4ec4-8496-cb9d7710774f
a82fc200152b Restore file with clarified legal status.
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
334 (do not change this comment) */