[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/libc/glibc/glibc-2.22/mach/shortcut.awk b/ap/libc/glibc/glibc-2.22/mach/shortcut.awk
new file mode 100644
index 0000000..ea283d4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/mach/shortcut.awk
@@ -0,0 +1,50 @@
+# Icky intimate knowledge of MiG output.
+
+BEGIN { print "/* This file is generated by shortcut.awk.  */";
+	echo=1;
+	inproto=0; proto=""; arglist="";
+      }
+
+$1 == "LINTLIBRARY" { print "#include <mach.h>"; next }
+
+$1 == "weak_alias" { next }
+
+# Copy the first line of the definition, but
+# replace the function name (RPC) with CALL.
+$NF == rpc \
+  {
+    for (i = 1; i < NF; ++i) printf "%s ", $i;
+    print call;
+    next;
+  }
+
+# Collect the lines of the prototype in PROTO, and extract the parameter
+# names into ARGLIST.
+NF == 1 && $1 == ")" { inproto=0 }
+inproto { proto = proto $0;
+	  arg = $NF;
+	  gsub(/[^a-zA-Z0-9_,]/, "", arg);
+	  arglist = arglist arg;
+	}
+NF == 1 && $1 == "(" { inproto=1 }
+
+/^{$/ { echo=0; }
+
+echo == 1 { print $0; }
+
+/^}$/ && proto != "" \
+  {
+    print "{";
+    print "  kern_return_t err;";
+    print "  extern kern_return_t " syscall " (" proto ");";
+    print "  extern kern_return_t " rpc " (" proto ");";
+    print "  err = " syscall " (" arglist ");";
+    print "  if (err == MACH_SEND_INTERRUPTED)";
+    print "    err = " rpc " (" arglist ");";
+    print "  return err;"
+    print "}";
+    print "weak_alias (" call ", " alias ")";
+    # Declare RPC so the weak_alias that follows will work.
+    print "extern __typeof (" call ") " rpc ";";
+    echo = 1;
+  }