Skip to content

Commit 84ec25f

Browse files
authored
Merge pull request #35173 from am11/feature/solaris/coreclr-port-without-libunwind-changes
Port CoreCLR to SunOS
2 parents cf1668d + c4bc754 commit 84ec25f

File tree

42 files changed

+290
-75
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+290
-75
lines changed

eng/native/configurecompiler.cmake

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,10 @@ elseif(CLR_CMAKE_HOST_FREEBSD)
183183
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
184184
add_link_options(LINKER:--build-id=sha1)
185185
elseif(CLR_CMAKE_HOST_SUNOS)
186-
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /opt/local/include)
187-
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /opt/local/lib)
186+
add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-Wa,--noexecstack>)
188187
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
189188
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector")
189+
add_definitions(-D__EXTENSIONS__)
190190
endif()
191191

192192
#------------------------------------
@@ -367,17 +367,13 @@ if(CLR_CMAKE_TARGET_UNIX)
367367
add_definitions(-DDISABLE_CONTRACTS)
368368
if(CLR_CMAKE_TARGET_OSX)
369369
add_definitions(-DTARGET_OSX)
370-
endif(CLR_CMAKE_TARGET_OSX)
371-
if(CLR_CMAKE_TARGET_FREEBSD)
370+
elseif(CLR_CMAKE_TARGET_FREEBSD)
372371
add_definitions(-DTARGET_FREEBSD)
373-
endif(CLR_CMAKE_TARGET_FREEBSD)
374-
if(CLR_CMAKE_TARGET_LINUX)
372+
elseif(CLR_CMAKE_TARGET_LINUX)
375373
add_definitions(-DTARGET_LINUX)
376-
endif(CLR_CMAKE_TARGET_LINUX)
377-
if(CLR_CMAKE_TARGET_NETBSD)
374+
elseif(CLR_CMAKE_TARGET_NETBSD)
378375
add_definitions(-DTARGET_NETBSD)
379-
endif(CLR_CMAKE_TARGET_NETBSD)
380-
if(CLR_CMAKE_TARGET_ANDROID)
376+
elseif(CLR_CMAKE_TARGET_ANDROID)
381377
add_definitions(-DTARGET_ANDROID)
382378
endif()
383379
else(CLR_CMAKE_TARGET_UNIX)

src/coreclr/src/debug/daccess/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ target_precompile_header(TARGET daccess HEADER stdafx.h)
4141

4242
add_dependencies(daccess eventing_headers)
4343

44-
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD)
44+
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
4545
add_definitions(-DUSE_DAC_TABLE_RVA)
4646

4747
add_custom_command(
@@ -63,4 +63,4 @@ if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD)
6363
)
6464

6565
add_dependencies(daccess dactablerva_header)
66-
endif(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD)
66+
endif(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)

src/coreclr/src/dlls/dbgshim/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ if(CLR_CMAKE_HOST_OSX)
4040
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
4141
endif(CLR_CMAKE_HOST_OSX)
4242

43+
if(CLR_CMAKE_HOST_SUNOS)
44+
# Add linker exports file option
45+
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
46+
endif(CLR_CMAKE_HOST_SUNOS)
47+
4348
add_library_clr(dbgshim SHARED ${DBGSHIM_SOURCES})
4449

4550
if(CLR_CMAKE_HOST_UNIX)

src/coreclr/src/dlls/mscordac/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ else(CLR_CMAKE_HOST_WIN32)
3131
# Add dependency on export file
3232
add_custom_target(mscordaccore_exports DEPENDS ${EXPORTS_FILE})
3333

