# /* Self-printer using objcopy. To build, save as foo.c and run "sh foo.c". dummy= exec make -f foo.c all: objcopy -I binary -O elf64-x86-64 -B i386:x86-64 foo.c foo-src.o gcc -g -o foo foo.c foo-src.o dummy: # */ #include extern char _binary_foo_c_start; extern char _binary_foo_c_size; extern char _binary_foo_c_end; char *bin_start = &_binary_foo_c_start; char *bin_end = &_binary_foo_c_end; ssize_t bin_size = (ssize_t) &_binary_foo_c_size; int main (int argc, char *argv[]) { printf ("%*s\n", (int) bin_size, bin_start); return 0; }