annotate bin/gccrun @ 7094:4a2788609dc2

<b_jonas> learn Elendil decided to try to save Numenor from its awful end by navigating to the undying lands and appealing to the Valar, but then he changed his mind, saved his family only and founded a new empire in Middle-earth.
author HackBot
date Sat, 05 Mar 2016 22:07:12 +0000
parents 7f957c1f4661
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4531
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
1 #!/bin/sh
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
2
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
3 if [ "$#" = 0 ]; then
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
4 echo "usage: $0 [-w wrapper] <C code...>" >&2
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
5 exit 1
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
6 fi
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
7
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
8 if [ "$1" = -w ]; then
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
9 wrapper="$2"
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
10 shift 2
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
11 fi
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
12
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
13 f=$(mktemp -d -t gccrun.XXXXXXXX) || exit 1
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
14 cat > "$f/command.c" << EOF
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
15 #define _GNU_SOURCE
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
16 #include <sys/types.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
17 #include <sys/stat.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
18 #include <sys/mman.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
19 #include <sys/ptrace.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
20 #include <sys/syscall.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
21 #include <arpa/inet.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
22 #include <errno.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
23 #include <fcntl.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
24 #include <signal.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
25 #include <stdio.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
26 #include <stdlib.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
27 #include <string.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
28 #include <unistd.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
29 #include <math.h>
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
30
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
31 int
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
32 main(int argc, char *argv[], char *envp[])
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
33 {
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
34 $1;
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
35 return 0;
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
36 }
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
37 EOF
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
38 shift
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
39 if ! gcc -o "$f/command" "$f/command.c" $@ -lm; then
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
40 exit 1
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
41 fi
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
42 if [ -n "$wrapper" ]; then
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
43 $wrapper "$f/command"
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
44 else
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
45 "$f/command"
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
46 fi
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
47 r=$?
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
48 rm -r "$f"
7f957c1f4661 <oerjan> revert
HackBot
parents:
diff changeset
49 exit $r