|
|
1.1 root 1: symName(sym, str_tab, work)
2: SYMENT *sym;
3: char *str_tab, *work;
4: coffnlist(fn, nlp, names, count)
5: char *fn; /* file name */
6: SYMENT *nlp; /* names to look up */
7: char *names; /* long names */
8: int count; /* size of passed table */
9: main()
10: symName(sym, str_tab, work)
11: SYMENT *sym;
12: char *str_tab, *work;
13: coffnlist(fn, nlp, names, count)
14: char *fn; /* file name */
15: SYMENT *nlp; /* names to look up */
16: char *names; /* long names */
17: int count; /* size of passed table */
18: main()
19: myatol( s )
20: register char * s;
21: The size of the altered field is by default sizeof(int), but the 'value'\n\
22: specification may be followed by a ':' and a 'c', 's', 'i', or 'l' to\n\
23: explicitly specify a char, short, int, or long sized patch.\n\
24: \
25: ";
26:
27: #include <stdio.h>
28: #include <coff.h>
29: #include <canon.h>
30: #include <ctype.h>
31:
32: #include <sys/types.h>
33: #include <sys/stat.h>
34: #include "patch.h"
35:
36: /*
37: * Nlist tables and patch records.
38: */
39: #define NNLS 512
40: int nnls; /* Number of nlist elements used */
41: SYMENT nl[NNLS*2];
42: int sym_len = 0; /* Number of bytes allocated for symbols. */
43: char *symbols=NULL;
44:
45: PLIST pl[NNLS];
46:
47: char *namep; /* Name of object file to patch. */
48: int hotpatch = 0; /* Are we patching /dev/kmem? */
49: int verbose = 0; /* Are we printing feedback? */
50: int peek = 0; /* Just peek--don't actually do the patch. */
51:
52: void main();
53: int getnames();
54: void badsym();
55: void getone();
56: void setfile();
57: void setkmem();
58: int patch();
59: long myatol();
60: void usage();
61: char *index();
62: char *realloc();
63:
64:
65: void
66: main(argc, argv)
67: int argc;
68: char *argv[];
69: getnames(nn, npp)
70: int nn;
71: char **npp;
72: badsym(offset)
73: long offset;
74: getone(i, np)
75: int i; /* Which'th symbol assigment is this? */
76: register char *np; /* The symbol assignment itself. */
77: setkmem(n)
78: int n;
79: patch(fd, p)
80: int fd;
81: PLIST *p;
82: myatol( s )
83: register char * s;
84: usage()
85: setfile(namep, n, pl)
86: char *namep;
87: int n;
88: struct plist pl[];
89: main()
90: main()
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.