[llvm-commits] [PATCH] Add support for Bitrig, an OpenBSD fork.

Eric Christopher echristo at apple.com
Mon Aug 6 13:53:32 PDT 2012


Committed here:

	M	autoconf/config.guess
	M	autoconf/ltmain.sh
	M	autoconf/m4/libtool.m4
	M	configure
	M	include/llvm/ADT/Triple.h
	M	lib/Support/Mutex.cpp
	M	lib/Support/Triple.cpp
	M	lib/Support/Unix/Path.inc
	M	lib/Support/Unix/Process.inc
	M	lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
	M	tools/llvm-shlib/Makefile
Committed r161344

thanks!

-eric


>> On Aug 6, 2012, at 12:15 PM, David Hill <dhill at mindcry.org> wrote:
>> 
>>> On Mon, Aug 06, 2012 at 10:46:04AM -0700, Eric Christopher wrote:
>>>> 
>>>> On Aug 6, 2012, at 9:20 AM, David Hill <dhill at mindcry.org> wrote:
>>>> 
>>>>> 
>>>>> On Sat, Aug 04, 2012 at 09:22:40AM -0400, David Hill wrote:
>>>>>> On Wed, Aug 01, 2012 at 05:05:22PM -0700, Eli Friedman wrote:
>>>>>>> On Wed, Aug 1, 2012 at 7:30 AM, David Hill <dhill at mindcry.org> wrote:
>>>>>>>> Hello,
>>>>>>>> 
>>>>>>>> The attached patch allows LLVM to recognize Bitrig, an OpenBSD fork.
>>>>>>>> Clang bits to come after this has been accepted.
>>>>>>>> 
>>>>>>>> Please review.
>>>>>>> 
>>>>>>> I can't really review the autoconf changes.
>>>>>>> 
>>>>>>> +  // OpenBSD and Bitrig have buggy support for .quad in 32-bit mode, just split
>>>>>>> +  // into two .words.
>>>>>>> +  if ((T.getOS() == Triple::OpenBSD || T.getOS() == Triple::Bitrig) &&
>>>>>>> +       T.getArch() == Triple::x86)
>>>>>>> 
>>>>>>> Does Bitrig actually have this bug?  If so, why don't you just fix it?
>>>>>>> 
>>>>>>> -Eli
>>>>>> 
>>>>>> Ping
>>>>>> 
>>>>> 
>>>>> Any objections to this going in?
>>>> 
>>>> Seems like not, send me an up to date patch and I'll commit it.
>>>> 
>>>> -eric
>>> 
>>> Here you go:
>>> 
>>> diff --git a/autoconf/config.guess b/autoconf/config.guess
>>> index f7dd69e..dd6dcb3 100755
>>> --- a/autoconf/config.guess
>>> +++ b/autoconf/config.guess
>>> @@ -206,6 +206,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>>> 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
>>> 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
>>> 	exit ;;
>>> +    *:Bitrig:*:*)
>>> +	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
>>> +	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
>>> +	exit ;;
>>>    *:ekkoBSD:*:*)
>>> 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
>>> 	exit ;;
>>> diff --git a/autoconf/ltmain.sh b/autoconf/ltmain.sh
>>> index 2455278..21ace01 100644
>>> --- a/autoconf/ltmain.sh
>>> +++ b/autoconf/ltmain.sh
>>> @@ -1560,7 +1560,7 @@ EOF
>>> 	    # These systems don't actually have a C library (as such)
>>> 	    test "X$arg" = "X-lc" && continue
>>> 	    ;;
>>> -	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
>>> +	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
>>> 	    # Do not include libc due to us having libc/libc_r.
>>> 	    test "X$arg" = "X-lc" && continue
>>> 	    ;;
>>> @@ -1580,7 +1580,7 @@ EOF
>>> 	  esac
>>> 	elif test "X$arg" = "X-lc_r"; then
>>> 	 case $host in
>>> -	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
>>> +	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | -*-*-bitrig*)
>>> 	   # Do not include libc_r directly, use -pthread flag.
>>> 	   continue
>>> 	   ;;
>>> @@ -3464,7 +3464,7 @@ EOF
>>> 	  *-*-netbsd*)
>>> 	    # Don't link with libc until the a.out ld.so is fixed.
>>> 	    ;;
>>> -	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
>>> +	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
>>> 	    # Do not include libc due to us having libc/libc_r.
>>> 	    ;;
>>> 	  *-*-sco3.2v5* | *-*-sco5v6*)
>>> diff --git a/autoconf/m4/libtool.m4 b/autoconf/m4/libtool.m4
>>> index 36ac3d1..05af7a2 100644
>>> --- a/autoconf/m4/libtool.m4
>>> +++ b/autoconf/m4/libtool.m4
>>> @@ -176,7 +176,7 @@ old_postuninstall_cmds=
>>> 
>>> if test -n "$RANLIB"; then
>>>  case $host_os in
>>> -  openbsd*)
>>> +  openbsd* | bitrig*)
>>>    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
>>>    ;;
>>>  *)
>>> @@ -729,7 +729,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
>>>    lt_cv_sys_max_cmd_len=8192;
>>>    ;;
>>> 
>>> -  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
>>> +  netbsd* | freebsd* | openbsd* | darwin* | dragonfly* | bitrig*)
>>>    # This has been around since 386BSD, at least.  Likely further.
>>>    if test -x /sbin/sysctl; then
>>>      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
>>> @@ -1631,7 +1631,7 @@ nto-qnx*)
>>>  shlibpath_overrides_runpath=yes
>>>  ;;
>>> 
>>> -openbsd*)
>>> +openbsd* | bitrig*)
>>>  version_type=sunos
>>>  sys_lib_dlsearch_path_spec="/usr/lib"
>>>  need_lib_prefix=no
>>> @@ -3382,7 +3382,7 @@ case $host_os in
>>>    # C++ shared libraries are fairly broken
>>>    _LT_AC_TAGVAR(ld_shlibs, $1)=no
>>>    ;;
>>> -  openbsd*)
>>> +  openbsd* | bitrig*)
>>>    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
>>>    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
>>>    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
>>> @@ -6003,7 +6003,7 @@ _LT_EOF
>>>      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
>>>      ;;
>>> 
>>> -    openbsd*)
>>> +    openbsd* | bitrig*)
>>>      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
>>>      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
>>>      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
>>> diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h
>>> index a080200..7f7061a 100644
>>> --- a/include/llvm/ADT/Triple.h
>>> +++ b/include/llvm/ADT/Triple.h
>>> @@ -98,7 +98,8 @@ public:
>>>    Minix,
>>>    RTEMS,
>>>    NativeClient,
>>> -    CNK         // BG/P Compute-Node Kernel
>>> +    CNK,         // BG/P Compute-Node Kernel
>>> +    Bitrig
>>>  };
>>>  enum EnvironmentType {
>>>    UnknownEnvironment,
>>> diff --git a/lib/Support/Mutex.cpp b/lib/Support/Mutex.cpp
>>> index da5baab..4e4a026 100644
>>> --- a/lib/Support/Mutex.cpp
>>> +++ b/lib/Support/Mutex.cpp
>>> @@ -59,7 +59,8 @@ MutexImpl::MutexImpl( bool recursive)
>>>  errorcode = pthread_mutexattr_settype(&attr, kind);
>>>  assert(errorcode == 0);
>>> 
>>> -#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__)
>>> +#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && \
>>> +    !defined(__DragonFly__) && !defined(__Bitrig__)
>>>  // Make it a process local mutex
>>>  errorcode = pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_PRIVATE);
>>>  assert(errorcode == 0);
>>> diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp
>>> index 7b26ea9..cca549d 100644
>>> --- a/lib/Support/Triple.cpp
>>> +++ b/lib/Support/Triple.cpp
>>> @@ -124,6 +124,7 @@ const char *Triple::getOSTypeName(OSType Kind) {
>>>  case RTEMS: return "rtems";
>>>  case NativeClient: return "nacl";
>>>  case CNK: return "cnk";
>>> +  case Bitrig: return "bitrig";
>>>  }
>>> 
>>>  llvm_unreachable("Invalid OSType");
>>> @@ -293,6 +294,7 @@ static Triple::OSType parseOS(StringRef OSName) {
>>>    .StartsWith("rtems", Triple::RTEMS)
>>>    .StartsWith("nacl", Triple::NativeClient)
>>>    .StartsWith("cnk", Triple::CNK)
>>> +    .StartsWith("bitrig", Triple::Bitrig)
>>>    .Default(Triple::UnknownOS);
>>> }
>>> 
>>> diff --git a/lib/Support/Unix/Path.inc b/lib/Support/Unix/Path.inc
>>> index b41390a..6bddbdf 100644
>>> --- a/lib/Support/Unix/Path.inc
>>> +++ b/lib/Support/Unix/Path.inc
>>> @@ -260,7 +260,7 @@ Path::GetCurrentDirectory() {
>>>  return Path(pathname);
>>> }
>>> 
>>> -#if defined(__FreeBSD__) || defined (__NetBSD__) || \
>>> +#if defined(__FreeBSD__) || defined (__NetBSD__) || defined(__Bitrig__) || \
>>>    defined(__OpenBSD__) || defined(__minix) || defined(__FreeBSD_kernel__)
>>> static int
>>> test_dir(char buf[PATH_MAX], char ret[PATH_MAX],
>>> @@ -329,7 +329,7 @@ Path Path::GetMainExecutable(const char *argv0, void *MainAddr) {
>>>    if (realpath(exe_path, link_path))
>>>      return Path(link_path);
>>>  }
>>> -#elif defined(__FreeBSD__) || defined (__NetBSD__) || \
>>> +#elif defined(__FreeBSD__) || defined (__NetBSD__) || defined(__Bitrig__) || \
>>>      defined(__OpenBSD__) || defined(__minix) || defined(__FreeBSD_kernel__)
>>>  char exe_path[PATH_MAX];
>>> 
>>> diff --git a/lib/Support/Unix/Process.inc b/lib/Support/Unix/Process.inc
>>> index 174112e..5204147 100644
>>> --- a/lib/Support/Unix/Process.inc
>>> +++ b/lib/Support/Unix/Process.inc
>>> @@ -20,9 +20,10 @@
>>> #ifdef HAVE_SYS_RESOURCE_H
>>> #include <sys/resource.h>
>>> #endif
>>> -// DragonFly BSD has deprecated <malloc.h> for <stdlib.h> instead,
>>> -//  Unix.h includes this for us already.
>>> -#if defined(HAVE_MALLOC_H) && !defined(__DragonFly__)
>>> +// DragonFlyBSD, OpenBSD, and Bitrig have deprecated <malloc.h> for
>>> +// <stdlib.h> instead. Unix.h includes this for us already.
>>> +#if defined(HAVE_MALLOC_H) && !defined(__DragonFly__) && \
>>> +    !defined(__OpenBSD__) && !defined(__Bitrig__)
>>> #include <malloc.h>
>>> #endif
>>> #ifdef HAVE_MALLOC_MALLOC_H
>>> diff --git a/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp b/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
>>> index 49c07f3..b0acd7d 100644
>>> --- a/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
>>> +++ b/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
>>> @@ -91,9 +91,10 @@ X86ELFMCAsmInfo::X86ELFMCAsmInfo(const Triple &T) {
>>>  // Exceptions handling
>>>  ExceptionsType = ExceptionHandling::DwarfCFI;
>>> 
>>> -  // OpenBSD has buggy support for .quad in 32-bit mode, just split into two
>>> -  // .words.
>>> -  if (T.getOS() == Triple::OpenBSD && T.getArch() == Triple::x86)
>>> +  // OpenBSD and Bitrig have buggy support for .quad in 32-bit mode, just split
>>> +  // into two .words.
>>> +  if ((T.getOS() == Triple::OpenBSD || T.getOS() == Triple::Bitrig) &&
>>> +       T.getArch() == Triple::x86)
>>>    Data64bitsDirective = 0;
>>> }
>>> 
>>> diff --git a/tools/llvm-shlib/Makefile b/tools/llvm-shlib/Makefile
>>> index 75bee07..6d6c6e9 100644
>>> --- a/tools/llvm-shlib/Makefile
>>> +++ b/tools/llvm-shlib/Makefile
>>> @@ -63,7 +63,7 @@ ifeq ($(HOST_OS),Darwin)
>>>    endif
>>> endif
>>> 
>>> -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD OpenBSD GNU))
>>> +ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux FreeBSD OpenBSD GNU Bitrig))
>>>    # Include everything from the .a's into the shared library.
>>>    LLVMLibsOptions := -Wl,--whole-archive $(LLVMLibsOptions) \
>>>                       -Wl,--no-whole-archive
>> 
> <llvm.diff>




More information about the llvm-commits mailing list