Commit b971ab30 authored by Clemens Backes's avatar Clemens Backes Committed by V8 LUCI CQ

[traphandler] Fix test link errors on some MSan/ASan builds

Found these when compiling the arm64 simulator for MSan (Release) and
ASan (Debug and Release). Depending on the exact configuration (and
compiler), different functions will get inlined and different symbols
need to be available at link time.

1) Since GetRecoveredTrapCount is used in a unittest, it needs to be
   exported.

2) The thread-local g_thread_in_wasm_code cannot be exported on
   Windows, hence it cannot (safely) be used in unit tests. Use the
   {GetThreadInWasmThreadLocalAddress} function instead, which will
   return the address of that thread-local variable.

R=ahaas@chromium.org, mseaborn@chromium.org

Bug: v8:11955
Change-Id: I118f60c1580a8362f8232541576a1c41da7042bd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3049077Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75960}
parent 3c5705c6
...@@ -153,7 +153,7 @@ inline void ClearThreadInWasm() { ...@@ -153,7 +153,7 @@ inline void ClearThreadInWasm() {
bool RegisterDefaultTrapHandler(); bool RegisterDefaultTrapHandler();
TH_EXPORT_PRIVATE void RemoveTrapHandler(); TH_EXPORT_PRIVATE void RemoveTrapHandler();
size_t GetRecoveredTrapCount(); TH_EXPORT_PRIVATE size_t GetRecoveredTrapCount();
} // namespace trap_handler } // namespace trap_handler
} // namespace internal } // namespace internal
......
...@@ -23,15 +23,17 @@ constexpr uintptr_t kFakePc = 11; ...@@ -23,15 +23,17 @@ constexpr uintptr_t kFakePc = 11;
class SimulatorTrapHandlerTest : public TestWithIsolate { class SimulatorTrapHandlerTest : public TestWithIsolate {
public: public:
static void SetThreadInWasm() { void SetThreadInWasm() {
EXPECT_EQ(0, g_thread_in_wasm_code); EXPECT_EQ(0, *thread_in_wasm);
g_thread_in_wasm_code = 1; *thread_in_wasm = 1;
} }
static void ResetThreadInWasm() { void ResetThreadInWasm() {
EXPECT_EQ(1, g_thread_in_wasm_code); EXPECT_EQ(1, *thread_in_wasm);
g_thread_in_wasm_code = 0; *thread_in_wasm = 0;
} }
int* thread_in_wasm = trap_handler::GetThreadInWasmThreadLocalAddress();
}; };
TEST_F(SimulatorTrapHandlerTest, ProbeMemorySuccess) { TEST_F(SimulatorTrapHandlerTest, ProbeMemorySuccess) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment