diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
commit | b6c1cf6de79035f58b512f4400db458c8401379a (patch) | |
tree | 68979db37c85b499bc384e4ac337ed1424baab51 /tools/bin2asm/data | |
download | build-b6c1cf6de79035f58b512f4400db458c8401379a.zip build-b6c1cf6de79035f58b512f4400db458c8401379a.tar.gz build-b6c1cf6de79035f58b512f4400db458c8401379a.tar.bz2 |
Initial Contribution
Diffstat (limited to 'tools/bin2asm/data')
-rw-r--r-- | tools/bin2asm/data | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tools/bin2asm/data b/tools/bin2asm/data new file mode 100644 index 0000000..3be865f --- /dev/null +++ b/tools/bin2asm/data @@ -0,0 +1,52 @@ +/* + * Convert a data file into a .S file suitable for assembly. + * This reads from stdin and writes to stdout and takes a single + * argument for the name of the symbol in the assembly file. + */ + +#include <stdio.h> + +int main(int argc, char *argv[]) { + unsigned char buf[4096]; + size_t amt; + size_t i; + int col = 0; + char *name = argv[1]; + + printf("\ +#ifdef __APPLE_CC__\n\ +/*\n\ + * The mid-2007 version of gcc that ships with Macs requires a\n\ + * comma on the .section line, but the rest of the world thinks\n\ + * that's a syntax error. It also wants globals to be explicitly\n\ + * prefixed with \"_\" as opposed to modern gccs that do the\n\ + * prefixing for you.\n\ + */\n\ +.globl _%s\n\ + .section .rodata,\n\ + .align 8\n\ +_%s:\n\ +#else\n\ +.globl %s\n\ + .section .rodata\n\ + .align 8\n\ +%s:\n\ +#endif\n\ +", name, name, name, name); + + while (! feof(stdin)) { + amt = fread(buf, 1, sizeof(buf), stdin); + for (i = 0; i < amt; i++) { + printf((col == 0) ? ".byte %3d" : ",%3d", buf[i]); + col++; + if (col == 16) { + printf("\n"); + col = 0; + } + } + } + + if (col != 0) { + printf("\n"); + } +} |