diff --git a/common/h/registers/x86_64_regs.h b/common/h/registers/x86_64_regs.h index 9fc55773bc..61bda15af6 100644 --- a/common/h/registers/x86_64_regs.h +++ b/common/h/registers/x86_64_regs.h @@ -132,6 +132,7 @@ namespace Dyninst { namespace x86_64 { const signed int FLAGC = x86::FLAGC; // I/O Privilege Level (bits 12 and 13) const signed int FLAGD = x86::FLAGD; // I/O Privilege Level (bits 12 and 13) const signed int NT = x86::NT; // Nested Task + const signed int FLAGF = x86::FLAGF; // Reserved const signed int RF = x86::RF; // Resume Flag // ( name, ID | alias | cat | arch, arch) @@ -221,6 +222,7 @@ namespace Dyninst { namespace x86_64 { DEF_REGISTER( flagc, FLAGC | BIT | FLAG | Arch_x86_64, "x86_64"); DEF_REGISTER( flagd, FLAGD | BIT | FLAG | Arch_x86_64, "x86_64"); DEF_REGISTER( nt_, NT | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER( flagf, FLAGF | BIT | FLAG | Arch_x86_64, "x86_64"); DEF_REGISTER( rf, RF | BIT | FLAG | Arch_x86_64, "x86_64"); DEF_REGISTER( ds, BASEDS | FULL | SEG | Arch_x86_64, "x86_64"); DEF_REGISTER( es, BASEES | FULL | SEG | Arch_x86_64, "x86_64"); diff --git a/common/src/registers/MachRegister.C b/common/src/registers/MachRegister.C index fe65216be1..db8c328a16 100644 --- a/common/src/registers/MachRegister.C +++ b/common/src/registers/MachRegister.C @@ -800,6 +800,7 @@ namespace Dyninst { case x86_64::OF: n = x86_flag_of; break; case x86_64::FLAGC: n = x86_flag_iopl0; break; case x86_64::FLAGD: n = x86_flag_iopl1; break; + case x86_64::FLAGF: n = x86_flag_15; break; default: c = -1; return; diff --git a/dataflowAPI/src/SymEvalPolicy.C b/dataflowAPI/src/SymEvalPolicy.C index 76f1a198e3..3aa5351c0a 100644 --- a/dataflowAPI/src/SymEvalPolicy.C +++ b/dataflowAPI/src/SymEvalPolicy.C @@ -480,6 +480,8 @@ Absloc SymEvalPolicy_64::convert(X86Flag f) return Absloc(x86_64::FLAGD); case x86_flag_nt: return Absloc(x86_64::nt_); + case x86_flag_15: + return Absloc(x86_64::FLAGF); default: assert(0); return Absloc();