/* * Copyright 2001 IBM Corp * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include #include #include extern long ce_exec_config[]; int main(int argc, char *argv[]) { int i, cnt, pos, len; unsigned int cksum, val; unsigned char *lp; unsigned char buf[8192]; char *varname; if (argc != 2) { fprintf(stderr, "usage: %s name out-file\n", argv[0]); exit(1); } varname = strrchr(argv[1], '/'); if (varname) varname++; else varname = argv[1]; fprintf(stdout, "#\n"); fprintf(stdout, "# Miscellaneous data structures:\n"); fprintf(stdout, "# WARNING - this file is automatically generated!\n"); fprintf(stdout, "#\n"); fprintf(stdout, "\n"); fprintf(stdout, "\t.data\n"); fprintf(stdout, "\t.globl %s_data\n", varname); fprintf(stdout, "%s_data:\n", varname); pos = 0; cksum = 0; while ((len = read(0, buf, sizeof(buf))) > 0) { cnt = 0; lp = (unsigned char *)buf; len = (len + 3) & ~3; /* Round up to longwords */ for (i = 0; i < len; i += 4) { if (cnt == 0) { fprintf(stdout, "\t.long\t"); } fprintf(stdout, "0x%02X%02X%02X%02X", lp[0], lp[1], lp[2], lp[3]); val = *(unsigned long *)lp; cksum ^= val; lp += 4; if (++cnt == 4) { cnt = 0; fprintf(stdout, " # %x \n", pos+i-12); fflush(stdout); } else { fprintf(stdout, ","); } } if (cnt) { fprintf(stdout, "0\n"); } pos += len; } fprintf(stdout, "\t.globl %s_len\n", varname); fprintf(stdout, "%s_len:\t.long\t0x%x\n", varname, pos); fflush(stdout); fclose(stdout); fprintf(stderr, "cksum = %x\n", cksum); exit(0); }