// Copyright 2014 The Crashpad Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "snapshot/cpu_context.h" #include <stddef.h> #include <string.h> #include <sys/types.h> #include <iterator> #include "gtest/gtest.h" #include "test/hex_string.h" namespace crashpad { namespace test { namespace { enum ExponentValue { … }; enum FractionValue { … }; //! \brief Initializes an x87 register to a known bit pattern. //! //! \param[out] st_mm The x87 register to initialize. The reserved portion of //! the register is always zeroed out. //! \param[in] exponent_value The bit pattern to use for the exponent. If this //! is kExponentAllZero, the sign bit will be set to `1`, and if this is //! kExponentAllOne, the sign bit will be set to `0`. This tests that the //! implementation doesn’t erroneously consider the sign bit to be part of //! the exponent. This may also be kExponentNormal, indicating that the //! exponent shall neither be all zeroes nor all ones. //! \param[in] j_bit The value to use for the “J bit” (“integer bit”). //! \param[in] fraction_value If kFractionAllZero, the fraction will be zeroed //! out. If kFractionNormal, the fraction will not be all zeroes. void SetX87Register(CPUContextX86::X87Register* st, ExponentValue exponent_value, bool j_bit, FractionValue fraction_value) { … } //! \brief Initializes an x87 register to a known bit pattern. //! //! This behaves as SetX87Register() but also clears the reserved portion of the //! field as used in the `fxsave` format. void SetX87OrMMXRegister(CPUContextX86::X87OrMMXRegister* st_mm, ExponentValue exponent_value, bool j_bit, FractionValue fraction_value) { … } TEST(CPUContextX86, FxsaveToFsave) { … } TEST(CPUContextX86, FsaveToFxsave) { … } TEST(CPUContextX86, FxsaveToFsaveTagWord) { … } TEST(CPUContextX86, FsaveToFxsaveTagWord) { … } } // namespace } // namespace test } // namespace crashpad