|
Message-Id: <1444658340-10065-1-git-send-email-alexinbeijing@gmail.com> Date: Mon, 12 Oct 2015 15:58:58 +0200 From: Alex Dowad <alexinbeijing@...il.com> To: musl@...ts.openwall.com Subject: [PATCH 1/3] in i386 CFI script, binary ops like ADD or AND modify 2nd operand, not 1st thanks to R. Felker for noticing this problem. --- Fixed the issue with index registers being mistakenly identified as the destination for a binary op (thus causing their values to be treated as if overwritten). The fix is slightly hacky, but maintains brevity. The other option would be to write a long regex which is able to parse all x86 addressing modes. Also tweaked commit messages. Any other feedback will be appreciated, Alex Dowad tools/add-cfi.i386.awk | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/add-cfi.i386.awk b/tools/add-cfi.i386.awk index 5dc8794..fc0d8cf 100644 --- a/tools/add-cfi.i386.awk +++ b/tools/add-cfi.i386.awk @@ -185,12 +185,12 @@ function trashed(register) { # this does NOT exhaustively check for all possible instructions which could # overwrite a register value inherited from the caller (just the common ones) /mov.*,%e(ax|bx|cx|dx|si|di|bp)/ { trashed(get_reg2()) } -/(add|addl|sub|subl|and|or|xor|lea|sal|sar|shl|shr) %e(ax|bx|cx|dx|si|di|bp),/ { - trashed(get_reg1()) +/(add|addl|sub|subl|and|or|xor|lea|sal|sar|shl|shr).*,%e(ax|bx|cx|dx|si|di|bp)/ { + trashed(get_reg2()) } -/^i?mul [^,]*$/ { trashed("eax"); trashed("edx") } -/^i?mul %e(ax|bx|cx|dx|si|di|bp),/ { trashed(get_reg1()) } -/^i?div/ { trashed("eax"); trashed("edx") } +/^i?mul [^,]*$/ { trashed("eax"); trashed("edx") } +/^i?mul.*,%e(ax|bx|cx|dx|si|di|bp)/ { trashed(get_reg2()) } +/^i?div/ { trashed("eax"); trashed("edx") } /(dec|inc|not|neg|pop) %e(ax|bx|cx|dx|si|di|bp)/ { trashed(get_reg()) } /cpuid/ { trashed("eax"); trashed("ebx"); trashed("ecx"); trashed("edx") } -- 2.0.0.GIT
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.