mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-06 23:02:10 +03:00
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.
This commit is contained in:
parent
2d51c4ad57
commit
0650a05947
2
Makefile
2
Makefile
@ -122,7 +122,7 @@ $(foreach s,$(wildcard src/*/$(ARCH)*/*.s),$(eval $(call mkasmdep,$(s))))
|
|||||||
# Choose invocation of assembler to be used
|
# Choose invocation of assembler to be used
|
||||||
# $(1) is input file, $(2) is output file, $(3) is assembler flags
|
# $(1) is input file, $(2) is output file, $(3) is assembler flags
|
||||||
ifeq ($(ADD_CFI),yes)
|
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
|
else
|
||||||
AS_CMD = $(CC) -c -o $@ $<
|
AS_CMD = $(CC) -c -o $@ $<
|
||||||
endif
|
endif
|
||||||
|
26
tools/add-cfi.common.awk
Normal file
26
tools/add-cfi.common.awk
Normal file
@ -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
|
||||||
|
}
|
@ -22,33 +22,6 @@ BEGIN {
|
|||||||
called = ""
|
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() {
|
function get_const1() {
|
||||||
# for instructions with 2 operands, get 1st operand (assuming it is constant)
|
# for instructions with 2 operands, get 1st operand (assuming it is constant)
|
||||||
match($0, /-?(0x[0-9a-fA-F]+|[0-9]+),/)
|
match($0, /-?(0x[0-9a-fA-F]+|[0-9]+),/)
|
||||||
|
Loading…
Reference in New Issue
Block a user