From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/8602 Path: news.gmane.org!not-for-mail From: Alex Dowad Newsgroups: gmane.linux.lib.musl.general Subject: [PATCH 1/5] Pull a couple common AWK functions for CFI scripts into separate file Date: Fri, 2 Oct 2015 13:32:32 +0200 Message-ID: <1443785556-27473-1-git-send-email-alexinbeijing@gmail.com> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1443785612 30826 80.91.229.3 (2 Oct 2015 11:33:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 2 Oct 2015 11:33:32 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-8614-gllmg-musl=m.gmane.org@lists.openwall.com Fri Oct 02 13:33:31 2015 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1Zhyaa-00046y-4U for gllmg-musl@m.gmane.org; Fri, 02 Oct 2015 13:33:24 +0200 Original-Received: (qmail 16009 invoked by uid 550); 2 Oct 2015 11:33:21 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 15641 invoked from network); 2 Oct 2015 11:32:55 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=L4aiL7YghkD0vg6+G9zHUPdy0zsaBSBCqDN+9dC9b88=; b=o7ePpmIvMH8685Y28h6BQIXJuejFDRU0+vJIW/J1KP4qLMoBXhq5Xo9ICSGf3H63N2 To8LS+pJLAkxGt5gcj/jqZlyNduOM3c84s2DZFSn5DlnXnUQixvb2w/cp/EurNA/5nGr 7d4JE+L2FUJQxca6FTDj2O+vCaNgvoN21qqpQyJEiNDwtXoouI6VBe9y6I1e94eX0JU8 mk5yLw6ZidHs81fH4HGWHywGPVuJ9lL0upIFXLnOSfBdWZykMxFV0Kk65wAVcUkEyDXj HlFlC3eIbfcBZuKq1Eg5dgcKwvrdi4uAcqD7ysuBdIy7FNWsGQYPvNb8amrgHHqhN5TA 1WPQ== X-Received: by 10.194.82.198 with SMTP id k6mr15451884wjy.139.1443785563702; Fri, 02 Oct 2015 04:32:43 -0700 (PDT) X-Mailer: git-send-email 2.0.0.GIT Xref: news.gmane.org gmane.linux.lib.musl.general:8602 Archived-At: 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. --- Thanks to Rich Felker for feedback. Some improvements have been made... Makefile | 2 +- tools/add-cfi.common.awk | 26 ++++++++++++++++++++++++++ tools/add-cfi.i386.awk | 27 --------------------------- 3 files changed, 27 insertions(+), 28 deletions(-) create mode 100644 tools/add-cfi.common.awk diff --git a/Makefile b/Makefile index 5a6a43b..844a017 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 0000000..04482d4 --- /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 4a4a3b6..b8bdd7f 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]+),/) -- 2.0.0.GIT