about summary refs log tree commit diff
path: root/tools/add-cfi.common.awk
diff options
context:
space:
mode:
authorAlex Dowad <alexinbeijing@gmail.com>2015-10-02 13:32:32 +0200
committerRich Felker <dalias@aerifal.cx>2015-10-08 21:03:10 +0000
commit0650a05947c9f67cedff693d2e1c2f61a8e6c0d3 (patch)
treeb586b689f6edd5538caf8801dca87b64a1ca84d1 /tools/add-cfi.common.awk
parent2d51c4ad57d5cbb083b5bce94ff692490c10ee2d (diff)
downloadmusl-0650a05947c9f67cedff693d2e1c2f61a8e6c0d3.tar.gz
musl-0650a05947c9f67cedff693d2e1c2f61a8e6c0d3.tar.xz
musl-0650a05947c9f67cedff693d2e1c2f61a8e6c0d3.zip
factor common awk functions for CFI generation scripts into new file
There is a lot which could be common between i386 and x86_64, but none
of it will be useful for any other arch. These should be useful for
all archs, however.
Diffstat (limited to 'tools/add-cfi.common.awk')
-rw-r--r--tools/add-cfi.common.awk26
1 files changed, 26 insertions, 0 deletions
diff --git a/tools/add-cfi.common.awk b/tools/add-cfi.common.awk
new file mode 100644
index 00000000..04482d43
--- /dev/null
+++ b/tools/add-cfi.common.awk
@@ -0,0 +1,26 @@
+function hex2int(str,   i) {
+  str = tolower(str)
+
+  for (i = 1; i <= 16; i++) {
+    char = substr("0123456789abcdef", i, 1)
+    lookup[char] = i-1
+  }
+
+  result = 0
+  for (i = 1; i <= length(str); i++) {
+    result = result * 16
+    char   = substr(str, i, 1)
+    result = result + lookup[char]
+  }
+  return result
+}
+
+function parse_const(str) {
+  sign = sub(/^-/, "", str)
+  hex  = sub(/^0x/, "", str)
+  if (hex)
+    n = hex2int(str)
+  else
+    n = str+0
+  return sign ? -n : n
+}