annotate bin/gccrun @ 12256:821155c00e34 draft

<fizzie> ` sed -e \'s|wisdom|bin|\' < ../bin/culprits > ../bin/cblprits; chmod a+x ../bin/cblprits
author HackEso <hackeso@esolangs.org>
date Sat, 07 Dec 2019 23:36:22 +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