summaryrefslogtreecommitdiff
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
parent2d51c4ad57d5cbb083b5bce94ff692490c10ee2d (diff)
downloadmusl-0650a05947c9f67cedff693d2e1c2f61a8e6c0d3.tar.gz
musl-0650a05947c9f67cedff693d2e1c2f61a8e6c0d3.tar.bz2
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.
-rw-r--r--Makefile2
-rw-r--r--tools/add-cfi.common.awk26
-rw-r--r--tools/add-cfi.i386.awk27
3 files changed, 27 insertions, 28 deletions
diff --git a/Makefile b/Makefile
index 5a6a43b9..844a0176 100644
--- a/Makefile
+++ b/Makefile
@@ -122,7 +122,7 @@ $(foreach s,$(wildcard src/*/$(ARCH)*/*.s),$(eval $(call mkasmdep,$(s))))
# Choose invocation of assembler to be used
# $(1) is input file, $(2) is output file, $(3) is assembler flags
ifeq ($(ADD_CFI),yes)
- AS_CMD = LC_ALL=C awk -f tools/add-cfi.$(ARCH).awk $< | $(CC) -x assembler -c -o $@ -
+ AS_CMD = LC_ALL=C awk -f tools/add-cfi.common.awk -f tools/add-cfi.$(ARCH).awk $< | $(CC) -x assembler -c -o $@ -
else
AS_CMD = $(CC) -c -o $@ $<
endif
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
+}
diff --git a/tools/add-cfi.i386.awk b/tools/add-cfi.i386.awk
index 4a4a3b63..b8bdd7f4 100644
--- a/tools/add-cfi.i386.awk
+++ b/tools/add-cfi.i386.awk
@@ -22,33 +22,6 @@ BEGIN {
called = ""
}
-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
-}
-
function get_const1() {
# for instructions with 2 operands, get 1st operand (assuming it is constant)
match($0, /-?(0x[0-9a-fA-F]+|[0-9]+),/)