view bin/gccrun @ 3302:f6382d5da935

<boily> pastequotes
author HackBot
date Tue, 16 Jul 2013 19:55:04 +0000
parents a52927edc8be
children 92909601a36d
line wrap: on
line source

#!/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 <arpa/inet.h>
#include <errno.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[])
{
	$1;
	return 0;
}
EOF
shift
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