Title: [294788] trunk/Source
Revision
294788
Author
[email protected]
Date
2022-05-24 21:43:31 -0700 (Tue, 24 May 2022)

Log Message

Use dladdr to get labels instead of stashing them in the JITOperationAnnotation.
https://bugs.webkit.org/show_bug.cgi?id=240895

Reviewed by Saam Barati.

We no longer need to stash these label strings in the JITOperationAnnotations.

This change also fixes an ASAN crasher.  As such, we can re-enable
ENABLE(JIT_OPERATION_DISASSEMBLY) even when ASAN_ENABLED.

* Source/_javascript_Core/assembler/JITOperationList.cpp:
(JSC::JITOperationList::addDisassemblyLabels):
* Source/_javascript_Core/assembler/JITOperationValidation.h:
* Source/WTF/wtf/PlatformCallingConventions.h:
* Source/WTF/wtf/PlatformEnable.h:

Canonical link: https://commits.webkit.org/250947@main

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/assembler/JITOperationList.cpp (294787 => 294788)


--- trunk/Source/_javascript_Core/assembler/JITOperationList.cpp	2022-05-25 04:03:14 UTC (rev 294787)
+++ trunk/Source/_javascript_Core/assembler/JITOperationList.cpp	2022-05-25 04:43:31 UTC (rev 294788)
@@ -33,6 +33,11 @@
 #include "Opcode.h"
 #include "Options.h"
 
+#if HAVE(DLADDR)
+#include <cxxabi.h>
+#include <dlfcn.h>
+#endif
+
 namespace JSC {
 
 #if ENABLE(JIT_OPERATION_VALIDATION) || ENABLE(JIT_OPERATION_DISASSEMBLY)
@@ -114,28 +119,26 @@
 LLINT_DECLARE_ROUTINE_VALIDATE(normal_osr_exit_trampoline);
 LLINT_DECLARE_ROUTINE_VALIDATE(fuzzer_return_early_from_loop_hint);
 
-#if ENABLE(JIT_OPERATION_VALIDATION) && ENABLE(JIT_OPERATION_DISASSEMBLY)
-#define LLINT_OP_EXTRAS(validateLabel, nameStr) bitwise_cast<void*>(validateLabel), nameStr
-#elif ENABLE(JIT_OPERATION_VALIDATION)
-#define LLINT_OP_EXTRAS(validateLabel, nameStr) bitwise_cast<void*>(validateLabel)
+#if ENABLE(JIT_OPERATION_VALIDATION)
+#define LLINT_OP_EXTRAS(validateLabel) bitwise_cast<void*>(validateLabel)
 #else // ENABLE(JIT_OPERATION_DISASSEMBLY)
-#define LLINT_OP_EXTRAS(validateLabel, nameStr) nameStr
+#define LLINT_OP_EXTRAS(validateLabel)
 #endif
 
 #define LLINT_ROUTINE(functionName) { \
         bitwise_cast<void*>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(functionName)), \
-        LLINT_OP_EXTRAS(LLINT_ROUTINE_VALIDATE(functionName), #functionName) \
+        LLINT_OP_EXTRAS(LLINT_ROUTINE_VALIDATE(functionName)) \
     },
 
 #define LLINT_OP(name) { \
         bitwise_cast<void*>(LLInt::getCodeFunctionPtr<CFunctionPtrTag>(name)), \
-        LLINT_OP_EXTRAS(LLINT_RETURN_VALIDATE(name), #name) \
+        LLINT_OP_EXTRAS(LLINT_RETURN_VALIDATE(name)) \
     }, { \
         bitwise_cast<void*>(LLInt::getWide16CodeFunctionPtr<CFunctionPtrTag>(name)), \
-        LLINT_OP_EXTRAS(LLINT_RETURN_WIDE16_VALIDATE(name), #name " [wide16]") \
+        LLINT_OP_EXTRAS(LLINT_RETURN_WIDE16_VALIDATE(name)) \
     }, { \
         bitwise_cast<void*>(LLInt::getWide32CodeFunctionPtr<CFunctionPtrTag>(name)), \
-        LLINT_OP_EXTRAS(LLINT_RETURN_WIDE32_VALIDATE(name), #name " [wide32]") \
+        LLINT_OP_EXTRAS(LLINT_RETURN_WIDE32_VALIDATE(name)) \
     },
 
 #define LLINT_RETURN_LOCATION(name, ...) \
@@ -231,7 +234,9 @@
 #else
         auto* operation = current->operation;
 #endif
-        registerLabel(removeCodePtrTag(operation), current->name);
+        Dl_info info;
+        if (dladdr(operation, &info) && info.dli_sname)
+            registerLabel(removeCodePtrTag(operation), info.dli_sname);
     }
 }
 

