diff options
author | Alex Dowad <alexinbeijing@gmail.com> | 2015-10-02 13:32:32 +0200 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2015-10-08 21:03:10 +0000 |
commit | 0650a05947c9f67cedff693d2e1c2f61a8e6c0d3 (patch) | |
tree | b586b689f6edd5538caf8801dca87b64a1ca84d1 | |
parent | 2d51c4ad57d5cbb083b5bce94ff692490c10ee2d (diff) | |
download | musl-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.
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | tools/add-cfi.common.awk | 26 | ||||
-rw-r--r-- | tools/add-cfi.i386.awk | 27 |
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]+),/) |