Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
vm_image: windows-2022
sdk_platform: windows-amd64
scons_build_args: platform=x86-64 --no-clang werror=1 mingw_dir=mingw/mingw
scons_tests: small_tests medium_tests large_tests disable_tests=run_toolchain_python_tests
scons_tests: small_tests medium_tests large_tests
vpython: pyenv/Scripts/python
python_packages: pywin32
mingw_url: https://github.com/niXman/mingw-builds-binaries/releases/download/16.1.0-rt_v14-rev1/x86_64-16.1.0-release-posix-seh-msvcrt-rt_v14-rev1.7z
Expand All @@ -79,7 +79,7 @@ jobs:
vm_image: windows-2022
sdk_platform: windows-amd64
scons_build_args: platform=x86-64 --no-clang mingw=1 werror=1 mingw_dir=mingw/mingw
scons_tests: small_tests medium_tests large_tests disable_tests=run_toolchain_python_tests
scons_tests: small_tests medium_tests large_tests
vpython: pyenv/Scripts/python
python_packages: pywin32
mingw_url: https://github.com/niXman/mingw-builds-binaries/releases/download/16.1.0-rt_v14-rev1/x86_64-16.1.0-release-posix-seh-msvcrt-rt_v14-rev1.7z
Expand Down
2 changes: 1 addition & 1 deletion SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -2131,7 +2131,7 @@ def MakeBaseTrustedEnv(platform=None):
'tests/unittests/trusted/bits/build.scons',
'tests/unittests/trusted/platform_qualify/build.scons',
'tests/unittests/trusted/service_runtime/build.scons',
'toolchain_build/build.scons',
# 'toolchain_build/build.scons',
])

base_env.AddMethod(SDKInstallBin)
Expand Down
17 changes: 12 additions & 5 deletions src/trusted/service_runtime/nacl_syscall_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

#include "native_client/src/trusted/service_runtime/nacl_syscall_common.h"

#include "native_client/src/include/concurrency_ops.h"
#include "native_client/src/include/nacl_macros.h"
#include "native_client/src/include/portability_process.h"
#include "native_client/src/include/portability_string.h"
Expand Down Expand Up @@ -159,8 +160,6 @@ int32_t NaClSysExit(struct NaClAppThread *natp,

int32_t NaClSysThreadExit(struct NaClAppThread *natp,
uint32_t stack_flag_addr) {
uint32_t zero = 0;

NaClLog(4, "NaClSysThreadExit(0x%08"NACL_PRIxPTR", "
"0x%08"NACL_PRIx32"\n",
(uintptr_t) natp, stack_flag_addr);
Expand All @@ -170,10 +169,18 @@ int32_t NaClSysThreadExit(struct NaClAppThread *natp,
*/

if (0 != stack_flag_addr) {
if (!NaClCopyOutToUser(natp->nap, (uintptr_t) stack_flag_addr,
&zero, sizeof zero)) {
NaClLog(4, "NaClSysThreadExit: ignoring invalid stack_flag_addr\n");
uintptr_t sys_addr = NaClUserToSysAddrRange(natp->nap,
(uintptr_t) stack_flag_addr,
4);
if (sys_addr == kNaClBadAddress || sys_addr % 4 != 0) {
NaClLog(LOG_ERROR, "NaClSysThreadExit: invalid stack_flag_addr\n");
return -NACL_ABI_EINVAL;
}
NaClWriteMemoryBarrier();
/* Not using CopyOutToUser since this should be atomic */
NaClCopyTakeLock(natp->nap);
*(uint32_t *) sys_addr = 0;
NaClCopyDropLock(natp->nap);
}

NaClAppThreadTeardown(natp);
Expand Down
16 changes: 9 additions & 7 deletions src/trusted/service_runtime/nacl_tls_unittest.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,13 +115,15 @@ static thread_return_t OS_API_TYPE ThreadEntryPoint(thread_param_t p) {
++g_running_thread_count;

/* Wait for all threads to be running. */
WaitForThreads(param->total_num_threads);

/*
* All of the threads have started and have written to their own TLS.
* Read our TLS and give it back to the main thread.
*/
param->p_tls_data_return[my_thread_num] = tls_data;
if (WaitForThreads(param->total_num_threads)) {
/*
* All of the threads have started and have written to their own TLS.
* Read our TLS and give it back to the main thread.
*/
param->p_tls_data_return[my_thread_num] = tls_data;
} else {
NaClLog(LOG_ERROR, "WaitForThreads timed out\n");
}

return 0;
}
Expand Down
Loading