34-
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD)
34+
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
3535
generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
36-
endif(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD)
36+
endif(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
3737

3838
if(CLR_CMAKE_HOST_LINUX)
3939

@@ -96,6 +96,11 @@ if(CLR_CMAKE_HOST_OSX)
9696
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
9797
endif(CLR_CMAKE_HOST_OSX)
9898

99+
if(CLR_CMAKE_HOST_SUNOS)
100+
# Add linker exports file option
101+
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
102+
endif(CLR_CMAKE_HOST_SUNOS)
103+
99104
# Create object library to enable creation of proper dependency of mscordaccore.exp on mscordac.obj and
100105
# mscordaccore on both the mscordaccore.exp and mscordac.obj.
101106
_add_library(mscordacobj OBJECT mscordac.cpp)

src/coreclr/src/dlls/mscordbi/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ if(CLR_CMAKE_HOST_OSX)
5555
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
5656
endif(CLR_CMAKE_HOST_OSX)
5757

58+
if(CLR_CMAKE_HOST_SUNOS)
59+
# Add linker exports file option
60+
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
61+
endif(CLR_CMAKE_HOST_SUNOS)
62+
5863
add_library_clr(mscordbi SHARED ${MSCORDBI_SOURCES})
5964
target_precompile_header(TARGET mscordbi HEADER stdafx.h)
6065

src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,12 @@ else(CLR_CMAKE_HOST_WIN32)
5959

6060
if(CLR_CMAKE_TARGET_ANDROID AND CLR_CMAKE_HOST_ARCH_ARM)
6161
set(EXPORTS_LINKER_OPTION "${EXPORTS_LINKER_OPTION} -Wl,--no-warn-shared-textrel")
62-
endif()
62+
endif(CLR_CMAKE_TARGET_ANDROID AND CLR_CMAKE_HOST_ARCH_ARM)
63+
64+
if(CLR_CMAKE_HOST_SUNOS)
65+
# Add linker exports file option
66+
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
67+
endif(CLR_CMAKE_HOST_SUNOS)
6368

6469
endif (CLR_CMAKE_HOST_WIN32)
6570

src/coreclr/src/gc/env/gcenv.base.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
#endif // _MSC_VER
1313

1414
#if !defined(_MSC_VER)
15+
#ifdef __sun
16+
#include <alloca.h>
17+
#endif
1518
#define _alloca alloca
1619
#endif //_MSC_VER
1720

src/coreclr/src/gc/unix/cgroup.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ class CGroup
132132
// modes because both of those involve cgroup v1 controllers managing
133133
// resources.
134134

135+
#if !HAVE_NON_LEGACY_STATFS
136+
return 0;
137+
#else
138+
135139
struct statfs stats;
136140
int result = statfs("/sys/fs/cgroup", &stats);
137141
if (result != 0)
@@ -145,6 +149,7 @@ class CGroup
145149
assert(!"Unexpected file system type for /sys/fs/cgroup");
146150
return 0;
147151
}
152+
#endif
148153
}
149154

150155
static bool IsCGroup1MemorySubsystem(const char *strTok){

src/coreclr/src/gc/unix/config.gc.h.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#cmakedefine01 HAVE_SCHED_GETCPU
1515
#cmakedefine01 HAVE_NUMA_H
1616
#cmakedefine01 HAVE_VM_ALLOCATE
17+
#cmakedefine01 HAVE_SWAPCTL
1718
#cmakedefine01 HAVE_SYSCTLBYNAME
1819
#cmakedefine01 HAVE_PTHREAD_CONDATTR_SETCLOCK
1920
#cmakedefine01 HAVE_MACH_ABSOLUTE_TIME

src/coreclr/src/gc/unix/configure.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ check_library_exists(${PTHREAD_LIBRARY} pthread_getaffinity_np "" HAVE_PTHREAD_G
9898

9999
check_cxx_symbol_exists(_SC_PHYS_PAGES unistd.h HAVE__SC_PHYS_PAGES)
100100
check_cxx_symbol_exists(_SC_AVPHYS_PAGES unistd.h HAVE__SC_AVPHYS_PAGES)
101+
check_cxx_symbol_exists(swapctl sys/swap.h HAVE_SWAPCTL)
101102
check_function_exists(sysctl HAVE_SYSCTL)
102103
check_function_exists(sysinfo HAVE_SYSINFO)
103104
check_function_exists(sysconf HAVE_SYSCONF)

0 commit comments

Comments
 (0)