view bin/gccrun @ 2864:2d427b75daf1

<Jafet> echo \'const short main[] = {18517,58761,49201,49801,49407,51081,3816,0,18432,27749,28524,8236,28535,27762,8548,24074,3762,1295,15536,65329,1295};\' > hi.c && gcc hi.c -o hi && ./hi
author HackBot
date Sun, 05 May 2013 16:09:40 +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