From: Julian Seward Date: Fri, 20 Jan 2017 10:01:42 +0000 (+0000) Subject: x86: Recognize the SS segment prefix on x86. Bug 344139 comment 4. X-Git-Tag: svn/VALGRIND_3_13_0^2~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ef92d92cdc7a8a95ed694783368e62a17b43b466;p=thirdparty%2Fvalgrind.git x86: Recognize the SS segment prefix on x86. Bug 344139 comment 4. Patch from Sebastian Lackner, sebastian@fds-team.de. git-svn-id: svn://svn.valgrind.org/vex/trunk@3299 --- diff --git a/VEX/priv/guest_x86_toIR.c b/VEX/priv/guest_x86_toIR.c index de09d3a8a0..234d68e825 100644 --- a/VEX/priv/guest_x86_toIR.c +++ b/VEX/priv/guest_x86_toIR.c @@ -1409,6 +1409,7 @@ const HChar* sorbTxt ( UChar sorb ) case 0x26: return "%es:"; case 0x64: return "%fs:"; case 0x65: return "%gs:"; + case 0x36: return "%ss:"; default: vpanic("sorbTxt(x86,guest)"); } } @@ -1433,6 +1434,7 @@ IRExpr* handleSegOverride ( UChar sorb, IRExpr* virtual ) case 0x26: sreg = R_ES; break; case 0x64: sreg = R_FS; break; case 0x65: sreg = R_GS; break; + case 0x36: sreg = R_SS; break; default: vpanic("handleSegOverride(x86,guest)"); } @@ -8101,7 +8103,7 @@ DisResult disInstr_X86_WRK ( Int sz = 4; /* sorb holds the segment-override-prefix byte, if any. Zero if no - prefix has been seen, else one of {0x26, 0x3E, 0x64, 0x65} + prefix has been seen, else one of {0x26, 0x36, 0x3E, 0x64, 0x65} indicating the prefix. */ UChar sorb = 0; @@ -8255,6 +8257,7 @@ DisResult disInstr_X86_WRK ( case 0x26: /* %ES: */ case 0x64: /* %FS: */ case 0x65: /* %GS: */ + case 0x36: /* %SS: */ if (sorb != 0) goto decode_failure; /* only one seg override allowed */ sorb = pre; @@ -8274,9 +8277,6 @@ DisResult disInstr_X86_WRK ( } break; } - case 0x36: /* %SS: */ - /* SS override cases are not handled */ - goto decode_failure; default: goto not_a_prefix; }