--- a/lldb/source/Host/common/Host.cpp +++ b/lldb/source/Host/common/Host.cpp @@ -27,7 +27,7 @@ #include #include -#elif defined (__linux__) || defined(__FreeBSD_kernel__) +#elif defined (__linux__) || defined(__GLIBC__) /* Linux or the FreeBSD kernel with glibc (Debian KFreeBSD for example) */ #include @@ -524,7 +524,7 @@ { } -#if !defined (__APPLE__) && !defined (__FreeBSD__) && !defined (__linux__) // see macosx/Host.mm +#if !defined (__APPLE__) && !defined (__FreeBSD__) && !defined (__FreeBSD_kernel__) && !defined (__linux__) // see macosx/Host.mm void Host::ThreadCreated (const char *thread_name) @@ -544,7 +544,7 @@ return 0; } -#endif // #if !defined (__APPLE__) && !defined (__FreeBSD__) && !defined (__linux__) +#endif // #if !defined (__APPLE__) && !defined (__FreeBSD__) && !defined (__FreeBSD_kernel__) && !defined (__linux__) struct HostThreadCreateInfo { @@ -684,7 +684,7 @@ return true; } return false; -#elif defined (__linux__) +#elif defined (__linux__) || defined (__GLIBC__) void *fn = dlsym (RTLD_DEFAULT, "pthread_setname_np"); if (fn) { @@ -742,7 +742,7 @@ exe_path[len] = 0; g_program_filespec.SetFile(exe_path, false); } -#elif defined (__FreeBSD__) +#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__) int exe_path_mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, getpid() }; size_t exe_path_size; if (sysctl(exe_path_mib, 4, NULL, &exe_path_size, NULL, 0) == 0) @@ -1180,7 +1180,7 @@ return NULL; } -#if !defined (__APPLE__) && !defined (__FreeBSD__) // see macosx/Host.mm +#if !defined (__APPLE__) && !defined (__FreeBSD__) && !defined (__FreeBSD_kernel__) // see macosx/Host.mm bool Host::GetOSBuildString (std::string &s) { @@ -1229,7 +1229,7 @@ } #endif // #if !defined (__APPLE__) && !defined(__linux__) -#if !defined (__APPLE__) && !defined (__FreeBSD__) && !defined(__linux__) +#if !defined (__APPLE__) && !defined (__FreeBSD__) && !defined (__FreeBSD_kernel__) && !defined(__linux__) bool Host::GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &process_info) { @@ -1443,7 +1443,7 @@ static uint32_t g_num_cores = UINT32_MAX; if (g_num_cores == UINT32_MAX) { -#if defined(__APPLE__) or defined (__linux__) or defined (__FreeBSD__) +#if defined(__APPLE__) or defined (__linux__) or defined (__FreeBSD__) or defined (__FreeBSD_kernel__) g_num_cores = ::sysconf(_SC_NPROCESSORS_ONLN); --- a/Makefile.rules +++ b/Makefile.rules @@ -275,10 +275,12 @@ BuildMode := Release # Don't use -fomit-frame-pointer on Darwin or FreeBSD. ifneq ($(HOST_OS),FreeBSD) + ifneq ($(HOST_OS),GNU/kFreeBSD) ifneq ($(HOST_OS),Darwin) OmitFramePointer := -fomit-frame-pointer endif endif + endif CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) C.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) @@ -1454,7 +1456,7 @@ endif endif -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux NetBSD FreeBSD GNU)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux NetBSD FreeBSD GNU/kFreeBSD GNU)) ifneq ($(ARCH), Mips) LD.Flags += -Wl,--version-script=$(LLVM_SRC_ROOT)/autoconf/ExportMap.map endif --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -222,11 +222,16 @@ llvm_cv_no_link_all_option="-Wl,-noall_load" llvm_cv_os_type="Minix" llvm_cv_platform_type="Unix" ;; - *-*-freebsd* | *-*-kfreebsd-gnu) + *-*-freebsd*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" llvm_cv_os_type="FreeBSD" llvm_cv_platform_type="Unix" ;; + *-*-kfreebsd-gnu) + llvm_cv_link_all_option="-Wl,--whole-archive" + llvm_cv_no_link_all_option="-Wl,--no-whole-archive" + llvm_cv_os_type="GNU/kFreeBSD" + llvm_cv_platform_type="Unix" ;; *-*-openbsd*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" @@ -317,8 +322,10 @@ llvm_cv_target_os_type="Darwin" ;; *-*-minix*) llvm_cv_target_os_type="Minix" ;; - *-*-freebsd* | *-*-kfreebsd-gnu) + *-*-freebsd*) llvm_cv_target_os_type="FreeBSD" ;; + *-*-kfreebsd-gnu) + llvm_cv_target_os_type="GNU/kFreeBSD" ;; *-*-openbsd*) llvm_cv_target_os_type="OpenBSD" ;; *-*-netbsd*) --- a/clang/tools/libclang/Makefile +++ b/clang/tools/libclang/Makefile @@ -30,7 +30,7 @@ include $(CLANG_LEVEL)/Makefile # Add soname to the library. -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD GNU)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD GNU GNU/kFreeBSD)) LDFLAGS += -Wl,-soname,lib$(LIBRARYNAME)$(SHLIBEXT).$(SONAME_MAJOR) endif --- a/configure +++ b/configure @@ -3824,11 +3824,16 @@ llvm_cv_no_link_all_option="-Wl,-noall_load" llvm_cv_os_type="Minix" llvm_cv_platform_type="Unix" ;; - *-*-freebsd* | *-*-kfreebsd-gnu) + *-*-freebsd*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" llvm_cv_os_type="FreeBSD" llvm_cv_platform_type="Unix" ;; + *-*-kfreebsd-gnu) + llvm_cv_link_all_option="-Wl,--whole-archive" + llvm_cv_no_link_all_option="-Wl,--no-whole-archive" + llvm_cv_os_type="GNU/kFreeBSD" + llvm_cv_platform_type="Unix" ;; *-*-openbsd*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" @@ -3925,8 +3930,10 @@ llvm_cv_target_os_type="Darwin" ;; *-*-minix*) llvm_cv_target_os_type="Minix" ;; - *-*-freebsd* | *-*-kfreebsd-gnu) + *-*-freebsd*) llvm_cv_target_os_type="FreeBSD" ;; + *-*-kfreebsd-gnu) + llvm_cv_target_os_type="GNU/kFreeBSD" ;; *-*-openbsd*) llvm_cv_target_os_type="OpenBSD" ;; *-*-netbsd*) --- a/lldb/lib/Makefile +++ b/lldb/lib/Makefile @@ -99,7 +99,7 @@ lldbPluginDynamicLoaderMacOSX.a endif -ifeq ($(HOST_OS),FreeBSD) +ifneq (,$(filter $(HOST_OS), FreeBSD GNU/kFreeBSD)) USEDLIBS += lldbHostFreeBSD.a \ lldbPluginProcessPOSIX.a \ lldbPluginProcessFreeBSD.a @@ -132,7 +132,7 @@ endif endif -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux GNU)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux GNU GNU/kFreeBSD)) # Include everything from the .a's into the shared library. ProjLibsOptions := -Wl,--whole-archive $(ProjLibsOptions) \ -Wl,--no-whole-archive --- a/lldb/source/Host/Makefile +++ b/lldb/source/Host/Makefile @@ -21,7 +21,7 @@ DIRS += linux endif -ifeq ($(HOST_OS),FreeBSD) +ifneq (,$(filter $(HOST_OS), FreeBSD GNU/kFreeBSD)) DIRS += freebsd endif --- a/lldb/source/Plugins/Platform/Makefile +++ b/lldb/source/Plugins/Platform/Makefile @@ -24,5 +24,9 @@ # ifeq ($(HOST_OS),FreeBSD) # DIRS += FreeBSD # endif +# +# ifeq ($(HOST_OS),GNU/kFreeBSD) +# DIRS += FreeBSD +# endif include $(LLDB_LEVEL)/Makefile --- a/lldb/source/Plugins/Process/POSIX/Makefile +++ b/lldb/source/Plugins/Process/POSIX/Makefile @@ -24,7 +24,7 @@ CPPFLAGS += -Wno-extended-offsetof endif -ifeq ($(HOST_OS),FreeBSD) +ifneq (,$(filter $(HOST_OS), FreeBSD GNU/kFreeBSD)) # Extend the include path so we may locate ProcessMonitor CPPFLAGS += -I$(PROJ_SRC_DIR)/$(LLDB_LEVEL)/source/Plugins/Process/FreeBSD endif --- a/projects/sample/Makefile.llvm.rules +++ b/projects/sample/Makefile.llvm.rules @@ -208,10 +208,12 @@ BuildMode := Release # Don't use -fomit-frame-pointer on Darwin or FreeBSD. ifneq ($(HOST_OS),FreeBSD) + ifneq ($(HOST_OS),GNU/kFreeBSD) ifneq ($(HOST_OS),Darwin) OmitFramePointer := -fomit-frame-pointer endif endif + endif # Darwin requires -fstrict-aliasing to be explicitly enabled. # Avoid -fstrict-aliasing on Darwin for now, there are unresolved issues @@ -1372,7 +1374,7 @@ endif endif -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux NetBSD FreeBSD)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux NetBSD FreeBSD GNU/kFreeBSD)) ifneq ($(ARCH), Mips) LD.Flags += -Wl,--version-script=$(PROJ_SRC_ROOT)/autoconf/ExportMap.map endif --- a/tools/llvm-shlib/Makefile +++ b/tools/llvm-shlib/Makefile @@ -69,18 +69,18 @@ endif endif -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD OpenBSD GNU Bitrig)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD GNU/kFreeBSD OpenBSD GNU Bitrig)) # Include everything from the .a's into the shared library. LLVMLibsOptions := -Wl,--whole-archive $(LLVMLibsOptions) \ -Wl,--no-whole-archive endif -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD GNU)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD GNU/kFreeBSD GNU)) # Add soname to the library. LLVMLibsOptions += -Wl,--soname,lib$(LIBRARYNAME)$(SHLIBEXT).1 -Wl,-Bsymbolic-functions endif -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux GNU)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux GNU GNU/kFreeBSD)) # Don't allow unresolved symbols. LLVMLibsOptions += -Wl,--no-undefined endif --- a/lldb/source/Plugins/Makefile +++ b/lldb/source/Plugins/Makefile @@ -36,7 +36,7 @@ DIRS += Process/Linux Process/POSIX endif -ifeq ($(HOST_OS),FreeBSD) +ifneq (,$(filter $(HOST_OS), FreeBSD GNU/kFreeBSD)) DIRS += Process/FreeBSD Process/POSIX endif --- a/lldb/tools/driver/Makefile +++ b/lldb/tools/driver/Makefile @@ -21,7 +21,7 @@ LLVMLibsOptions += -Wl,-sectcreate -Wl,__TEXT -Wl,__info_plist -Wl,"$(PROJ_SRC_DIR)/lldb-Info.plist" endif -ifeq ($(HOST_OS),Linux) +ifneq (,$(filter $(HOST_OS), Linux GNU/kFreeBSD)) LLVMLibsOptions += -Wl,-rpath,$(LibDir) endif --- a/lldb/tools/lldb-platform/Makefile +++ b/lldb/tools/lldb-platform/Makefile @@ -18,6 +18,6 @@ LLVMLibsOptions += -Wl,-rpath,@loader_path/../lib/ endif -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD)) +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD GNU/kFreeBSD)) LLVMLibsOptions += -Wl,-rpath,$(LibDir) endif --- a/lldb/source/Host/common/Host.cpp +++ b/lldb/source/Host/common/Host.cpp @@ -1569,7 +1569,7 @@ Host::RunShellCommand (const char *command, return error; } -#if defined(__linux__) or defined(__FreeBSD__) +#if defined(__linux__) || defined(__FreeBSD__) || defined(__GLIBC__) // The functions below implement process launching via posix_spawn() for Linux // and FreeBSD.