e.g.,
dr-wily:~ geofft$ gccrun 'printf("Hello world!\n");'
Hello world!
See http://geofft.mit.edu/blog/sipb/132 for a bit more info.
Signed-off-by: Geoffrey Thomas <geofft@mit.edu>
--- /dev/null
+#!/bin/sh
+
+if [ "$#" = 0 ]; then
+ echo "usage: $0 [-w wrapper] <C code...>" >&2
+ exit 1
+fi
+
+if [ "$1" = -w ]; then
+ wrapper="$2"
+ shift 2
+fi
+
+f=$(mktemp -d -t gccrun.XXXXXXXX) || exit 1
+cat > "$f/command.c" << EOF
+#define _GNU_SOURCE
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <sys/ptrace.h>
+#include <sys/syscall.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+main(int argc, char *argv[], char *envp[])
+{
+ $@;
+ return 0;
+}
+EOF
+if ! gcc -o "$f/command" "$f/command.c"; then
+ exit 1
+fi
+if [ -n "$wrapper" ]; then
+ "$wrapper" "$f/command"
+else
+ "$f/command"
+fi
+r=$?
+rm -r "$f"
+exit $r