|
|
1.1 ! root 1: #include "mint.h" ! 2: ! 3: #include <stdio.h> ! 4: ! 5: #include <stdlib.h> ! 6: ! 7: #include <stddef.h> ! 8: ! 9: ! 10: ! 11: static void usage P_((void)); ! 12: ! 13: ! 14: ! 15: static void ! 16: ! 17: usage() ! 18: ! 19: { ! 20: ! 21: fprintf(stderr, "Usage: genmagic outputfile\n"); ! 22: ! 23: exit(2); ! 24: ! 25: } ! 26: ! 27: ! 28: ! 29: /* conventions: ! 30: ! 31: * C_XXX is offset of XXX in CONTEXT struct ! 32: ! 33: * P_XXX is offset of XXX in PROC struct ! 34: ! 35: */ ! 36: ! 37: ! 38: ! 39: struct magics { ! 40: ! 41: const char *name; ! 42: ! 43: long value; ! 44: ! 45: } magics[] = { ! 46: ! 47: { "C_PTRACE", offsetof(CONTEXT, ptrace)}, ! 48: ! 49: { "C_SFMT", offsetof(CONTEXT, sfmt)}, ! 50: ! 51: { "C_INTERNAL", offsetof(CONTEXT, internal)}, ! 52: ! 53: { "C_SR", offsetof(CONTEXT, sr)}, ! 54: ! 55: { "C_PC", offsetof(CONTEXT, pc)}, ! 56: ! 57: { "C_FSTATE", offsetof(CONTEXT, fstate)}, ! 58: ! 59: { "C_FREGS", offsetof(CONTEXT, fregs)}, ! 60: ! 61: { "C_FCTRL", offsetof(CONTEXT, fctrl)}, ! 62: ! 63: { "C_USP", offsetof(CONTEXT, usp)}, ! 64: ! 65: { "C_SSP", offsetof(CONTEXT, ssp)}, ! 66: ! 67: { "C_TERM", offsetof(CONTEXT, term_vec)}, ! 68: ! 69: { "C_D0", offsetof(CONTEXT, regs)}, ! 70: ! 71: { "C_A0", offsetof(CONTEXT, regs)+32}, ! 72: ! 73: { "P_SYSTIME", offsetof(PROC, systime)}, ! 74: ! 75: { "P_USRTIME", offsetof(PROC, usrtime)}, ! 76: ! 77: { "P_PTRACER", offsetof(PROC, ptracer)}, ! 78: ! 79: { "P_SYSCTXT", offsetof(PROC, ctxt)}, ! 80: ! 81: { (char *)0, 0 } ! 82: ! 83: }; ! 84: ! 85: ! 86: ! 87: int ! 88: ! 89: main(argc, argv) ! 90: ! 91: int argc; ! 92: ! 93: char **argv; ! 94: ! 95: { ! 96: ! 97: FILE *f; ! 98: ! 99: int i; ! 100: ! 101: ! 102: ! 103: if (argc != 2) ! 104: ! 105: usage(); ! 106: ! 107: f = fopen(argv[1], "w"); ! 108: ! 109: if (!f) { ! 110: ! 111: perror(argv[1]); ! 112: ! 113: exit(1); ! 114: ! 115: } ! 116: ! 117: ! 118: ! 119: for (i = 0; magics[i].name; i++) { ! 120: ! 121: fprintf(f, "%%define %s %ld\n", magics[i].name, ! 122: ! 123: magics[i].value); ! 124: ! 125: } ! 126: ! 127: fclose(f); ! 128: ! 129: return 0; ! 130: ! 131: } ! 132:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.