mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-05 06:14:25 +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
|
||||
# $(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
|
||||
|
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 = ""
|
||||
}
|
||||
|
||||
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]+),/)
|
||||
|
Loading…
Reference in New Issue
Block a user