|
Message-Id: <1444658340-10065-2-git-send-email-alexinbeijing@gmail.com> Date: Mon, 12 Oct 2015 15:58:59 +0200 From: Alex Dowad <alexinbeijing@...il.com> To: musl@...ts.openwall.com Subject: [PATCH 2/3] fix matching errors related to i386 addressing modes in CFI generation script the regexps previously used to identify registers clobbered by MOVs, ADDs, and various other operations would erroneously match index registers. In other words, the following asm: mov $0, (%eax,%ebx,4) ...would cause EBX to be considered as overwritten, which might prevent a debugger from displaying a variable's value in a higher stack frame. thanks to Rich Felker for noticing this problem. --- 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 fc0d8cf..bd7932f 100644 --- a/tools/add-cfi.i386.awk +++ b/tools/add-cfi.i386.awk @@ -184,13 +184,13 @@ 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)/ { +/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_reg2()) } -/^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") } +/^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.