Modified: trunk/Source/_javascript_Core/ChangeLog (259847 => 259848)
--- trunk/Source/_javascript_Core/ChangeLog 2020-04-10 05:48:35 UTC (rev 259847)
+++ trunk/Source/_javascript_Core/ChangeLog 2020-04-10 06:25:42 UTC (rev 259848)
@@ -1,3 +1,16 @@
+2020-04-09 Mark Lam <[email protected]>
+
+ Fix bad tests in testmasm's testCagePreservesPACFailureBit().
+ https://bugs.webkit.org/show_bug.cgi?id=210314
+ <rdar://problem/61556785>
+
+ Reviewed by Yusuke Suzuki.
+
+ Some of these tests will crash when validated untagging is enabled.
+
+ * assembler/testmasm.cpp:
+ (JSC::testCagePreservesPACFailureBit):
+
2020-04-08 Darin Adler <[email protected]>
[Cocoa] Simplify NSArray, NSDictionary, and NSNumber idioms throughout WebKit
Modified: trunk/Source/_javascript_Core/assembler/testmasm.cpp (259847 => 259848)
--- trunk/Source/_javascript_Core/assembler/testmasm.cpp 2020-04-10 05:48:35 UTC (rev 259847)
+++ trunk/Source/_javascript_Core/assembler/testmasm.cpp 2020-04-10 06:25:42 UTC (rev 259848)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2017-2019 Apple Inc. All rights reserved.
+ * Copyright (C) 2017-2020 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -2132,9 +2132,8 @@
void* taggedNotCagedPtr = tagArrayPtr(notCagedPtr, 1);
if (isARM64E()) {
- // FIXME: This won't work if authentication failures trap but I don't know how to test for that right now.
CHECK_NOT_EQ(invoke<void*>(cage, taggedPtr, 2), ptr);
- CHECK_EQ(invoke<void*>(cage, taggedNotCagedPtr, 1), untagArrayPtr(taggedPtr, 2));
+ CHECK_NOT_EQ(invoke<void*>(cage, taggedNotCagedPtr, 1), ptr);
} else
CHECK_EQ(invoke<void*>(cage, taggedPtr, 2), ptr);
@@ -2150,11 +2149,10 @@
CHECK_EQ(invoke<void*>(cageWithoutAuthentication, taggedPtr), taggedPtr);
if (isARM64E()) {
- // FIXME: This won't work if authentication failures trap but I don't know how to test for that right now.
CHECK_NOT_EQ(invoke<void*>(cageWithoutAuthentication, taggedNotCagedPtr), taggedNotCagedPtr);
- CHECK_NOT_EQ(untagArrayPtr(invoke<void*>(cageWithoutAuthentication, taggedNotCagedPtr), 1), notCagedPtr);
+ CHECK_NOT_EQ(invoke<void*>(cageWithoutAuthentication, taggedNotCagedPtr), tagArrayPtr(notCagedPtr, 1));
CHECK_NOT_EQ(invoke<void*>(cageWithoutAuthentication, taggedNotCagedPtr), taggedPtr);
- CHECK_NOT_EQ(untagArrayPtr(invoke<void*>(cageWithoutAuthentication, taggedNotCagedPtr), 1), ptr);
+ CHECK_NOT_EQ(invoke<void*>(cageWithoutAuthentication, taggedNotCagedPtr), tagArrayPtr(ptr, 1));
}
Gigacage::free(Gigacage::Primitive, ptr);