1
0
Fork 0
mirror of https://github.com/VSadov/Satori.git synced 2025-06-09 17:44:48 +09:00

Fix build issues with clang18 (#94782)

* Fixed build issues with clang18

* Convert use of VLAs to alloca

* Enable warnings for VLAs

* Convert VLA to alloca in Apple specific code
This commit is contained in:
Raphtaliyah 2023-11-16 15:39:13 +01:00 committed by GitHub
parent 883ffc4d18
commit 487d7f010b
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 9 deletions

View file

@ -564,6 +564,11 @@ if (CLR_CMAKE_HOST_UNIX)
add_compile_options(-Wimplicit-fallthrough)
endif()
# VLAs are non standard in C++, aren't available on Windows and
# are a warning by default since clang 18.
# For consistency, enable warnings for all compiler versions.
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wvla>)
#These seem to indicate real issues
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-Wno-invalid-offsetof>)

View file

@ -631,9 +631,9 @@ bool GCToOSInterface::VirtualCommit(void* address, size_t size, uint16_t node)
if ((int)node <= g_highestNumaNode)
{
int usedNodeMaskBits = g_highestNumaNode + 1;
int nodeMaskLength = (usedNodeMaskBits + sizeof(unsigned long) - 1) / sizeof(unsigned long);
unsigned long nodeMask[nodeMaskLength];
memset(nodeMask, 0, sizeof(nodeMask));
int nodeMaskLength = usedNodeMaskBits + sizeof(unsigned long) - 1;
unsigned long* nodeMask = (unsigned long*)alloca(nodeMaskLength);
memset(nodeMask, 0, nodeMaskLength);
int index = node / sizeof(unsigned long);
nodeMask[index] = ((unsigned long)1) << (node & (sizeof(unsigned long) - 1));
@ -1189,10 +1189,10 @@ uint64_t GetAvailablePhysicalMemory()
#elif defined(__FreeBSD__)
size_t inactive_count = 0, laundry_count = 0, free_count = 0;
size_t sz = sizeof(inactive_count);
sysctlbyname("vm.stats.vm.v_inactive_count", &inactive_count, &sz, NULL, 0);
sysctlbyname("vm.stats.vm.v_inactive_count", &inactive_count, &sz, NULL, 0);
sz = sizeof(laundry_count);
sysctlbyname("vm.stats.vm.v_laundry_count", &laundry_count, &sz, NULL, 0);
sysctlbyname("vm.stats.vm.v_laundry_count", &laundry_count, &sz, NULL, 0);
sz = sizeof(free_count);
sysctlbyname("vm.stats.vm.v_free_count", &free_count, &sz, NULL, 0);

View file

@ -399,8 +399,8 @@ GetTempPathW(
return 0;
}
char TempBuffer[nBufferLength > 0 ? nBufferLength : 1];
DWORD dwRetVal = GetTempPathA( nBufferLength, TempBuffer );
char* tempBuffer = (char*)alloca(nBufferLength > 0 ? nBufferLength : 1);
DWORD dwRetVal = GetTempPathA( nBufferLength, tempBuffer );
if ( dwRetVal >= nBufferLength )
{
@ -411,7 +411,7 @@ GetTempPathW(
else if ( dwRetVal != 0 )
{
/* Convert to wide. */
if ( 0 == MultiByteToWideChar( CP_ACP, 0, TempBuffer, -1,
if ( 0 == MultiByteToWideChar( CP_ACP, 0, tempBuffer, -1,
lpBuffer, dwRetVal + 1 ) )
{
ASSERT( "An error occurred while converting the string to wide.\n" );

View file

@ -426,6 +426,7 @@ function_name() to call the system's implementation
#undef va_start
#undef va_end
#undef va_copy
#undef va_arg
#undef stdin
#undef stdout
#undef stderr

View file

@ -37,7 +37,7 @@ static inline char* minipal_getexepath(void)
return NULL;
}
char path_buf[path_length];
char* path_buf = (char*)alloca(path_length);
if (_NSGetExecutablePath(path_buf, &path_length) != 0)
{
errno = EINVAL;