We bailed out while printing codeview for an MSVC compiled
SemaExprCXX.cpp that used this record. The MS reference headers look
incorrect here, which is probably why we had this bug. They use a 32-bit
enum as the field type, but the actual record appears to use one byte
for the cookie kind followed by a flags byte.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273691
91177308-0d34-0410-b5e6-
96231b3b80d8
};
// Corresponds to CV_cookietype_e enum.
-enum class FrameCookieKind : uint32_t {
+enum class FrameCookieKind : uint8_t {
Copy,
XorStackPointer,
XorFramePointer,
ArrayRef<EnumEntry<uint16_t>> getRegisterNames();
ArrayRef<EnumEntry<uint8_t>> getProcSymFlagNames();
ArrayRef<EnumEntry<uint16_t>> getLocalFlagNames();
-ArrayRef<EnumEntry<uint32_t>> getFrameCookieKindNames();
+ArrayRef<EnumEntry<uint8_t>> getFrameCookieKindNames();
ArrayRef<EnumEntry<SourceLanguage>> getSourceLanguageNames();
ArrayRef<EnumEntry<uint32_t>> getCompileSym2FlagNames();
ArrayRef<EnumEntry<uint32_t>> getCompileSym3FlagNames();
struct Hdr {
ulittle32_t CodeOffset;
ulittle16_t Register;
- ulittle32_t CookieKind;
+ uint8_t CookieKind;
+ uint8_t Flags;
};
FrameCookieSym(uint32_t RecordOffset, const Hdr *H)
CV_ENUM_CLASS_ENT(LocalSymFlags, IsEnregisteredStatic),
};
-static const EnumEntry<uint32_t> FrameCookieKinds[] = {
+static const EnumEntry<uint8_t> FrameCookieKinds[] = {
CV_ENUM_CLASS_ENT(FrameCookieKind, Copy),
CV_ENUM_CLASS_ENT(FrameCookieKind, XorStackPointer),
CV_ENUM_CLASS_ENT(FrameCookieKind, XorFramePointer),
ArrayRef<EnumEntry<uint16_t>> getLocalFlagNames() {
return makeArrayRef(LocalFlags);
}
-ArrayRef<EnumEntry<uint32_t>> getFrameCookieKindNames() {
+ArrayRef<EnumEntry<uint8_t>> getFrameCookieKindNames() {
return makeArrayRef(FrameCookieKinds);
}
ArrayRef<EnumEntry<SourceLanguage>> getSourceLanguageNames() {
W.printHex("Register", FrameCookie.Header.Register);
W.printEnum("CookieKind", uint16_t(FrameCookie.Header.CookieKind),
getFrameCookieKindNames());
+ W.printHex("Flags", FrameCookie.Header.Flags);
}
void CVSymbolDumperImpl::visitFrameProcSym(SymbolKind Kind,