Modified: trunk/Source/_javascript_Core/assembler/JITOperationValidation.h (294787 => 294788)


--- trunk/Source/_javascript_Core/assembler/JITOperationValidation.h	2022-05-25 04:03:14 UTC (rev 294787)
+++ trunk/Source/_javascript_Core/assembler/JITOperationValidation.h	2022-05-25 04:43:31 UTC (rev 294788)
@@ -52,9 +52,6 @@
 #if ENABLE(JIT_OPERATION_VALIDATION)
     void* operationWithValidation;
 #endif
-#if ENABLE(JIT_OPERATION_DISASSEMBLY)
-    const char* name;
-#endif
 };
 
 #if ENABLE(JIT_OPERATION_VALIDATION)

Modified: trunk/Source/WTF/wtf/PlatformCallingConventions.h (294787 => 294788)


--- trunk/Source/WTF/wtf/PlatformCallingConventions.h	2022-05-25 04:03:14 UTC (rev 294787)
+++ trunk/Source/WTF/wtf/PlatformCallingConventions.h	2022-05-25 04:43:31 UTC (rev 294788)
@@ -86,16 +86,14 @@
 
 #if ENABLE(JIT_OPERATION_VALIDATION) || ENABLE(JIT_OPERATION_DISASSEMBLY)
 
-#if ENABLE(JIT_OPERATION_VALIDATION) && ENABLE(JIT_OPERATION_DISASSEMBLY)
-#define JSC_ANNOTATE_JIT_OPERATION_EXTRAS(validateFunction, name) (void*)validateFunction, name
-#elif ENABLE(JIT_OPERATION_VALIDATION)
-#define JSC_ANNOTATE_JIT_OPERATION_EXTRAS(validateFunction, name) (void*)validateFunction
-#else // ENABLE(JIT_OPERATION_DISASSEMBLY)
-#define JSC_ANNOTATE_JIT_OPERATION_EXTRAS(validateFunction, name) name
+#if ENABLE(JIT_OPERATION_VALIDATION)
+#define JSC_ANNOTATE_JIT_OPERATION_EXTRAS(validateFunction) (void*)validateFunction
+#else
+#define JSC_ANNOTATE_JIT_OPERATION_EXTRAS(validateFunction)
 #endif
 
 #define JSC_ANNOTATE_JIT_OPERATION_INTERNAL(function) \
-    constexpr JSC::JITOperationAnnotation _JITTargetID_##function __attribute__((used, section("__DATA_CONST,__jsc_ops"))) = { (void*)function, JSC_ANNOTATE_JIT_OPERATION_EXTRAS(function##Validate, #function) };
+    constexpr JSC::JITOperationAnnotation _JITTargetID_##function __attribute__((used, section("__DATA_CONST,__jsc_ops"))) = { (void*)function, JSC_ANNOTATE_JIT_OPERATION_EXTRAS(function##Validate) };
 
 #define JSC_ANNOTATE_JIT_OPERATION(function) \
     JSC_DECLARE_AND_DEFINE_JIT_OPERATION_VALIDATION(function); \

Modified: trunk/Source/WTF/wtf/PlatformEnable.h (294787 => 294788)


--- trunk/Source/WTF/wtf/PlatformEnable.h	2022-05-25 04:03:14 UTC (rev 294787)
+++ trunk/Source/WTF/wtf/PlatformEnable.h	2022-05-25 04:43:31 UTC (rev 294788)
@@ -849,7 +849,7 @@
 #define ENABLE_JIT_OPERATION_VALIDATION 1
 #endif
 
-#if USE(APPLE_INTERNAL_SDK) && ENABLE(DISASSEMBLER) && CPU(ARM64E) && !ASAN_ENABLED
+#if USE(APPLE_INTERNAL_SDK) && ENABLE(DISASSEMBLER) && CPU(ARM64E) && HAVE(DLADDR)
 #define ENABLE_JIT_OPERATION_DISASSEMBLY 1
 #endif
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to