|
|
1.1 root 1: #
2: # Copyright (c) 1994 The University of Utah and
3: # the Computer Systems Laboratory (CSL). All rights reserved.
4: #
5: # Permission to use, copy, modify and distribute this software and its
6: # documentation is hereby granted, provided that both the copyright
7: # notice and this permission notice appear in all copies of the
8: # software, derivative works or modified versions, and any portions
9: # thereof, and that both notices appear in supporting documentation.
10: #
11: # THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
12: # IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
13: # ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
14: #
15: # CSL requests users of this software to return to [email protected] any
16: # improvements that they make and grant CSL redistribution rights.
17: #
18: # Author: Bryan Ford, University of Utah CSL
19: #
20:
21: BEGIN {
22: bogus_printed = "no"
23: }
24:
25: # Start the bogus function just before the first sym directive,
26: # so that any #includes higher in the file don't get stuffed inside it.
27: /^[a-z]/ {
28: if (bogus_printed == "no")
29: {
30: print "void bogus() {";
31: bogus_printed = "yes";
32: }
33: }
34:
35: # Take an arbitrarily complex C symbol or expression and constantize it.
36: /^expr/ {
37: print "__asm (\"\\n\\";
38: if ($3 == "")
39: printf "* %s mAgIc%%0\" : : \"i\" (%s));\n", $2, $2;
40: else
41: printf "* %s mAgIc%%0\" : : \"i\" (%s));\n", $3, $2;
42: }
43:
44: # Output a symbol defining the size of a C structure.
45: /^size/ {
46: print "__asm (\"\\n\\";
47: if ($4 == "")
48: printf "* %s_SIZE mAgIc%%0\" : : \"i\" (sizeof(struct %s)));\n",
49: toupper($3), $2;
50: else
51: printf "* %s mAgIc%%0\" : : \"i\" (sizeof(struct %s)));\n",
52: $4, $2;
53: }
54:
55: # Output a symbol defining the byte offset of an element of a C structure.
56: /^offset/ {
57: print "__asm (\"\\n\\";
58: if ($5 == "")
59: {
60: printf "* %s_%s mAgIc%%0\" : : \"i\" (&((struct %s*)0)->%s));\n",
61: toupper($3), toupper($4), $2, $4;
62: }
63: else
64: {
65: printf "* %s mAgIc%%0\" : : \"i\" (&((struct %s*)0)->%s));\n",
66: toupper($5), $2, $4;
67: }
68: }
69:
70: # Copy through all preprocessor directives.
71: /^#/ {
72: print
73: }
74:
75: END {
76: print "}"
77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.