Mercurial > repo
changeset 2659:7d8769931924
<kmc> fetch https://gist.github.com/kmcallister/72c5551e69d1a14c3474/raw/780fb50ae5d169edaf221d360e443e35d21814ca/gccrun
author | HackBot |
---|---|
date | Sat, 13 Apr 2013 23:59:36 +0000 |
parents | e95f5c07eced |
children | a52927edc8be |
files | gccrun |
diffstat | 1 files changed, 48 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gccrun Sat Apr 13 23:59:36 2013 +0000 @@ -0,0 +1,48 @@ +#!/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 \ No newline at end of file