Import llvm-gcc4, not yet linked to the build. This is a work in

progress, largely based on the gcc port in ports/lang/gcc/4.2.
Requested by jsg@.

It's somewhat usable on i386 (shared lib versions not yet properly
under control). Build on amd64 currently fails with -fPIC problems.

-- --
lvm-gcc is the LLVM C front end. It is a modified version of gcc
that compiles C/C++/ObjC programs into native objects, LLVM bitcode or
LLVM assembly language, depending upon the options.

By default, llvm-gcc compiles to native objects just like GCC does.
If the -emit-llvm option is given then it will generate LLVM bitcode
files instead. If -S (assembly) is also given, then it will generate
LLVM assembly.

Being derived from the GNU Compiler Collection, llvm-gcc has many of
gcc's features and accepts most of gcc's options. It handles a number
of gcc's extensions to the C programming language.
<sthen@zephyr:/usr/ports/mystuff/lang/llvm-gcc4:9>$CVS: ----------------------------------------------------------------------
This commit is contained in:
sthen 2009-06-22 22:37:31 +00:00
parent 443fb1c7ce
commit cb6a8938ed
100 changed files with 4612 additions and 0 deletions

83
lang/llvm-gcc4/Makefile Normal file
View File

@ -0,0 +1,83 @@
# $OpenBSD: Makefile,v 1.1.1.1 2009/06/22 22:37:31 sthen Exp $
# XXX WORK IN PROGRESS.
#ONLY_FOR_ARCHS = alpha i386 m68k sparc sparc64 powerpc vax amd64
ONLY_FOR_ARCHS = i386
# amd64 has an -fPIC problem
# others unknown at this time
COMMENT = gcc4 front-end for LLVM
LLVM_V = 2.6pre20090621
DISTNAME = llvm-gcc-4.2-${LLVM_V}.source
PKGNAME = ${DISTNAME:S/.source//:S/gcc-/gcc/}
EXTRACT_SUFX = .tar.bz2
SHARED_LIBS = ssp 0.0 \
stdc++ 6.9 # XXX not controllable yet
CATEGORIES = lang devel
HOMEPAGE = http://www.llvm.org/
# GPL
PERMIT_PACKAGE_CDROM = Yes
PERMIT_PACKAGE_FTP = Yes
PERMIT_DISTFILES_CDROM =Yes
PERMIT_DISTFILES_FTP = Yes
WANTLIB += c m pthread
USE_LIBTOOL = yes
MASTER_SITES = http://spacehopper.org/mirrors/
#MASTER_SITES = http://llvm.org/releases/${LLVM_V}/
MODULES = gcc4
LIB_DEPENDS = elf::devel/libelf
BUILD_DEPENDS = :llvm-${LLVM_V}:devel/llvm \
::devel/bison
MODGCC4_LANGS = c c++
MODGCC4_ARCHES =*
USE_GMAKE = Yes
CONFIGURE_STYLE = gnu
TARGLIB = ${PREFIX}/lib/llvm-gcc-${LLVM_V}
CONFIG = ${MACHINE_ARCH}-unknown-openbsd${OSREV}
SUBST_VARS = CONFIG LLVM_V
CONFIGURE_SCRIPT = ../configure
CONFIGURE_ARGS = --verbose \
--enable-llvm=${LOCALBASE} \
--disable-nls \
--with-system-zlib \
--disable-libmudflap \
--disable-libgomp \
--disable-tls \
--enable-threads=posix \
--program-prefix=llvm- \
--enable-languages=c,c++ \
--with-libiconv-prefix=${LOCALBASE} \
--libdir=${TARGLIB} \
--with-gxx-include-dir=${TARGLIB}/include/c++ \
--libexecdir=${TARGLIB} \
--infodir=${PREFIX}/llvm-gcc
CONFIGURE_ARGS += --enable-cpp
CONFIGURE_ARGS += --with-gnu-as
CONFIGURE_ARGS += --with-gnu-ld
CONFIGURE_ARGS += ${CONFIGURE_SHARED}
CONFIGURE_ARGS += --enable-checking
MODGNU_CONFIG_GUESS_DIRS = ${WRKSRC} ${WRKSRC}/gcc
WRKDIST = ${WRKDIR}/${DISTNAME:S/.source//}
WRKSRC = ${WRKDIST}/obj
post-extract:
@mkdir -p ${WRKSRC}/gcc
post-install:
@chown -R ${BINOWN}:${BINGRP} ${PREFIX}/lib/llvm-gcc-${LLVM_V}/gcc/${MACHINE_ARCH}-unknown-openbsd4.5/4.2.1/include
.include <bsd.port.mk>

5
lang/llvm-gcc4/distinfo Normal file
View File

@ -0,0 +1,5 @@
MD5 (llvm-gcc-4.2-2.6pre20090621.source.tar.bz2) = IJvZoqVFsEIEbAy7hCGL7w==
RMD160 (llvm-gcc-4.2-2.6pre20090621.source.tar.bz2) = iGSvxfQ7YcORbn+Y07O01CN6+28=
SHA1 (llvm-gcc-4.2-2.6pre20090621.source.tar.bz2) = HmvqmdcbGQ2/cPWh/0H2XdkoupA=
SHA256 (llvm-gcc-4.2-2.6pre20090621.source.tar.bz2) = gdpsY4dy69YSjbH4shnJa+zSEqMhS91BooAIUeT6GZA=
SIZE (llvm-gcc-4.2-2.6pre20090621.source.tar.bz2) = 41507560

View File

@ -0,0 +1,30 @@
$OpenBSD: patch-boehm-gc_Makefile_in,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/Makefile.in.orig Thu Nov 8 22:56:19 2007
+++ boehm-gc/Makefile.in Mon Jun 22 00:53:45 2009
@@ -83,6 +83,7 @@ CONFIG_CLEAN_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
@POWERPC_DARWIN_TRUE@am__objects_1 = powerpc_darwin_mach_dep.lo
+@OPENBSD_THREADS_TRUE@am__objects_1 = openbsd_stop_world.lo
am_libgcjgc_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo checksums.lo \
dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo \
headers.lo malloc.lo mallocx.lo mark.lo mark_rts.lo misc.lo \
@@ -191,6 +192,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
POWERPC_DARWIN_FALSE = @POWERPC_DARWIN_FALSE@
POWERPC_DARWIN_TRUE = @POWERPC_DARWIN_TRUE@
+OPENBSD_THREADS_FALSE = @OPENBSD_THREADS_FALSE@
+OPENBSD_THREADS_TRUE = @OPENBSD_THREADS_TRUE@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -259,8 +262,8 @@ AUTOMAKE_OPTIONS = cygnus subdir-objects
ACLOCAL_AMFLAGS = -I .. -I ../config
SUBDIRS = include
noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la
-@POWERPC_DARWIN_FALSE@asm_libgcjgc_sources =
@POWERPC_DARWIN_TRUE@asm_libgcjgc_sources = powerpc_darwin_mach_dep.s
+@OPENBSD_THREADS_TRUE@asm_libgcjgc_sources = openbsd_stop_world.c.s
libgcjgc_la_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c \
malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \

View File

@ -0,0 +1,63 @@
$OpenBSD: patch-boehm-gc_configure,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/configure.orig Mon May 19 10:28:07 2008
+++ boehm-gc/configure Tue Apr 21 17:28:23 2009
@@ -309,7 +309,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical mkinstalldirs INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CFLAGS CXXFLAGS CCAS CCASFLAGS AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GC_CFLAGS LN_S LIBTOOL CXXCPP CPPFLAGS THREADLIBS POWERPC_DARWIN_TRUE POWERPC_DARWIN_FALSE extra_ldflags_libgc EXTRA_TEST_LIBS target_all CPLUSPLUS_TRUE CPLUSPLUS_FALSE AM_CPPFLAGS addobjs addincludes addlibs addtests CPP EGREP MY_CFLAGS toolexecdir toolexeclibdir LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical mkinstalldirs INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CFLAGS CXXFLAGS CCAS CCASFLAGS AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GC_CFLAGS LN_S LIBTOOL CXXCPP CPPFLAGS THREADLIBS POWERPC_DARWIN_TRUE POWERPC_DARWIN_FALSE OPENBSD_THREADS_TRUE OPENBSD_THREADS_FALSE extra_ldflags_libgc EXTRA_TEST_LIBS target_all CPLUSPLUS_TRUE CPLUSPLUS_FALSE AM_CPPFLAGS addobjs addincludes addlibs addtests CPP EGREP MY_CFLAGS toolexecdir toolexeclibdir LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -5451,6 +5451,15 @@ _ACEOF
{ echo "$as_me:$LINENO: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&5
echo "$as_me: WARNING: \"Only HP-UX 11 POSIX threads are supported.\"" >&2;}
;;
+ *-*-openbsd*)
+ cat >>confdefs.h <<\_ACEOF
+#define GC_OPENBSD_THREADS 1
+_ACEOF
+
+ THREADDLLIBS=-pthread
+ INCLUDES="$INCLUDES -pthread"
+ openbsd_threads=true
+ ;;
*-*-kfreebsd*-gnu)
cat >>confdefs.h <<\_ACEOF
#define GC_FREEBSD_THREADS 1
@@ -5630,7 +5639,15 @@ else
POWERPC_DARWIN_FALSE=
fi
+if test x$openbsd_threads = xtrue; then
+ OPENBSD_THREADS_TRUE=
+ OPENBSD_THREADS_FALSE='#'
+else
+ OPENBSD_THREADS_TRUE='#'
+ OPENBSD_THREADS_FALSE=
+fi
+
# Darwin needs a few extra special tests to deal with variation in the
# system headers.
case "$host" in
@@ -6887,6 +6904,9 @@ _ACEOF
sparc-*-netbsd*)
machdep="sparc_netbsd_mach_dep.lo"
;;
+ sparc*-*-openbsd*)
+ machdep="sparc_mach_dep.lo"
+ ;;
sparc-sun-solaris2.3)
machdep="sparc_mach_dep.lo"
@@ -8482,6 +8502,8 @@ s,@CPPFLAGS@,$CPPFLAGS,;t t
s,@THREADLIBS@,$THREADLIBS,;t t
s,@POWERPC_DARWIN_TRUE@,$POWERPC_DARWIN_TRUE,;t t
s,@POWERPC_DARWIN_FALSE@,$POWERPC_DARWIN_FALSE,;t t
+s,@OPENBSD_THREADS_TRUE@,$OPENBSD_THREADS_TRUE,;t t
+s,@OPENBSD_THREADS_FALSE@,$OPENBSD_THREADS_FALSE,;t t
s,@extra_ldflags_libgc@,$extra_ldflags_libgc,;t t
s,@EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t
s,@target_all@,$target_all,;t t

View File

@ -0,0 +1,48 @@
$OpenBSD: patch-boehm-gc_dyn_load_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/dyn_load.c.orig Mon Sep 18 14:45:08 2006
+++ boehm-gc/dyn_load.c Thu Jan 29 17:20:51 2009
@@ -57,6 +57,7 @@
!defined(HPUX) && !(defined(LINUX) && defined(__ELF__)) && \
!defined(RS6000) && !defined(SCO_ELF) && !defined(DGUX) && \
!(defined(FREEBSD) && defined(__ELF__)) && \
+ !(defined(OPENBSD) && (defined(__ELF__) || defined(M68K))) && \
!(defined(NETBSD) && defined(__ELF__)) && !defined(HURD) && \
!defined(DARWIN)
--> We only know how to find data segments of dynamic libraries for the
@@ -87,9 +88,9 @@
#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
(defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
+ (defined(OPENBSD) && defined(__ELF__)) || \
(defined(NETBSD) && defined(__ELF__)) || defined(HURD)
# include <stddef.h>
-# include <elf.h>
# include <link.h>
#endif
@@ -103,7 +104,7 @@
# define ElfW(type) Elf64_##type
# endif
# else
-# ifdef NETBSD
+# if defined(NETBSD) || defined(OPENBSD)
# if ELFSIZE == 32
# define ElfW(type) Elf32_##type
# else
@@ -298,6 +299,7 @@ void GC_register_dynamic_libraries()
#if defined(LINUX) && defined(__ELF__) || defined(SCO_ELF) || \
(defined(FREEBSD) && defined(__ELF__)) || defined(DGUX) || \
+ (defined(OPENBSD) && defined(__ELF__)) || \
(defined(NETBSD) && defined(__ELF__)) || defined(HURD)
@@ -481,7 +483,7 @@ GC_bool GC_register_main_static_data()
/* This doesn't necessarily work in all cases, e.g. with preloaded
* dynamic libraries. */
-#if defined(NETBSD)
+#if defined(NETBSD) || defined(OPENBSD)
# include <sys/exec_elf.h>
/* for compatibility with 1.4.x */
# ifndef DT_DEBUG

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-boehm-gc_include_gc_config_h_in,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/include/gc_config.h.in.orig Thu Mar 12 12:32:48 2009
+++ boehm-gc/include/gc_config.h.in Thu Mar 12 12:33:31 2009
@@ -30,6 +30,9 @@
/* support FreeBSD threads */
#undef GC_FREEBSD_THREADS
+/* support OpenBSD threads */
+#undef GC_OPENBSD_THREADS
+
/* include support for gcj */
#undef GC_GCJ_SUPPORT

View File

@ -0,0 +1,24 @@
$OpenBSD: patch-boehm-gc_include_gc_config_macros_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/include/gc_config_macros.h.orig Thu Mar 5 17:41:35 2009
+++ boehm-gc/include/gc_config_macros.h Thu Mar 5 17:42:12 2009
@@ -21,7 +21,8 @@
defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
defined(GC_AIX_THREADS) || \
- (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__))
+ (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__)) || \
+ defined(GC_OPENBSD_THREADS)
# define GC_PTHREADS
# endif
@@ -49,6 +50,10 @@
# endif
# if defined(__APPLE__) && defined(__MACH__) && defined(__ppc__)
# define GC_DARWIN_THREADS
+# define GC_PTHREADS
+# endif
+# if !defined(GC_PTHREADS) && defined(__OpenBSD__)
+# define GC_OPENBSD_THREADS
# define GC_PTHREADS
# endif
# if !defined(GC_PTHREADS) && defined(__FreeBSD__)

View File

@ -0,0 +1,25 @@
$OpenBSD: patch-boehm-gc_include_gc_pthread_redirects_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/include/gc_pthread_redirects.h.orig Thu Mar 12 17:49:44 2009
+++ boehm-gc/include/gc_pthread_redirects.h Thu Mar 12 17:56:49 2009
@@ -52,7 +52,7 @@
int GC_pthread_create(pthread_t *new_thread,
const pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg);
-#ifndef GC_DARWIN_THREADS
+#if !defined(GC_DARWIN_THREADS) && !defined(GC_OPENBSD_THREADS)
int GC_pthread_sigmask(int how, const sigset_t *set, sigset_t *oset);
#endif
int GC_pthread_join(pthread_t thread, void **retval);
@@ -72,8 +72,11 @@
# define pthread_join GC_pthread_join
# define pthread_detach GC_pthread_detach
-#ifndef GC_DARWIN_THREADS
+#if !defined(GC_DARWIN_THREADS) && !defined(GC_OPENBSD_THREADS)
# define pthread_sigmask GC_pthread_sigmask
+#endif
+
+#ifndef GC_DARWIN_THREADS
# define dlopen GC_dlopen
#endif

View File

@ -0,0 +1,356 @@
$OpenBSD: patch-boehm-gc_include_private_gcconfig_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/include/private/gcconfig.h.orig Thu Nov 8 22:56:19 2007
+++ boehm-gc/include/private/gcconfig.h Mon Jun 22 00:53:47 2009
@@ -62,7 +62,7 @@
/* Determine the machine type: */
# if defined(__arm__) || defined(__thumb__)
# define ARM32
-# if !defined(LINUX) && !defined(NETBSD)
+# if !defined(LINUX) && !defined(NETBSD) && !defined(OPENBSD)
# define NOSYS
# define mach_type_known
# endif
@@ -77,14 +77,18 @@
# define HP
# define mach_type_known
# endif
-# if defined(OPENBSD) && defined(m68k)
-# define M68K
-# define mach_type_known
-# endif
# if defined(OPENBSD) && defined(__sparc__)
# define SPARC
# define mach_type_known
# endif
+# if defined(OPENBSD) && defined(__arm__)
+# define ARM32
+# define mach_type_known
+# endif
+# if defined(OPENBSD) && defined(__sh__)
+# define SH
+# define mach_type_known
+# endif
# if defined(NETBSD) && (defined(m68k) || defined(__m68k__))
# define M68K
# define mach_type_known
@@ -101,7 +105,7 @@
# define SH
# define mach_type_known
# endif
-# if defined(vax)
+# if defined(vax) || defined(__vax__)
# define VAX
# ifdef ultrix
# define ULTRIX
@@ -119,7 +123,7 @@
# if defined(nec_ews) || defined(_nec_ews)
# define EWS4800
# endif
-# if !defined(LINUX) && !defined(EWS4800) && !defined(NETBSD)
+# if !defined(LINUX) && !defined(EWS4800) && !defined(NETBSD) && !defined(OPENBSD)
# if defined(ultrix) || defined(__ultrix)
# define ULTRIX
# else
@@ -205,7 +209,7 @@
# if defined(_PA_RISC1_0) || defined(_PA_RISC1_1) || defined(_PA_RISC2_0) \
|| defined(hppa) || defined(__hppa__)
# define HP_PA
-# if !defined(LINUX) && !defined(HPUX)
+# if !defined(LINUX) && !defined(HPUX) && !defined(OPENBSD)
# define HPUX
# endif
# define mach_type_known
@@ -226,6 +230,10 @@
# define I386
# define mach_type_known
# endif
+# if defined(OPENBSD) && defined(__amd64__)
+# define X86_64
+# define mach_type_known
+# endif
# if defined(LINUX) && defined(__x86_64__)
# define X86_64
# define mach_type_known
@@ -297,6 +305,11 @@
# define MACOS
# define mach_type_known
# endif
+# if defined(__OpenBSD__) && (defined(__powerpc__))
+# define POWERPC
+# define OPENBSD
+# define mach_type_known
+# endif
# if defined(macosx) || (defined(__APPLE__) && defined(__MACH__))
# define DARWIN
# if defined(__ppc__) || defined(__ppc64__)
@@ -646,18 +659,6 @@
# ifdef M68K
# define MACH_TYPE "M68K"
# define ALIGNMENT 2
-# ifdef OPENBSD
-# define OS_TYPE "OPENBSD"
-# define HEURISTIC2
-# ifdef __ELF__
-# define DATASTART GC_data_start
-# define DYNAMIC_LOADING
-# else
- extern char etext[];
-# define DATASTART ((ptr_t)(etext))
-# endif
-# define USE_GENERIC_PUSH_REGS
-# endif
# ifdef NETBSD
# define OS_TYPE "NETBSD"
# define HEURISTIC2
@@ -831,6 +832,24 @@
should be looked into some more */
# define NO_PTHREAD_TRYLOCK
# endif
+# ifdef OPENBSD
+# define OS_TYPE "OPENBSD"
+# define ALIGNMENT 4
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 268
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int __data_start[];
+# define DATASTART ((ptr_t)(__data_start))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
+# endif
# ifdef FREEBSD
# define ALIGNMENT 4
# define OS_TYPE "FREEBSD"
@@ -989,9 +1008,20 @@
# endif
# ifdef OPENBSD
# define OS_TYPE "OPENBSD"
-# define STACKBOTTOM ((ptr_t) 0xf8000000)
- extern int etext[];
-# define DATASTART ((ptr_t)(etext))
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 232
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int __data_start[];
+# define DATASTART ((ptr_t)(__data_start))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
# endif
# ifdef NETBSD
# define OS_TYPE "NETBSD"
@@ -1245,6 +1275,20 @@
# endif
# ifdef OPENBSD
# define OS_TYPE "OPENBSD"
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 176
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int __data_start[];
+# define DATASTART ((ptr_t)(__data_start))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
# endif
# ifdef FREEBSD
# define OS_TYPE "FREEBSD"
@@ -1280,7 +1324,7 @@
# ifdef BSDI
# define OS_TYPE "BSDI"
# endif
-# if defined(OPENBSD) || defined(NETBSD) \
+# if defined(NETBSD) \
|| defined(THREE86BSD) || defined(BSDI)
# define HEURISTIC2
extern char etext[];
@@ -1458,8 +1502,25 @@
# define STACKBOTTOM ((ptr_t) 0x7ffff000)
# endif /* _ELF_ */
# endif
+# ifdef OPENBSD
+# define OS_TYPE "OPENBSD"
+# define ALIGNMENT 4
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 808
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int _fdata[];
+# define DATASTART ((ptr_t)(_fdata))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
+# endif
# endif
-
# ifdef RS6000
# define MACH_TYPE "RS6000"
# ifdef ALIGNMENT
@@ -1505,7 +1566,7 @@
# define ALIGNMENT 4
# define ALIGN_DOUBLE
# endif
-# if !defined(GC_HPUX_THREADS) && !defined(GC_LINUX_THREADS)
+# if !defined(GC_HPUX_THREADS) && !defined(GC_LINUX_THREADS) && !defined(OPENBSD)
# ifndef LINUX /* For now. */
# define MPROTECT_VDB
# endif
@@ -1557,6 +1618,23 @@
extern int _end[];
# define DATAEND (&_end)
# endif /* LINUX */
+# ifdef OPENBSD
+# define OS_TYPE "OPENBSD"
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 520
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int __data_start[];
+# define DATASTART ((ptr_t)(__data_start))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
+# endif
# endif /* HP_PA */
# ifdef ALPHA
@@ -1581,15 +1659,21 @@
# endif
# ifdef OPENBSD
# define OS_TYPE "OPENBSD"
-# define HEURISTIC2
-# ifdef __ELF__ /* since OpenBSD/Alpha 2.9 */
-# define DATASTART GC_data_start
-# define ELFCLASS32 32
-# define ELFCLASS64 64
-# define ELF_CLASS ELFCLASS64
-# else /* ECOFF, until OpenBSD/Alpha 2.7 */
-# define DATASTART ((ptr_t) 0x140000000)
-# endif
+# define ELF_CLASS ELFCLASS64
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 816
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int __data_start[];
+# define DATASTART ((ptr_t)(__data_start))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
# endif
# ifdef FREEBSD
# define OS_TYPE "FREEBSD"
@@ -1769,6 +1853,7 @@
# ifdef CX_UX
# define OS_TYPE "CX_UX"
# define DATASTART ((((word)etext + 0x3fffff) & ~0x3fffff) + 0x10000)
+# define STACKBOTTOM ((char*)0xf0000000) /* determined empirically */
# endif
# ifdef DGUX
# define OS_TYPE "DGUX"
@@ -1879,6 +1964,24 @@
# define OS_TYPE "MSWINCE"
# define DATAEND /* not needed */
# endif
+# ifdef OPENBSD
+# define ALIGNMENT 4
+# define OS_TYPE "OPENBSD"
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 176
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int __data_start[];
+# define DATASTART ((ptr_t)(__data_start))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
+# endif
# ifdef NOSYS
/* __data_start is usually defined in the target linker script. */
extern int __data_start[];
@@ -1926,6 +2029,23 @@
# define USE_GENERIC_PUSH_REGS
# define DYNAMIC_LOADING
# endif
+# ifdef OPENBSD
+# define OS_TYPE "OPENBSD"
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 332
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int __data_start[];
+# define DATASTART ((ptr_t)(__data_start))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
+# endif
# endif
# ifdef SH4
@@ -1958,6 +2078,24 @@
# define CPP_WORDSZ 64
# ifndef HBLKSIZE
# define HBLKSIZE 4096
+# endif
+# ifdef OPENBSD
+# define OS_TYPE "OPENBSD"
+# define ELF_CLASS ELFCLASS64
+# ifdef GC_OPENBSD_THREADS
+# define UTHREAD_SP_OFFSET 400
+# else
+# include <sys/param.h>
+# include <uvm/uvm_extern.h>
+# define STACKBOTTOM USRSTACK
+# endif
+ extern int __data_start[];
+# define DATASTART ((ptr_t)(__data_start))
+ extern char _end[];
+# define DATAEND ((ptr_t)(&_end))
+# define DYNAMIC_LOADING
+# define USE_MMAP
+# define USE_MMAP_ANON
# endif
# define CACHE_LINE_SIZE 64
# define USE_GENERIC_PUSH_REGS

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-boehm-gc_include_private_openbsd_stop_world_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/include/private/openbsd_stop_world.h.orig Thu Mar 5 17:44:00 2009
+++ boehm-gc/include/private/openbsd_stop_world.h Thu Mar 5 17:44:00 2009
@@ -0,0 +1,12 @@
+#ifndef GC_OPENBSD_STOP_WORLD_H
+#define GC_OPENBSD_STOP_WORLD_H
+
+#if !defined(GC_OPENBSD_THREADS)
+#error openbsd_stop_world.h included without GC_OPENBSD_THREADS defined
+#endif
+
+struct thread_stop_info {
+ ptr_t stack_ptr; /* Valid only when stopped. */
+};
+
+#endif

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-boehm-gc_mach_dep_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/mach_dep.c.orig Mon Mar 16 17:49:33 2009
+++ boehm-gc/mach_dep.c Mon Mar 16 17:51:42 2009
@@ -27,7 +27,7 @@
# endif
# endif
-#if defined(RS6000) || defined(POWERPC)
+#if (defined(RS6000) || defined(POWERPC)) && !defined(OPENBSD)
# include <ucontext.h>
#endif
@@ -417,7 +417,7 @@ ptr_t arg;
/* the stack. */
__builtin_unwind_init();
# else /* !HAVE_BUILTIN_UNWIND_INIT */
-# if defined(RS6000) || defined(POWERPC)
+# if (defined(RS6000) || defined(POWERPC)) && !defined(OPENBSD)
/* FIXME: RS6000 means AIX. */
/* This should probably be used in all Posix/non-gcc */
/* settings. We defer that change to minimize risk. */

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-boehm-gc_misc_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/misc.c.orig Thu Jan 29 17:29:56 2009
+++ boehm-gc/misc.c Thu Jan 29 17:30:08 2009
@@ -660,7 +660,7 @@ void GC_init_inner()
# if defined(SEARCH_FOR_DATA_START)
GC_init_linux_data_start();
# endif
-# if (defined(NETBSD) || defined(OPENBSD)) && defined(__ELF__)
+# if defined(NETBSD) && defined(__ELF__)
GC_init_netbsd_elf();
# endif
# if defined(GC_PTHREADS) || defined(GC_SOLARIS_THREADS) \

View File

@ -0,0 +1,188 @@
$OpenBSD: patch-boehm-gc_openbsd_stop_world_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/openbsd_stop_world.c.orig Thu Mar 12 15:07:24 2009
+++ boehm-gc/openbsd_stop_world.c Thu Mar 12 18:07:50 2009
@@ -0,0 +1,184 @@
+#include "private/pthread_support.h"
+
+/* derived from pthread_stop_world.c */
+
+# if defined(GC_OPENBSD_THREADS)
+
+/* We hold allocation lock. Should do exactly the right thing if the */
+/* world is stopped. Should not fail if it isn't. */
+void GC_push_all_stacks()
+{
+ GC_bool found_me = FALSE;
+ size_t nthreads = 0;
+ int i;
+ GC_thread p;
+ ptr_t lo, hi;
+ pthread_t me = pthread_self();
+
+ if (!GC_thr_initialized) GC_thr_init();
+# if DEBUG_THREADS
+ GC_printf1("Pushing stacks from thread 0x%x\n", (unsigned) me);
+# endif
+ for (i = 0; i < THREAD_TABLE_SZ; i++) {
+ for (p = GC_threads[i]; p != 0; p = p -> next) {
+ if (p -> flags & FINISHED) continue;
+ ++nthreads;
+ if (pthread_equal(p -> id, me)) {
+# ifdef SPARC
+ lo = (ptr_t)GC_save_regs_in_stack();
+# else
+ lo = GC_approx_sp();
+# endif
+ found_me = TRUE;
+ } else {
+ lo = p -> stop_info.stack_ptr;
+ }
+ if ((p -> flags & MAIN_THREAD) == 0) {
+ hi = p -> stack_end;
+ } else {
+ /* The original stack. */
+ hi = GC_stackbottom;
+ }
+# if DEBUG_THREADS
+ GC_printf3("Stack for thread 0x%x = [%p,%p)\n",
+ (unsigned)(p -> id), lo, hi);
+# endif
+ if (0 == lo) ABORT("GC_push_all_stacks: sp not set!\n");
+# ifdef STACK_GROWS_UP
+ /* We got them backwards! */
+ GC_push_all_stack(hi, lo);
+# else
+ GC_push_all_stack(lo, hi);
+# endif
+ }
+ }
+ if (GC_print_stats) {
+ GC_printf1("Pushed %d thread stacks\n", nthreads);
+ }
+ if (!found_me && !GC_in_thread_creation)
+ ABORT("Collecting from unknown thread.");
+}
+
+/* We hold the allocation lock. Suspend all threads that might */
+/* still be running. */
+void GC_suspend_all()
+{
+ int i;
+ GC_thread p;
+ int result;
+ pthread_t my_thread = pthread_self();
+
+ for (i = 0; i < THREAD_TABLE_SZ; i++) {
+ for (p = GC_threads[i]; p != 0; p = p -> next) {
+ if (!pthread_equal(p -> id, my_thread)) {
+ if (p -> flags & FINISHED) continue;
+ if (p -> thread_blocked) /* Will wait */ continue;
+# if DEBUG_THREADS
+ GC_printf1("Suspending thread 0x%x\n",
+ (unsigned)(p -> id));
+# endif
+
+ if (pthread_suspend_np(p -> id) != 0)
+ ABORT("pthread_suspend_np failed");
+
+ /*
+ * This will only work for userland pthreads. It will
+ * fail badly on rthreads. Perhaps we should consider
+ * a pthread_sp_np() function that returns the stack
+ * pointer for a suspended thread and implement in
+ * both pthreads and rthreads.
+ */
+ p -> stop_info.stack_ptr = *(ptr_t*)((char *)p -> id + UTHREAD_SP_OFFSET);
+ }
+ }
+ }
+}
+
+void GC_stop_world()
+{
+ int i;
+
+ GC_ASSERT(I_HOLD_LOCK());
+# if DEBUG_THREADS
+ GC_printf1("Stopping the world from 0x%x\n", (unsigned)pthread_self());
+# endif
+
+ /* Make sure all free list construction has stopped before we start. */
+ /* No new construction can start, since free list construction is */
+ /* required to acquire and release the GC lock before it starts, */
+ /* and we have the lock. */
+# ifdef PARALLEL_MARK
+ GC_acquire_mark_lock();
+ GC_ASSERT(GC_fl_builder_count == 0);
+ /* We should have previously waited for it to become zero. */
+# endif /* PARALLEL_MARK */
+
+ GC_suspend_all();
+
+# ifdef PARALLEL_MARK
+ GC_release_mark_lock();
+# endif
+ #if DEBUG_THREADS
+ GC_printf1("World stopped from 0x%x\n", (unsigned)pthread_self());
+ #endif
+}
+
+/* Caller holds allocation lock, and has held it continuously since */
+/* the world stopped. */
+void GC_start_world()
+{
+ pthread_t my_thread = pthread_self();
+ register int i;
+ register GC_thread p;
+ register int result;
+
+# if DEBUG_THREADS
+ GC_printf0("World starting\n");
+# endif
+
+ for (i = 0; i < THREAD_TABLE_SZ; i++) {
+ for (p = GC_threads[i]; p != 0; p = p -> next) {
+ if (!pthread_equal(p -> id, my_thread)) {
+ if (p -> flags & FINISHED) continue;
+ if (p -> thread_blocked) continue;
+ #if DEBUG_THREADS
+ GC_printf1("Resuming thread 0x%x\n",
+ (unsigned)(p -> id));
+ #endif
+
+ if (pthread_resume_np(p -> id) != 0)
+ ABORT("pthread_kill failed");
+ }
+ }
+ }
+# if DEBUG_THREADS
+ GC_printf0("World started\n");
+# endif
+}
+
+void GC_stop_init() {
+}
+
+void GC_suspend_thread(pthread_t thread) {
+ if (thread == pthread_self()) {
+ ABORT("attempting to suspend self");
+ } else {
+ GC_thread t = GC_lookup_thread(thread);
+ if (t == NULL)
+ ABORT("attempting to suspend unknown thread");
+
+ if (pthread_suspend_np(t -> id) != 0)
+ ABORT("pthread_suspend_np failed");
+ }
+}
+
+void GC_resume_thread(pthread_t thread) {
+ GC_thread t = GC_lookup_thread(thread);
+ if (t == NULL)
+ ABORT("attempting to resume unknown thread");
+
+ if (pthread_resume_np(t -> id) != 0)
+ ABORT("pthread_resume_np failed");
+}
+
+#endif

View File

@ -0,0 +1,190 @@
$OpenBSD: patch-boehm-gc_os_dep_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/os_dep.c.orig Tue Jan 16 14:44:17 2007
+++ boehm-gc/os_dep.c Thu Mar 5 17:11:21 2009
@@ -380,7 +380,7 @@ static void *tiny_sbrk(ptrdiff_t increment)
#define sbrk tiny_sbrk
# endif /* ECOS */
-#if (defined(NETBSD) || defined(OPENBSD)) && defined(__ELF__)
+#if defined(NETBSD) && defined(__ELF__)
ptr_t GC_data_start;
void GC_init_netbsd_elf()
@@ -393,6 +393,103 @@ static void *tiny_sbrk(ptrdiff_t increment)
}
#endif
+#if defined(OPENBSD)
+ static struct sigaction old_segv_act;
+ sigjmp_buf GC_jmp_buf_openbsd;
+
+# if defined(GC_OPENBSD_THREADS)
+# include <sys/syscall.h>
+ sigset_t __syscall(quad_t, ...);
+# endif
+
+ /*
+ * Dont use GC_find_limit() because siglongjmp out of the
+ * signal handler by-passes our userland pthreads lib, leaving
+ * SIGSEGV and SIGPROF masked. Instead use this custom one
+ * that works-around the issues.
+ */
+
+ /*ARGSUSED*/
+ void GC_fault_handler_openbsd(int sig)
+ {
+ siglongjmp(GC_jmp_buf_openbsd, 1);
+ }
+
+ /* Return the first nonaddressible location > p or bound */
+ /* Requires allocation lock. */
+ ptr_t GC_find_limit_openbsd(ptr_t p, ptr_t bound)
+ {
+ static volatile ptr_t result;
+ /* Safer if static, since otherwise it may not be */
+ /* preserved across the longjmp. Can safely be */
+ /* static since it's only called with the */
+ /* allocation lock held. */
+ struct sigaction act;
+ size_t pgsz = (size_t)sysconf(_SC_PAGESIZE);
+
+ GC_ASSERT(I_HOLD_LOCK());
+
+ act.sa_handler = GC_fault_handler_openbsd;
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = SA_NODEFER | SA_RESTART;
+ sigaction(SIGSEGV, &act, &old_segv_act);
+
+ if (sigsetjmp(GC_jmp_buf_openbsd, 1) == 0) {
+ result = (ptr_t)(((word)(p)) & ~(pgsz-1));
+ for (;;) {
+ result += pgsz;
+ if (result >= bound) {
+ result = bound;
+ break;
+ }
+ GC_noop1((word)(*result));
+ }
+ }
+
+# if defined(GC_OPENBSD_THREADS)
+ /* due to the siglongjump we need to manually unmask SIGPROF */
+ __syscall(SYS_sigprocmask, SIG_UNBLOCK, sigmask(SIGPROF));
+# endif
+
+ sigaction(SIGSEGV, &old_segv_act, 0);
+
+ return(result);
+ }
+
+ /* Return first addressable location > p or bound */
+ /* Requires allocation lock. */
+ ptr_t GC_skip_hole_openbsd(ptr_t p, ptr_t bound)
+ {
+ static volatile ptr_t result;
+ struct sigaction act;
+ size_t pgsz = (size_t)sysconf(_SC_PAGESIZE);
+ static volatile int firstpass;
+
+ GC_ASSERT(I_HOLD_LOCK());
+
+ act.sa_handler = GC_fault_handler_openbsd;
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = SA_NODEFER | SA_RESTART;
+ sigaction(SIGSEGV, &act, &old_segv_act);
+
+ firstpass = 1;
+ result = (ptr_t)(((word)(p)) & ~(pgsz-1));
+ if (sigsetjmp(GC_jmp_buf_openbsd, 1) != 0 || firstpass) {
+ firstpass = 0;
+ result += pgsz;
+ if (result >= bound) {
+ result = bound;
+ } else
+ GC_noop1((word)(*result));
+ }
+
+ sigaction(SIGSEGV, &old_segv_act, 0);
+
+ return(result);
+ }
+#endif
+
+
# ifdef OS2
# include <stddef.h>
@@ -1007,7 +1104,8 @@ ptr_t GC_get_stack_base()
#endif /* FREEBSD_STACKBOTTOM */
#if !defined(BEOS) && !defined(AMIGA) && !defined(MSWIN32) \
- && !defined(MSWINCE) && !defined(OS2) && !defined(NOSYS) && !defined(ECOS)
+ && !defined(MSWINCE) && !defined(OS2) && !defined(NOSYS) && !defined(ECOS) \
+ && !defined(GC_OPENBSD_THREADS)
ptr_t GC_get_stack_base()
{
@@ -1067,6 +1165,23 @@ ptr_t GC_get_stack_base()
# endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS, !NOSYS, !ECOS */
+#if defined(GC_OPENBSD_THREADS)
+
+/* Find the stack using pthread_stackseg_np() */
+
+# include <sys/signal.h>
+# include <pthread.h>
+# include <pthread_np.h>
+
+#define HAVE_GET_STACK_BASE
+
+ptr_t GC_get_stack_base()
+{
+ stack_t stack;
+ pthread_stackseg_np(pthread_self(), &stack);
+ return stack.ss_sp;
+}
+#endif /* GC_OPENBSD_THREADS */
/*
* Register static data segment(s) as roots.
* If more data segments are added later then they need to be registered
@@ -1434,6 +1549,31 @@ int * etext_addr;
#else /* !OS2 && !Windows && !AMIGA */
+#if defined(OPENBSD)
+
+/*
+ * Depending on arch alignment there can be multiple holes
+ * between DATASTART & DATAEND. Scan from DATASTART - DATAEND
+ * and register each region.
+ */
+void GC_register_data_segments(void)
+{
+ ptr_t region_start, region_end;
+
+ region_start = DATASTART;
+
+ for(;;) {
+ region_end = GC_find_limit_openbsd(region_start, DATAEND);
+ GC_add_roots_inner(region_start, region_end, FALSE);
+ if (region_end < DATAEND)
+ region_start = GC_skip_hole_openbsd(region_end, DATAEND);
+ else
+ break;
+ }
+}
+
+# else /* !OS2 && !Windows && !AMIGA && !OPENBSD */
+
void GC_register_data_segments()
{
# if !defined(PCR) && !defined(SRC_M3) && !defined(MACOS)
@@ -1491,6 +1631,7 @@ void GC_register_data_segments()
/* change. */
}
+# endif /* ! OPENBSD */
# endif /* ! AMIGA */
# endif /* ! MSWIN32 && ! MSWINCE*/
# endif /* ! OS2 */

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-boehm-gc_pthread_stop_world_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/pthread_stop_world.c.orig Thu Mar 5 17:50:41 2009
+++ boehm-gc/pthread_stop_world.c Thu Mar 5 17:51:12 2009
@@ -1,7 +1,8 @@
#include "private/pthread_support.h"
#if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \
- && !defined(GC_WIN32_THREADS) && !defined(GC_DARWIN_THREADS)
+ && !defined(GC_WIN32_THREADS) && !defined(GC_DARWIN_THREADS) \
+ && !defined(GC_OPENBSD_THREADS)
#include <signal.h>
#include <semaphore.h>

View File

@ -0,0 +1,22 @@
$OpenBSD: patch-boehm-gc_pthread_support_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/pthread_support.c.orig Thu Nov 8 22:56:19 2007
+++ boehm-gc/pthread_support.c Mon Jun 22 00:53:48 2009
@@ -891,6 +891,9 @@ void GC_thr_init()
GC_nprocs = sysconf(_SC_NPROC_ONLN);
if (GC_nprocs <= 0) GC_nprocs = 1;
# endif
+# if defined(GC_OPENBSD_THREADS)
+ GC_nprocs = 1;
+# endif
# if defined(GC_DARWIN_THREADS) || defined(GC_FREEBSD_THREADS)
int ncpus = 1;
size_t len = sizeof(ncpus);
@@ -965,7 +968,7 @@ void GC_init_parallel()
}
-#if !defined(GC_DARWIN_THREADS)
+#if !defined(GC_DARWIN_THREADS) && !defined(GC_OPENBSD_THREADS)
int WRAP_FUNC(pthread_sigmask)(int how, const sigset_t *set, sigset_t *oset)
{
sigset_t fudged_set;

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-boehm-gc_tests_test_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/tests/test.c.orig Thu Mar 5 17:57:38 2009
+++ boehm-gc/tests/test.c Thu Mar 5 17:58:02 2009
@@ -1799,7 +1799,8 @@ main()
pthread_attr_init(&attr);
# if defined(GC_IRIX_THREADS) || defined(GC_FREEBSD_THREADS) \
- || defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS)
+ || defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS) \
+ || defined(GC_OPENBSD_THREADS)
pthread_attr_setstacksize(&attr, 1000000);
# endif
n_tests = 0;

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-boehm-gc_threadlibs_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- boehm-gc/threadlibs.c.orig Thu Mar 5 17:58:11 2009
+++ boehm-gc/threadlibs.c Thu Mar 5 17:58:54 2009
@@ -15,6 +15,9 @@ int main()
|| defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS)
printf("-lpthread\n");
# endif
+# if defined(GC_OPENBSD_THREADS)
+ printf("-pthread\n");
+# endif
# if defined(GC_FREEBSD_THREADS)
# if (__FREEBSD_version >= 500000)
printf("-lpthread\n");

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-configure,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- configure.orig Wed May 13 14:10:04 2009
+++ configure Mon Jun 22 00:53:49 2009
@@ -1266,6 +1266,8 @@ case "${target}" in
skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib"
noconfigdirs="$noconfigdirs target-libgloss"
;;
+ *-*-openbsd*)
+ ;;
*-*-netbsd*)
# Skip some stuff on all NetBSD configurations.
noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss"

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-fixincludes_Makefile_in,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- fixincludes/Makefile.in.orig Wed Oct 11 01:48:09 2006
+++ fixincludes/Makefile.in Sun Mar 18 23:58:41 2007
@@ -169,8 +169,8 @@ $(srcdir)/aclocal.m4: @MAINT@ $(srcdir)/../gcc/aclocal
cp $(srcdir)/../gcc/aclocal.m4 .
check : all
- autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def
- $(SHELL) ./check.sh $(srcdir)/tests/base
+ -autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def
+ -$(SHELL) ./check.sh $(srcdir)/tests/base
@rm -f ./check.sh
install : all

View File

@ -0,0 +1,18 @@
$OpenBSD: patch-gcc_ada_Makefile_in,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/ada/Makefile.in.orig Fri Sep 7 13:14:39 2007
+++ gcc/ada/Makefile.in Mon Jun 22 00:56:18 2009
@@ -117,12 +117,12 @@ TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
GNATBIND = $(STAGE_PREFIX)gnatbind
GNATBIND_FLAGS = -static -x
-ADA_CFLAGS =
+ADA_CFLAGS = -O1
ADAFLAGS = -W -Wall -gnatpg -gnata
SOME_ADAFLAGS =-gnata
FORCE_DEBUG_ADAFLAGS = -g
GNATLIBFLAGS = -gnatpg -nostdinc
-GNATLIBCFLAGS = -g -O2
+GNATLIBCFLAGS = -g -O1
# LLVM local begin
GNATLIBCFLAGS_FOR_C = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \
-DIN_RTS -DIN_TARGET_LIBS

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-gcc_ada_adaint_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/ada/adaint.c.orig Wed Feb 15 10:30:39 2006
+++ gcc/ada/adaint.c Sun Mar 18 23:58:42 2007
@@ -794,7 +794,7 @@ __gnat_open_new_temp (char *path, int fmode)
strcpy (path, "GNAT-XXXXXX");
-#if (defined (__FreeBSD__) || defined (linux)) && !defined (__vxworks)
+#if (defined (__FreeBSD__) || defined (__OpenBSD__) || defined (linux)) && !defined (__vxworks)
return mkstemp (path);
#elif defined (__Lynx__)
mktemp (path);
@@ -884,7 +884,7 @@ __gnat_tmp_name (char *tmp_filename)
free (pname);
}
-#elif defined (linux) || defined (__FreeBSD__)
+#elif defined (linux) || defined (__FreeBSD__) || defined(__OpenBSD__)
#define MAX_SAFE_PATH 1000
char *tmpdir = getenv ("TMPDIR");

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-gcc_ada_env_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/ada/env.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/ada/env.c Mon Jun 22 00:57:07 2009
@@ -288,7 +288,8 @@ void __gnat_clearenv (void) {
index++;
}
#elif defined (__MINGW32__) || defined (__FreeBSD__) || defined (__APPLE__) \
- || (defined (__vxworks) && defined (__RTP__)) || defined (__CYGWIN__)
+ || (defined (__vxworks) && defined (__RTP__)) || defined (__CYGWIN__) \
+ || defined(__OpenBSD__)
/* On Windows, FreeBSD and MacOS there is no function to clean all the
environment but there is a "clean" way to unset a variable. So go
through the environ table and call __gnat_unsetenv on all entries */

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_ada_gnatchop_adb,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/ada/gnatchop.adb.orig Thu Feb 10 14:49:13 2005
+++ gcc/ada/gnatchop.adb Tue Feb 22 19:38:40 2005
@@ -45,7 +45,7 @@ procedure Gnatchop is
Config_File_Name : constant String_Access := new String'("gnat.adc");
-- The name of the file holding the GNAT configuration pragmas
- Gcc : String_Access := new String'("gcc");
+ Gcc : String_Access := new String'("egcc");
-- May be modified by switch --GCC=
Gcc_Set : Boolean := False;

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_ada_gnatlink_adb,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/ada/gnatlink.adb.orig Wed Feb 15 10:35:23 2006
+++ gcc/ada/gnatlink.adb Sun Jul 23 11:24:01 2006
@@ -131,7 +131,7 @@ procedure Gnatlink is
-- This table collects the arguments to be passed to compile the binder
-- generated file.
- Gcc : String_Access := Program_Name ("gcc");
+ Gcc : String_Access := Program_Name ("egcc");
Read_Mode : constant String := "r" & ASCII.Nul;

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_ada_make_adb,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/ada/make.adb.orig Tue Nov 15 15:00:29 2005
+++ gcc/ada/make.adb Sat Mar 4 14:34:45 2006
@@ -601,7 +601,7 @@ package body Make is
-- Compiler, Binder & Linker Data and Subprograms --
----------------------------------------------------
- Gcc : String_Access := Program_Name ("gcc");
+ Gcc : String_Access := Program_Name ("egcc");
Gnatbind : String_Access := Program_Name ("gnatbind");
Gnatlink : String_Access := Program_Name ("gnatlink");
-- Default compiler, binder, linker programs

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_ada_mlib-utl_adb,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/ada/mlib-utl.adb.orig Tue Jun 6 14:37:36 2006
+++ gcc/ada/mlib-utl.adb Sat Jul 22 18:05:51 2006
@@ -38,7 +38,7 @@ package body MLib.Utl is
Initialized : Boolean := False;
- Gcc_Name : constant String := Osint.Program_Name ("gcc").all;
+ Gcc_Name : constant String := Osint.Program_Name ("egcc").all;
Gcc_Exec : OS_Lib.String_Access;
Ar_Name : OS_Lib.String_Access;

View File

@ -0,0 +1,245 @@
$OpenBSD: patch-gcc_c-aux-info_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/c-aux-info.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/c-aux-info.c Mon Jun 22 00:53:51 2009
@@ -91,14 +91,14 @@ affix_data_type (const char *param)
add a blank after the data-type of course. */
if (p == type_or_decl)
- return concat (data_type, " ", type_or_decl, NULL);
+ return concat (data_type, " ", type_or_decl, (void *)0);
saved = *p;
*p = '\0';
- qualifiers_then_data_type = concat (type_or_decl, data_type, NULL);
+ qualifiers_then_data_type = concat (type_or_decl, data_type, (void *)0);
*p = saved;
return reconcat (qualifiers_then_data_type,
- qualifiers_then_data_type, " ", p, NULL);
+ qualifiers_then_data_type, " ", p, (void *)0);
}
/* Given a tree node which represents some "function type", generate the
@@ -123,13 +123,13 @@ gen_formal_list_for_type (tree fntype, formals_style s
const char *this_type;
if (*formal_list)
- formal_list = concat (formal_list, ", ", NULL);
+ formal_list = concat (formal_list, ", ", (void *)0);
this_type = gen_type ("", TREE_VALUE (formal_type), ansi);
formal_list
= ((strlen (this_type))
- ? concat (formal_list, affix_data_type (this_type), NULL)
- : concat (formal_list, data_type, NULL));
+ ? concat (formal_list, affix_data_type (this_type), (void *)0)
+ : concat (formal_list, data_type, (void *)0));
formal_type = TREE_CHAIN (formal_type);
}
@@ -178,10 +178,10 @@ gen_formal_list_for_type (tree fntype, formals_style s
petered out to a NULL (i.e. without being terminated by a
void_type_node) then we need to tack on an ellipsis. */
if (!formal_type)
- formal_list = concat (formal_list, ", ...", NULL);
+ formal_list = concat (formal_list, ", ...", (void *)0);
}
- return concat (" (", formal_list, ")", NULL);
+ return concat (" (", formal_list, ")", (void *)0);
}
/* For the generation of an ANSI prototype for a function definition, we have
@@ -237,23 +237,23 @@ gen_formal_list_for_func_def (tree fndecl, formals_sty
const char *this_formal;
if (*formal_list && ((style == ansi) || (style == k_and_r_names)))
- formal_list = concat (formal_list, ", ", NULL);
+ formal_list = concat (formal_list, ", ", (void *)0);
this_formal = gen_decl (formal_decl, 0, style);
if (style == k_and_r_decls)
- formal_list = concat (formal_list, this_formal, "; ", NULL);
+ formal_list = concat (formal_list, this_formal, "; ", (void *)0);
else
- formal_list = concat (formal_list, this_formal, NULL);
+ formal_list = concat (formal_list, this_formal, (void *)0);
formal_decl = TREE_CHAIN (formal_decl);
}
if (style == ansi)
{
if (!DECL_ARGUMENTS (fndecl))
- formal_list = concat (formal_list, "void", NULL);
+ formal_list = concat (formal_list, "void", (void *)0);
if (deserves_ellipsis (TREE_TYPE (fndecl)))
- formal_list = concat (formal_list, ", ...", NULL);
+ formal_list = concat (formal_list, ", ...", (void *)0);
}
if ((style == ansi) || (style == k_and_r_names))
- formal_list = concat (" (", formal_list, ")", NULL);
+ formal_list = concat (" (", formal_list, ")", (void *)0);
return formal_list;
}
@@ -312,14 +312,14 @@ gen_type (const char *ret_val, tree t, formals_style s
{
case POINTER_TYPE:
if (TYPE_READONLY (t))
- ret_val = concat ("const ", ret_val, NULL);
+ ret_val = concat ("const ", ret_val, (void *)0);
if (TYPE_VOLATILE (t))
- ret_val = concat ("volatile ", ret_val, NULL);
+ ret_val = concat ("volatile ", ret_val, (void *)0);
- ret_val = concat ("*", ret_val, NULL);
+ ret_val = concat ("*", ret_val, (void *)0);
if (TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE || TREE_CODE (TREE_TYPE (t)) == FUNCTION_TYPE)
- ret_val = concat ("(", ret_val, ")", NULL);
+ ret_val = concat ("(", ret_val, ")", (void *)0);
ret_val = gen_type (ret_val, TREE_TYPE (t), style);
@@ -327,17 +327,17 @@ gen_type (const char *ret_val, tree t, formals_style s
case ARRAY_TYPE:
if (!COMPLETE_TYPE_P (t) || TREE_CODE (TYPE_SIZE (t)) != INTEGER_CST)
- ret_val = gen_type (concat (ret_val, "[]", NULL),
+ ret_val = gen_type (concat (ret_val, "[]", (void *)0),
TREE_TYPE (t), style);
else if (int_size_in_bytes (t) == 0)
- ret_val = gen_type (concat (ret_val, "[0]", NULL),
+ ret_val = gen_type (concat (ret_val, "[0]", (void *)0),
TREE_TYPE (t), style);
else
{
int size = (int_size_in_bytes (t) / int_size_in_bytes (TREE_TYPE (t)));
char buff[10];
sprintf (buff, "[%d]", size);
- ret_val = gen_type (concat (ret_val, buff, NULL),
+ ret_val = gen_type (concat (ret_val, buff, (void *)0),
TREE_TYPE (t), style);
}
break;
@@ -345,7 +345,7 @@ gen_type (const char *ret_val, tree t, formals_style s
case FUNCTION_TYPE:
ret_val = gen_type (concat (ret_val,
gen_formal_list_for_type (t, style),
- NULL),
+ (void *)0),
TREE_TYPE (t), style);
break;
@@ -374,13 +374,13 @@ gen_type (const char *ret_val, tree t, formals_style s
while (chain_p)
{
data_type = concat (data_type, gen_decl (chain_p, 0, ansi),
- NULL);
+ (void *)0);
chain_p = TREE_CHAIN (chain_p);
- data_type = concat (data_type, "; ", NULL);
+ data_type = concat (data_type, "; ", (void *)0);
}
- data_type = concat ("{ ", data_type, "}", NULL);
+ data_type = concat ("{ ", data_type, "}", (void *)0);
}
- data_type = concat ("struct ", data_type, NULL);
+ data_type = concat ("struct ", data_type, (void *)0);
break;
case UNION_TYPE:
@@ -393,13 +393,13 @@ gen_type (const char *ret_val, tree t, formals_style s
while (chain_p)
{
data_type = concat (data_type, gen_decl (chain_p, 0, ansi),
- NULL);
+ (void *)0);
chain_p = TREE_CHAIN (chain_p);
- data_type = concat (data_type, "; ", NULL);
+ data_type = concat (data_type, "; ", (void *)0);
}
- data_type = concat ("{ ", data_type, "}", NULL);
+ data_type = concat ("{ ", data_type, "}", (void *)0);
}
- data_type = concat ("union ", data_type, NULL);
+ data_type = concat ("union ", data_type, (void *)0);
break;
case ENUMERAL_TYPE:
@@ -412,14 +412,14 @@ gen_type (const char *ret_val, tree t, formals_style s
while (chain_p)
{
data_type = concat (data_type,
- IDENTIFIER_POINTER (TREE_PURPOSE (chain_p)), NULL);
+ IDENTIFIER_POINTER (TREE_PURPOSE (chain_p)), (void *)0);
chain_p = TREE_CHAIN (chain_p);
if (chain_p)
- data_type = concat (data_type, ", ", NULL);
+ data_type = concat (data_type, ", ", (void *)0);
}
- data_type = concat ("{ ", data_type, " }", NULL);
+ data_type = concat ("{ ", data_type, " }", (void *)0);
}
- data_type = concat ("enum ", data_type, NULL);
+ data_type = concat ("enum ", data_type, (void *)0);
break;
case TYPE_DECL:
@@ -431,7 +431,7 @@ gen_type (const char *ret_val, tree t, formals_style s
/* Normally, `unsigned' is part of the deal. Not so if it comes
with a type qualifier. */
if (TYPE_UNSIGNED (t) && TYPE_QUALS (t))
- data_type = concat ("unsigned ", data_type, NULL);
+ data_type = concat ("unsigned ", data_type, (void *)0);
break;
case REAL_TYPE:
@@ -451,11 +451,11 @@ gen_type (const char *ret_val, tree t, formals_style s
}
}
if (TYPE_READONLY (t))
- ret_val = concat ("const ", ret_val, NULL);
+ ret_val = concat ("const ", ret_val, (void *)0);
if (TYPE_VOLATILE (t))
- ret_val = concat ("volatile ", ret_val, NULL);
+ ret_val = concat ("volatile ", ret_val, (void *)0);
if (TYPE_RESTRICT (t))
- ret_val = concat ("restrict ", ret_val, NULL);
+ ret_val = concat ("restrict ", ret_val, (void *)0);
return ret_val;
}
@@ -494,9 +494,9 @@ gen_decl (tree decl, int is_func_definition, formals_s
generate the qualifiers here. */
if (TREE_THIS_VOLATILE (decl))
- ret_val = concat ("volatile ", ret_val, NULL);
+ ret_val = concat ("volatile ", ret_val, (void *)0);
if (TREE_READONLY (decl))
- ret_val = concat ("const ", ret_val, NULL);
+ ret_val = concat ("const ", ret_val, (void *)0);
data_type = "";
@@ -515,7 +515,7 @@ gen_decl (tree decl, int is_func_definition, formals_s
if (TREE_CODE (decl) == FUNCTION_DECL && is_func_definition)
{
ret_val = concat (ret_val, gen_formal_list_for_func_def (decl, ansi),
- NULL);
+ (void *)0);
/* Since we have already added in the formals list stuff, here we don't
add the whole "type" of the function we are considering (which
@@ -532,11 +532,11 @@ gen_decl (tree decl, int is_func_definition, formals_s
ret_val = affix_data_type (ret_val);
if (TREE_CODE (decl) != FUNCTION_DECL && C_DECL_REGISTER (decl))
- ret_val = concat ("register ", ret_val, NULL);
+ ret_val = concat ("register ", ret_val, (void *)0);
if (TREE_PUBLIC (decl))
- ret_val = concat ("extern ", ret_val, NULL);
+ ret_val = concat ("extern ", ret_val, (void *)0);
if (TREE_CODE (decl) == FUNCTION_DECL && !TREE_PUBLIC (decl))
- ret_val = concat ("static ", ret_val, NULL);
+ ret_val = concat ("static ", ret_val, (void *)0);
return ret_val;
}

View File

@ -0,0 +1,37 @@
$OpenBSD: patch-gcc_c-common_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/c-common.c.orig Mon May 4 17:45:55 2009
+++ gcc/c-common.c Mon Jun 22 00:58:03 2009
@@ -641,6 +641,8 @@ static tree handle_cleanup_attribute (tree *, tree, tr
static tree handle_warn_unused_result_attribute (tree *, tree, tree, int,
bool *);
static tree handle_sentinel_attribute (tree *, tree, tree, int, bool *);
+static tree handle_bounded_attribute (tree *, tree, tree, int, bool *);
+
/* APPLE LOCAL radar 5932809 - copyable byref blocks */
static tree handle_blocks_attribute (tree *, tree, tree, int, bool *);
@@ -738,6 +740,8 @@ const struct attribute_spec c_common_attribute_table[]
/* APPLE LOCAL end "unavailable" attribute --ilr */
{ "vector_size", 1, 1, false, true, false,
handle_vector_size_attribute },
+ { "bounded", 3, 4, false, true, false,
+ handle_bounded_attribute },
{ "visibility", 1, 1, false, false, false,
handle_visibility_attribute },
{ "tls_model", 1, 1, true, false, false,
@@ -5807,6 +5811,15 @@ handle_vector_size_attribute (tree *node, tree name, t
*node = reconstruct_complex_type (*node, new_type);
return NULL_TREE;
+}
+
+static tree
+handle_bounded_attribute (tree *ARG_UNUSED (node), tree ARG_UNUSED (name),
+ tree ARG_UNUSED (args),
+ int ARG_UNUSED (flags), bool *no_add_attrs)
+{
+ *no_add_attrs = true;
+ return NULL_TREE;
}
/* Handle the "nonnull" attribute. */

View File

@ -0,0 +1,97 @@
$OpenBSD: patch-gcc_c-format_c,v 1.1.1.1 2009/06/22 22:37:31 sthen Exp $
teach gcc 4.2 about the kprintf/syslog formats from OpenBSD gcc 3.3.5;
this makes gcc whinge less when compiling the kernel.
--- gcc/c-format.c.orig Mon Jun 22 00:38:01 2009
+++ gcc/c-format.c Mon Jun 22 00:38:04 2009
@@ -60,6 +60,7 @@ set_Wformat (int setting)
format_type_error. Target-specific format types do not have
matching enum values. */
enum format_type { printf_format_type, asm_fprintf_format_type,
+ kprintf_format_type, syslog_format_type,
gcc_diag_format_type, gcc_tdiag_format_type,
gcc_cdiag_format_type,
gcc_cxxdiag_format_type, gcc_gfc_format_type,
@@ -335,6 +336,15 @@ static const format_length_info gcc_diag_length_specs[
{ NULL, 0, 0, NULL, 0, 0 }
};
+static const format_length_info kprintf_length_specs[] =
+{
+ { "h", FMT_LEN_h, STD_C89, NULL, 0, 0 },
+ { "l", FMT_LEN_l, STD_C89, "ll", FMT_LEN_ll, STD_C9L },
+ { "q", FMT_LEN_ll, STD_EXT, NULL, 0, 0 },
+ { "L", FMT_LEN_L, STD_C89, NULL, 0, 0 },
+ { NULL, 0, 0, NULL, 0, 0 }
+};
+
/* The custom diagnostics all accept the same length specifiers. */
#define gcc_tdiag_length_specs gcc_diag_length_specs
#define gcc_cdiag_length_specs gcc_diag_length_specs
@@ -556,6 +566,46 @@ static const format_char_info asm_fprintf_char_table[]
{ NULL, 0, 0, NOLENGTHS, NULL, NULL, NULL }
};
+static const format_char_info kprint_char_table[] =
+{
+ /* C89 conversion specifiers. */
+ { "di", 0, STD_C89, { T89_I, T99_SC, T89_S, T89_L, T9L_LL, TEX_LL, T99_SST, T99_PD, T99_IM }, "-wp0 +'I", "i", NULL },
+ { "oxX", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0#", "i", NULL },
+ { "u", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0'I", "i", NULL },
+ { "c", 0, STD_C89, { T89_I, BADLEN, BADLEN, T94_WI, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "", NULL },
+ { "s", 1, STD_C89, { T89_C, BADLEN, BADLEN, T94_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "cR", NULL },
+ { "p", 1, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "c", NULL },
+/* Kernel bitmap formatting */
+ { "b", 1, STD_C89, { T89_C, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "", "", NULL },
+/* Kernel recursive format */
+ { ":", 1, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "", "", NULL },
+/* Kernel debugger auto-radix printing */
+ { "nrz", 0, STD_C89, { T89_I, T89_I, T89_I, T89_L, T9L_LL, TEX_LL, BADLEN, BADLEN, BADLEN }, "-wp0# +", "", NULL },
+ { NULL, 0, 0, NOLENGTHS, NULL, NULL, NULL }
+};
+
+static const format_char_info syslog_char_table[] =
+{
+ /* C89 conversion specifiers. */
+ { "di", 0, STD_C89, { T89_I, T99_SC, T89_S, T89_L, T9L_LL, TEX_LL, T99_SST, T99_PD, T99_IM }, "-wp0 +'I", "i", NULL },
+ { "oxX", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0#", "i", NULL },
+ { "u", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0'I", "i", NULL },
+ { "fgG", 0, STD_C89, { T89_D, BADLEN, BADLEN, T99_D, BADLEN, T89_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#'", "", NULL },
+ { "eE", 0, STD_C89, { T89_D, BADLEN, BADLEN, T99_D, BADLEN, T89_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#", "", NULL },
+ { "c", 0, STD_C89, { T89_I, BADLEN, BADLEN, T94_WI, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "", NULL },
+ { "s", 1, STD_C89, { T89_C, BADLEN, BADLEN, T94_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "cR", NULL },
+ { "p", 1, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "c", NULL },
+ { "n", 1, STD_C89, { T89_I, T99_SC, T89_S, T89_L, T9L_LL, BADLEN, T99_SST, T99_PD, T99_IM }, "", "W", NULL },
+ /* C99 conversion specifiers. */
+ { "F", 0, STD_C99, { T99_D, BADLEN, BADLEN, T99_D, BADLEN, T99_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#'", "", NULL },
+ { "aA", 0, STD_C99, { T99_D, BADLEN, BADLEN, T99_D, BADLEN, T99_LD, BADLEN, BADLEN, BADLEN }, "-wp0 +#", "", NULL },
+ /* X/Open conversion specifiers. */
+ { "C", 0, STD_EXT, { TEX_WI, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "", NULL },
+ { "S", 1, STD_EXT, { TEX_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "R", NULL },
+ { "m", 0, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "", NULL },
+ { NULL, 0, 0, NOLENGTHS, NULL, NULL, NULL }
+};
+
static const format_char_info gcc_diag_char_table[] =
{
/* C89 conversion specifiers. */
@@ -741,6 +791,18 @@ static const format_kind_info format_types_orig[] =
FMT_FLAG_ARG_CONVERT|FMT_FLAG_EMPTY_PREC_OK,
'w', 0, 'p', 0, 'L',
NULL, NULL
+ },
+ { "kprintf", kprintf_length_specs, kprint_char_table, " +#0-'I", NULL,
+ printf_flag_specs, printf_flag_pairs,
+ FMT_FLAG_ARG_CONVERT|FMT_FLAG_DOLLAR_MULTIPLE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_EMPTY_PREC_OK,
+ 'w', 0, 'p', 0, 'L',
+ &integer_type_node, &integer_type_node
+ },
+ { "syslog", printf_length_specs, syslog_char_table, " +#0-'I", NULL,
+ printf_flag_specs, printf_flag_pairs,
+ FMT_FLAG_ARG_CONVERT|FMT_FLAG_DOLLAR_MULTIPLE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_EMPTY_PREC_OK,
+ 'w', 0, 'p', 0, 'L',
+ &integer_type_node, &integer_type_node
},
{ "gcc_diag", gcc_diag_length_specs, gcc_diag_char_table, "q+", NULL,
gcc_diag_flag_specs, gcc_diag_flag_pairs,

View File

@ -0,0 +1,32 @@
$OpenBSD: patch-gcc_c-incpath_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/c-incpath.c.orig Sun Feb 15 04:17:54 2009
+++ gcc/c-incpath.c Mon Jun 22 00:59:21 2009
@@ -163,9 +163,9 @@ add_standard_paths (const char *sysroot, const char *i
continue;
if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len))
{
- char *str = concat (iprefix, p->fname + len, NULL);
+ char *str = concat (iprefix, p->fname + len, (void *)0);
if (p->multilib && imultilib)
- str = concat (str, dir_separator_str, imultilib, NULL);
+ str = concat (str, dir_separator_str, imultilib, (void *)0);
add_path (str, SYSTEM, p->cxx_aware, false);
}
}
@@ -184,14 +184,14 @@ add_standard_paths (const char *sysroot, const char *i
#ifdef ENABLE_LLVM
str = TARGET_BUILD_SYSROOT_PATH(sysroot, p->fname);
#else
- str = concat (sysroot, p->fname, NULL);
+ str = concat (sysroot, p->fname, (void *)0);
#endif
/* LLVM LOCAL end sysroot */
else
str = update_path (p->fname, p->component);
if (p->multilib && imultilib)
- str = concat (str, dir_separator_str, imultilib, NULL);
+ str = concat (str, dir_separator_str, imultilib, (void *)0);
add_path (str, SYSTEM, p->cxx_aware, false);
}

View File

@ -0,0 +1,76 @@
$OpenBSD: patch-gcc_collect2_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/collect2.c.orig Tue Sep 2 22:45:01 2008
+++ gcc/collect2.c Mon Jun 22 00:59:51 2009
@@ -759,19 +759,19 @@ main (int argc, char **argv)
qualify the program name with the target machine. */
const char *const full_ld_suffix =
- concat(target_machine, "-", ld_suffix, NULL);
+ concat(target_machine, "-", ld_suffix, (char *)0);
const char *const full_nm_suffix =
- concat (target_machine, "-", nm_suffix, NULL);
+ concat (target_machine, "-", nm_suffix, (char *)0);
const char *const full_gnm_suffix =
- concat (target_machine, "-", gnm_suffix, NULL);
+ concat (target_machine, "-", gnm_suffix, (char *)0);
#ifdef LDD_SUFFIX
const char *const full_ldd_suffix =
- concat (target_machine, "-", ldd_suffix, NULL);
+ concat (target_machine, "-", ldd_suffix, (char *)0);
#endif
const char *const full_strip_suffix =
- concat (target_machine, "-", strip_suffix, NULL);
+ concat (target_machine, "-", strip_suffix, (char *)0);
const char *const full_gstrip_suffix =
- concat (target_machine, "-", gstrip_suffix, NULL);
+ concat (target_machine, "-", gstrip_suffix, (char *)0);
#else
const char *const full_ld_suffix = ld_suffix;
const char *const full_nm_suffix = nm_suffix;
@@ -968,7 +968,7 @@ main (int argc, char **argv)
/* APPLE LOCAL begin mainline 4.3 2006-12-13 CROSS_DIRECTORY_STRUCTURE 4697325 */
#ifdef CROSS_DIRECTORY_STRUCTURE
/* APPLE LOCAL end mainline 4.3 2006-12-13 CROSS_DIRECTORY_STRUCTURE 4697325 */
- c_file_name = concat (target_machine, "-gcc", NULL);
+ c_file_name = concat (target_machine, "-gcc", (char *)0);
#else
c_file_name = "gcc";
#endif
@@ -1246,7 +1246,7 @@ main (int argc, char **argv)
if (exports.first)
{
- char *buf = concat ("-bE:", export_file, NULL);
+ char *buf = concat ("-bE:", export_file, (char *)0);
*ld1++ = buf;
*ld2++ = buf;
@@ -1411,7 +1411,7 @@ main (int argc, char **argv)
/* Tell the linker that we have initializer and finalizer functions. */
#ifdef LD_INIT_SWITCH
#ifdef COLLECT_EXPORT_LIST
- *ld2++ = concat (LD_INIT_SWITCH, ":", initname, ":", fininame, NULL);
+ *ld2++ = concat (LD_INIT_SWITCH, ":", initname, ":", fininame, (char *)0);
#else
*ld2++ = LD_INIT_SWITCH;
*ld2++ = initname;
@@ -1426,7 +1426,7 @@ main (int argc, char **argv)
/* If we did not add export flag to link arguments before, add it to
second link phase now. No new exports should have been added. */
if (! exports.first)
- *ld2++ = concat ("-bE:", export_file, NULL);
+ *ld2++ = concat ("-bE:", export_file, (char *)0);
#ifndef LD_INIT_SWITCH
add_to_list (&exports, initname);
@@ -1823,8 +1823,8 @@ write_c_file_stat (FILE *stream, const char *name ATTR
notice ("\nwrite_c_file - output name is %s, prefix is %s\n",
output_file, prefix);
- initname = concat ("_GLOBAL__FI_", prefix, NULL);
- fininame = concat ("_GLOBAL__FD_", prefix, NULL);
+ initname = concat ("_GLOBAL__FI_", prefix, (char *)0);
+ fininame = concat ("_GLOBAL__FD_", prefix, (char *)0);
free (prefix);

View File

@ -0,0 +1,44 @@
$OpenBSD: patch-gcc_config_exec-stack_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/exec-stack.h.orig Wed Oct 18 13:49:09 2006
+++ gcc/config/exec-stack.h Wed Oct 18 13:49:04 2006
@@ -0,0 +1,40 @@
+/* Enable stack execute around trampoline address.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#undef FINALIZE_TRAMPOLINE
+#define FINALIZE_TRAMPOLINE(TRAMP) \
+ emit_library_call(gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"), \
+ 0, VOIDmode, 1, memory_address (SImode, (TRAMP)), Pmode)
+
+#undef TRANSFER_FROM_TRAMPOLINE
+#define TRANSFER_FROM_TRAMPOLINE \
+extern void __enable_execute_stack (void *); \
+void \
+__enable_execute_stack (addr) \
+ void *addr; \
+{ \
+ long size = getpagesize (); \
+ long mask = ~(size-1); \
+ char *page = (char *) (((long) addr) & mask); \
+ char *end = (char *) ((((long) (addr + TRAMPOLINE_SIZE)) & mask) + size); \
+ \
+ if (mprotect (page, end - page, PROT_READ | PROT_WRITE | PROT_EXEC) < 0) \
+ perror ("mprotect of trampoline code"); \
+}

View File

@ -0,0 +1,93 @@
--- gcc/config.gcc.orig Tue Jun 16 19:53:18 2009
+++ gcc/config.gcc Mon Jun 22 00:53:54 2009
@@ -598,6 +598,11 @@ case ${target} in
*-*-openbsd2.*|*-*-openbsd3.[012])
tm_defines="${tm_defines} HAS_LIBC_R=1" ;;
esac
+ case ${target} in
+ *-*-openbsd[1-3].*|*-*-openbsd4.[012]) ;;
+ *)
+ default_use_cxa_atexit=yes ;;
+ esac
;;
*-*-rtems*)
case ${enable_threads} in
@@ -664,7 +669,7 @@ alpha*-*-netbsd*)
;;
alpha*-*-openbsd*)
tm_defines="${tm_defines} OBSD_NO_DYNAMIC_LIBRARIES OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
- tm_file="alpha/alpha.h openbsd.h alpha/openbsd.h"
+ tm_file="alpha/alpha.h alpha/elf.h openbsd.h openbsd-libpthread.h alpha/openbsd.h"
# default x-alpha is only appropriate for dec-osf.
target_cpu_default="MASK_GAS"
tmake_file="alpha/t-alpha alpha/t-ieee"
@@ -1139,10 +1144,15 @@ i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
;;
i[34567]86-*-openbsd*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
- tm_file="${tm_file} openbsd.h i386/openbsdelf.h"
+ tm_file="${tm_file} openbsd.h openbsd-libpthread.h i386/openbsdelf.h"
gas=yes
gnu_ld=yes
;;
+x86_64-*-openbsd*)
+ tm_file="i386/biarch64.h i386/i386.h i386/unix.h i386/att.h dbxelf.h elfos.h openbsd.h openbsd-libpthread.h i386/x86-64.h i386/openbsd64.h"
+ tm_file="${tm_file} exec-stack.h"
+ tmake_file="t-libc-ok t-openbsd i386/t-openbsd"
+ ;;
i[34567]86-*-coff*)
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/i386-coff.h"
use_fixproto=yes
@@ -1542,7 +1552,7 @@ m68010-*-netbsdelf* | m68k*-*-netbsdelf*)
m68k*-*-openbsd*)
# needed to unconfuse gdb
tm_defines="${tm_defines} OBSD_OLD_GAS TARGET_DEFAULT=(MASK_68020|MASK_68881|MASK_BITFIELD)"
- tm_file="m68k/m68k.h openbsd.h m68k/openbsd.h"
+ tm_file="m68k/m68k.h openbsd.h openbsd-libpthread.h m68k/openbsd.h"
tmake_file="t-libc-ok t-openbsd m68k/t-openbsd"
# we need collect2 until our bug is fixed...
use_collect2=yes
@@ -1632,7 +1642,7 @@ mips*-*-linux*) # Linux MIPS, either endian.
mips*-*-openbsd*)
tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_OBJECT OBSD_HAS_CORRECT_SPECS"
target_cpu_default="MASK_ABICALLS"
- tm_file="mips/mips.h openbsd.h mips/openbsd.h mips/sdb.h"
+ tm_file="mips/mips.h openbsd.h openbsd-libpthread.h mips/openbsd.h mips/sdb.h"
case ${target} in
mips*el-*-openbsd*)
tm_defines="${tm_defines} TARGET_ENDIAN_DEFAULT=0";;
@@ -1762,11 +1772,11 @@ pdp11-*-bsd)
pdp11-*-*)
use_fixproto=yes
;;
-# port not yet contributed
-#powerpc-*-openbsd*)
-# tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-fprules-fpbit "
-# extra_headers=
-# ;;
+powerpc-*-openbsd*)
+ tm_file="${tm_file} dbxelf.h elfos.h openbsd.h openbsd-libpthread.h freebsd-spec.h rs6000/sysv4.h rs6000/openbsd.h"
+ tmake_file="${tmake_file} rs6000/t-openbsd"
+ extra_options="${extra_options} rs6000/sysv4.opt"
+ ;;
powerpc64-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
test x$with_cpu != x || cpu_is_64bit=yes
@@ -2240,7 +2250,7 @@ sparc-*-netbsdelf*)
extra_options="${extra_options} sparc/long-double-switch.opt"
;;
sparc64-*-openbsd*)
- tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h openbsd.h sparc/openbsd64.h"
+ tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h openbsd.h openbsd-libpthread.h sparc/openbsd64.h"
extra_options="${extra_options} sparc/little-endian.opt"
gas=yes gnu_ld=yes
with_cpu=ultrasparc
@@ -2506,7 +2516,7 @@ vax-*-netbsd*)
use_collect2=yes
;;
vax-*-openbsd*)
- tm_file="vax/vax.h vax/openbsd1.h openbsd.h vax/openbsd.h"
+ tm_file="vax/vax.h vax/openbsd1.h openbsd.h openbsd-libpthread.h vax/openbsd.h"
use_collect2=yes
;;
vax-*-ultrix*) # VAXen running ultrix

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-gcc_config_host,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config.host.orig Tue Nov 25 22:26:23 2008
+++ gcc/config.host Mon Jun 22 00:53:54 2009
@@ -214,6 +214,10 @@ case ${host} in
out_host_hook_obj=host-solaris.o
host_xmake_file="${host_xmake_file} x-solaris"
;;
+ *-*-openbsd*)
+ out_host_hook_obj=host-openbsd.o
+ host_xmake_file="${host_xmake_file} x-openbsd"
+ ;;
*-*-linux*)
out_host_hook_obj=host-linux.o
host_xmake_file="${host_xmake_file} x-linux"

View File

@ -0,0 +1,111 @@
$OpenBSD: patch-gcc_config_host-openbsd_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/host-openbsd.c.orig Wed Apr 23 07:42:45 2008
+++ gcc/config/host-openbsd.c Wed Apr 23 17:57:19 2008
@@ -0,0 +1,107 @@
+/* OpenBSD host-specific hook definitions.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 2, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING. If not, write to the
+ Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA. */
+
+#include <limits.h>
+#include <unistd.h>
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "hosthooks.h"
+#include "hosthooks-def.h"
+
+#undef HOST_HOOKS_GT_PCH_GET_ADDRESS
+#define HOST_HOOKS_GT_PCH_GET_ADDRESS openbsd_gt_pch_get_address
+
+#undef HOST_HOOKS_GT_PCH_USE_ADDRESS
+#define HOST_HOOKS_GT_PCH_USE_ADDRESS openbsd_gt_pch_use_address
+
+/* Return the address of the PCH address space, if the PCH will fit in it. */
+
+void *
+openbsd_gt_pch_get_address (size_t size, int fd ATTRIBUTE_UNUSED)
+{
+ void *base, *addr;
+ size_t pgsz;
+
+ if (size > INT_MAX)
+ return NULL;
+
+ pgsz = sysconf(_SC_PAGESIZE);
+ if (pgsz == (size_t)-1)
+ return NULL;
+
+ base = sbrk(0);
+
+ /* round up to nearest page */
+ base = (void *)(((long)base + (pgsz - 1)) & ~(pgsz - 1));
+ if (brk(base) != 0)
+ return NULL;
+
+ /* attempt to allocate size */
+ addr = sbrk(size);
+ if (addr == (void *)-1)
+ return NULL;
+
+ /* deallocate the memory */
+ if (brk(base) != 0)
+ return NULL;
+
+ /* confirm addr is as expected */
+ if (addr != base)
+ return NULL;
+
+ return base;
+}
+
+/* Return 0 if we can reserve the PCH address space. */
+
+int
+openbsd_gt_pch_use_address (void *base, size_t size, int fd ATTRIBUTE_UNUSED, size_t off ATTRIBUTE_UNUSED)
+{
+ void *addr;
+
+ if (size == 0)
+ return -1;
+
+ /* sanity check base address */
+ addr = sbrk(0);
+ if (addr == (void *)-1 || base < addr)
+ return -1;
+
+ /* set base for sbrk */
+ if (brk(base) != 0)
+ return -1;
+
+ /* attempt to get the memory */
+ addr = sbrk(size);
+ if (addr == (void *)-1)
+ return -1;
+
+ /* sanity check the result */
+ if (addr != base) {
+ brk(base);
+ return -1;
+ }
+
+ return 0;
+}
+
+const struct host_hooks host_hooks = HOST_HOOKS_INITIALIZER;

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-gcc_config_i386_driver-i386_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/i386/driver-i386.c.orig Thu Dec 4 05:19:42 2008
+++ gcc/config/i386/driver-i386.c Mon Jun 22 00:53:54 2009
@@ -271,7 +271,7 @@ const char *host_detect_local_cpu (int argc, const cha
}
done:
- return concat ("-m", argv[0], "=", cpu, NULL);
+ return concat ("-m", argv[0], "=", cpu, (void *)0);
}
#else
/* If we aren't compiling with GCC we just provide a minimal
@@ -297,7 +297,7 @@ const char *host_detect_local_cpu (int argc, const cha
else
cpu = "generic";
- return concat ("-m", argv[0], "=", cpu, NULL);
+ return concat ("-m", argv[0], "=", cpu, (void *)0);
}
#endif /* GCC_VERSION */
/* LLVM LOCAL fix bootstrap failure on ppc host */

View File

@ -0,0 +1,125 @@
$OpenBSD: patch-gcc_config_i386_openbsd64_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/i386/openbsd64.h.orig Wed Oct 18 13:48:08 2006
+++ gcc/config/i386/openbsd64.h Wed Oct 18 13:48:02 2006
@@ -0,0 +1,121 @@
+/* Configuration for an OpenBSD x86-64 target.
+
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (OpenBSD/x86-64 ELF)")
+
+/* This gets defined in tm.h->linux.h->svr4.h, and keeps us from using
+ libraries compiled with the native cc, so undef it. */
+#undef NO_DOLLAR_IN_LABEL
+
+/* Override the default comment-starter of "/". */
+#undef ASM_COMMENT_START
+#define ASM_COMMENT_START "#"
+
+/* Run-time target specifications */
+
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ OPENBSD_OS_CPP_BUILTINS_ELF(); \
+ if (TARGET_64BIT) \
+ OPENBSD_OS_CPP_BUILTINS_LP64(); \
+ } \
+ while (0)
+
+/* As an elf system, we need crtbegin/crtend stuff. */
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "\
+ %{!shared: %{pg:gcrt0%O%s} %{!pg:%{p:gcrt0%O%s} %{!p:crt0%O%s}} \
+ crtbegin%O%s} %{shared:crtbeginS%O%s}"
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC "%{!shared:crtend%O%s} %{shared:crtendS%O%s}"
+
+/* Layout of source language data types. */
+
+/* This must agree with <machine/_types.h> */
+#undef SIZE_TYPE
+#define SIZE_TYPE "long unsigned int"
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE "long int"
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "int"
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+/* Assembler format: overall framework. */
+
+#undef ASM_APP_ON
+#define ASM_APP_ON "#APP\n"
+
+#undef ASM_APP_OFF
+#define ASM_APP_OFF "#NO_APP\n"
+
+#undef SET_ASM_OP
+#define SET_ASM_OP "\t.set\t"
+
+/* The following macros were originally stolen from i386v4.h.
+ These have to be defined to get PIC code correct. */
+
+/* Assembler format: dispatch tables. */
+
+/* Assembler format: sections. */
+
+/* Stack & calling: aggregate returns. */
+
+/* Don't default to pcc-struct-return, because gcc is the only compiler, and
+ we want to retain compatibility with older gcc versions. */
+#define DEFAULT_PCC_STRUCT_RETURN 0
+
+/* Assembler format: alignment output. */
+
+/* Stack & calling: profiling. */
+
+/* OpenBSD's profiler recovers all information from the stack pointer.
+ The icky part is not here, but in machine/profile.h. */
+#undef FUNCTION_PROFILER
+#define FUNCTION_PROFILER(FILE, LABELNO) \
+ fputs (flag_pic ? "\tcall __mcount@PLT\n": "\tcall __mcount\n", FILE);
+
+/* Assembler format: exception region output. */
+
+/* Assembler format: alignment output. */
+
+/* Note that we pick up ASM_OUTPUT_MAX_SKIP_ALIGN from i386/gas.h */
+
+/* Note that we pick up ASM_OUTPUT_MI_THUNK from unix.h. */
+
+#undef LINK_SPEC
+#define LINK_SPEC \
+ "%{!shared:%{!nostdlib:%{!r*:%{!e*:-e __start}}}} \
+ %{shared:-shared} %{R*} \
+ %{static:-Bstatic} \
+ %{!static:-Bdynamic} \
+ %{assert*} \
+ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.so}"
+
+#define OBSD_HAS_CORRECT_SPECS
+
+#undef JUMP_TABLES_IN_TEXT_SECTION
+#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)

View File

@ -0,0 +1,25 @@
$OpenBSD: patch-gcc_config_i386_openbsd_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/i386/openbsd.h.orig Fri Aug 3 18:23:08 2007
+++ gcc/config/i386/openbsd.h Mon Jun 22 00:53:55 2009
@@ -41,16 +41,19 @@ Boston, MA 02110-1301, USA. */
/* This must agree with <machine/ansi.h> */
#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
+#define SIZE_TYPE "long unsigned int"
#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
+#define PTRDIFF_TYPE "long int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
+
+#undef WINT_TYPE
+#define WINT_TYPE "int"
/* Assembler format: overall framework. */

View File

@ -0,0 +1,26 @@
$OpenBSD: patch-gcc_config_i386_openbsdelf_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/i386/openbsdelf.h.orig Fri Aug 3 18:23:08 2007
+++ gcc/config/i386/openbsdelf.h Mon Jun 22 00:53:55 2009
@@ -56,10 +56,10 @@ Boston, MA 02110-1301, USA. */
/* This must agree with <machine/ansi.h> */
#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
+#define SIZE_TYPE "long unsigned int"
#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
+#define PTRDIFF_TYPE "long int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
@@ -110,9 +110,6 @@ Boston, MA 02110-1301, USA. */
fputs (flag_pic ? "\tcall __mcount@PLT\n": "\tcall __mcount\n", FILE);
/* Assembler format: exception region output. */
-
-/* our configuration still doesn't handle dwarf2 correctly */
-#define DWARF2_UNWIND_INFO 0
/* Assembler format: alignment output. */

View File

@ -0,0 +1,25 @@
$OpenBSD: patch-gcc_config_m68k_openbsd_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/m68k/openbsd.h.orig Wed Jul 11 22:32:42 2007
+++ gcc/config/m68k/openbsd.h Mon Jun 22 00:53:55 2009
@@ -44,16 +44,19 @@ Boston, MA 02110-1301, USA. */
/* This must agree with <machine/ansi.h> */
#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
+#define SIZE_TYPE "long unsigned int"
#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
+#define PTRDIFF_TYPE "long int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
+
+#undef WINT_TYPE
+#define WINT_TYPE "int"
/* Storage layout. */

View File

@ -0,0 +1,25 @@
$OpenBSD: patch-gcc_config_mips_openbsd_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/mips/openbsd.h.orig Wed Jul 11 22:32:42 2007
+++ gcc/config/mips/openbsd.h Mon Jun 22 00:53:55 2009
@@ -58,16 +58,19 @@ Boston, MA 02110-1301, USA. */
/* This must agree with <machine/ansi.h>. */
#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
+#define SIZE_TYPE "long unsigned int"
#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
+#define PTRDIFF_TYPE "long int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
+
+#undef WINT_TYPE
+#define WINT_TYPE "int"
/* Controlling the compilation driver. */

View File

@ -0,0 +1,27 @@
$OpenBSD: patch-gcc_config_openbsd-libpthread_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/openbsd-libpthread.h.orig Wed Oct 18 13:46:36 2006
+++ gcc/config/openbsd-libpthread.h Wed Oct 18 13:46:50 2006
@@ -0,0 +1,23 @@
+/* LIB_SPEC appropriate for OpenBSD. Include -lpthread if -pthread is
+ specified on the command line. */
+/* Copyright (C) 2004 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#define OBSD_LIB_SPEC "%{!shared:%{pthread:-lpthread} -lc}"
+

View File

@ -0,0 +1,82 @@
$OpenBSD: patch-gcc_config_openbsd_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/openbsd.h.orig Wed Jul 11 22:32:42 2007
+++ gcc/config/openbsd.h Mon Jun 22 00:53:56 2009
@@ -73,6 +73,37 @@ Boston, MA 02110-1301, USA. */
/* Controlling the compilation driver. */
/* TARGET_OS_CPP_BUILTINS() common to all OpenBSD targets. */
+#define OPENBSD_OS_CPP_BUILTINS_COMMON() \
+ do \
+ { \
+ builtin_define ("__OpenBSD__"); \
+ builtin_define ("__unix__"); \
+ builtin_define ("__ANSI_COMPAT"); \
+ builtin_assert ("system=unix"); \
+ builtin_assert ("system=bsd"); \
+ builtin_assert ("system=OpenBSD"); \
+ } \
+ while (0)
+
+/* TARGET_OS_CPP_BUILTINS() common to all OpenBSD ELF targets. */
+#define OPENBSD_OS_CPP_BUILTINS_ELF() \
+ do \
+ { \
+ OPENBSD_OS_CPP_BUILTINS_COMMON(); \
+ builtin_define ("__ELF__"); \
+ } \
+ while (0)
+
+/* TARGET_OS_CPP_BUILTINS() common to all LP64 OpenBSD targets. */
+#define OPENBSD_OS_CPP_BUILTINS_LP64() \
+ do \
+ { \
+ builtin_define ("_LP64"); \
+ builtin_define ("__LP64__"); \
+ } \
+ while (0)
+
+/* XXX old stuff TARGET_OS_CPP_BUILTINS() common to all OpenBSD targets. */
#define OPENBSD_OS_CPP_BUILTINS() \
do \
{ \
@@ -96,16 +127,9 @@ Boston, MA 02110-1301, USA. */
#define OBSD_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}"
#endif
-/* LIB_SPEC appropriate for OpenBSD. */
-#ifdef HAS_LIBC_R
-/* -lc(_r)?(_p)?, select _r for threads, and _p for p or pg. */
-# define OBSD_LIB_SPEC "%{!shared:-lc%{pthread:_r}%{p:_p}%{!p:%{pg:_p}}}"
-#else
-/* Include -lpthread if -pthread is specified on the command line. */
-# define OBSD_LIB_SPEC "%{!shared:%{pthread:-lpthread%{p:_p}%{!p:%{pg:_p}}}} %{!shared:-lc%{p:_p}%{!p:%{pg:_p}}}"
-#endif
+#undef LIB_SPEC
+#define LIB_SPEC OBSD_LIB_SPEC
-
#ifndef OBSD_HAS_CORRECT_SPECS
#ifndef OBSD_NO_DYNAMIC_LIBRARIES
@@ -140,6 +164,10 @@ Boston, MA 02110-1301, USA. */
"%{g:%{!nostdlib:-L/usr/lib/debug}} %{!shared:%{!nostdlib:%{!r*:%{!e*:-e start}}}} %{shared:-Bshareable -x} -dc -dp %{R*} %{static:-Bstatic} %{assert*}"
#endif
+#if defined(HAVE_LD_EH_FRAME_HDR)
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
+#endif
+
#undef LIB_SPEC
#define LIB_SPEC OBSD_LIB_SPEC
#endif
@@ -282,10 +310,6 @@ do { \
/* Storage layout. */
-/* Otherwise, since we support weak, gthr.h erroneously tries to use
- #pragma weak. */
-#define GTHREAD_USE_WEAK 0
-
/* bug work around: we don't want to support #pragma weak, but the current
code layout needs HANDLE_PRAGMA_WEAK asserted for __attribute((weak)) to
work. On the other hand, we don't define HANDLE_PRAGMA_WEAK directly,

View File

@ -0,0 +1,28 @@
$OpenBSD: patch-gcc_config_rs6000_openbsd1_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/rs6000/openbsd1.h.orig Tue Jun 12 14:05:16 2007
+++ gcc/config/rs6000/openbsd1.h Tue Jun 12 14:05:16 2007
@@ -0,0 +1,24 @@
+/* Configuration file for an rs6000 OpenBSD target.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#define OBSD_HAS_CORRECT_SPECS
+#define OBSD_HAS_DECLARE_FUNCTION_NAME
+#define OBSD_HAS_DECLARE_FUNCTION_SIZE
+#define OBSD_HAS_DECLARE_OBJECT

View File

@ -0,0 +1,136 @@
$OpenBSD: patch-gcc_config_rs6000_openbsd_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/rs6000/openbsd.h.orig Sat Jun 9 17:11:08 2007
+++ gcc/config/rs6000/openbsd.h Sat Jun 9 18:24:52 2007
@@ -0,0 +1,132 @@
+/* Configuration file for an rs6000 OpenBSD target.
+ Copyright (C) 1999 Free Software Foundation, Inc.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* XXX need to check ASM_WEAKEN_LABEL/ASM_GLOBALIZE_LABEL. */
+
+/* Run-time target specifications. */
+#undef TARGET_OS_CPP_BUILTINS /* FIXME: sysv4.h should not define this! */
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ OPENBSD_OS_CPP_BUILTINS_ELF(); \
+ builtin_define ("__PPC"); \
+ builtin_define ("__PPC__"); \
+ builtin_define ("__powerpc"); \
+ builtin_define ("__powerpc__"); \
+ builtin_assert ("cpu=powerpc"); \
+ builtin_assert ("machine=powerpc"); \
+ } \
+ while (0)
+
+/* Override the default from rs6000.h to avoid conflicts with macros
+ defined in OpenBSD header files. */
+
+#undef RS6000_CPU_CPP_ENDIAN_BUILTINS
+#define RS6000_CPU_CPP_ENDIAN_BUILTINS() \
+ do \
+ { \
+ if (BYTES_BIG_ENDIAN) \
+ { \
+ builtin_define ("__BIG_ENDIAN__"); \
+ builtin_assert ("machine=bigendian"); \
+ } \
+ else \
+ { \
+ builtin_define ("__LITTLE_ENDIAN__"); \
+ builtin_assert ("machine=littleendian"); \
+ } \
+ } \
+ while (0)
+
+#undef CPP_OS_DEFAULT_SPEC
+#define CPP_OS_DEFAULT_SPEC "%(cpp_os_openbsd)"
+
+#undef LINKER_NAME
+#define LINKER_NAME "ld"
+
+#undef LINK_SPEC
+#define LINK_SPEC "%{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.so}} \
+ %{static:-static}}"
+
+#undef LIB_DEFAULT_SPEC
+#define LIB_DEFAULT_SPEC "%(lib_openbsd)"
+
+#undef STARTFILE_DEFAULT_SPEC
+#define STARTFILE_DEFAULT_SPEC "%(startfile_openbsd)"
+
+#undef ENDFILE_DEFAULT_SPEC
+#define ENDFILE_DEFAULT_SPEC "%(endfile_openbsd)"
+
+#undef LINK_START_DEFAULT_SPEC
+#define LINK_START_DEFAULT_SPEC "%(link_start_openbsd)"
+
+#undef LINK_OS_DEFAULT_SPEC
+#define LINK_OS_DEFAULT_SPEC "%(link_os_openbsd)"
+
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (PowerPC OpenBSD)");
+
+/* Default ABI to use */
+#undef RS6000_ABI_NAME
+#define RS6000_ABI_NAME "openbsd"
+
+/* Define this macro as a C expression for the initializer of an
+ array of string to tell the driver program which options are
+ defaults for this target and thus do not need to be handled
+ specially when using `MULTILIB_OPTIONS'.
+
+ Do not define this macro if `MULTILIB_OPTIONS' is not defined in
+ the target makefile fragment or if none of the options listed in
+ `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */
+
+#undef MULTILIB_DEFAULTS
+#define MULTILIB_DEFAULTS { "mbig", "mcall-openbsd" }
+
+/* collect2 support (Macros for initialization). */
+
+
+/* Don't tell collect2 we use COFF as we don't have (yet ?) a dynamic ld
+ library with the proper functions to handle this -> collect2 will
+ default to using nm. */
+#undef OBJECT_FORMAT_COFF
+
+/* Some code gets optimized incorrectly by move_movables() in loop.c */
+#define BROKEN_MOVE_MOVABLES_P
+
+/* This must agree with <machine/_types.h> */
+#undef SIZE_TYPE
+#define SIZE_TYPE "long unsigned int"
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE "long int"
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "int"
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+#undef TRAMPOLINE_SIZE
+#define TRAMPOLINE_SIZE 40
+

View File

@ -0,0 +1,59 @@
$OpenBSD: patch-gcc_config_rs6000_t-openbsd,v 1.1.1.1 2009/06/22 22:37:31 sthen Exp $
--- gcc/config/rs6000/t-openbsd.orig Tue Jun 12 12:23:22 2007
+++ gcc/config/rs6000/t-openbsd Tue Jun 12 12:18:16 2007
@@ -0,0 +1,55 @@
+# include t-rs6000 too
+# this is taken from t-ppccomm
+# but crt* removed.
+
+
+LIB2FUNCS_EXTRA = tramp.S
+
+# This one can't end up in shared libgcc
+LIB2FUNCS_STATIC_EXTRA = eabi.S
+
+# We want fine grained libraries, so use the new code to build the
+# floating point emulation libraries.
+FPBIT = fp-bit.c
+DPBIT = dp-bit.c
+
+
+dp-bit.c: $(srcdir)/config/fp-bit.c
+ cat $(srcdir)/config/fp-bit.c > dp-bit.c
+
+fp-bit.c: $(srcdir)/config/fp-bit.c
+ echo '#define FLOAT' > fp-bit.c
+ cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+
+eabi.S: $(srcdir)/config/rs6000/eabi.asm
+ cat $(srcdir)/config/rs6000/eabi.asm > eabi.S
+
+tramp.S: $(srcdir)/config/rs6000/tramp.asm
+ cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
+
+# Switch synonyms
+MULTILIB_MATCHES_FLOAT = msoft-float=mcpu?401 \
+ msoft-float=mcpu?403 \
+ msoft-float=mcpu?ec603e \
+ msoft-float=mcpu?801 \
+ msoft-float=mcpu?821 \
+ msoft-float=mcpu?823 \
+ msoft-float=mcpu?860
+MULTILIB_MATCHES_ENDIAN = mlittle=mlittle-endian mbig=mbig-endian
+MULTILIB_MATCHES_SYSV = mcall-sysv=mcall-sysv-eabi mcall-sysv=mcall-sysv-noeabi mcall-sysv=mcall-linux mcall-sysv=mcall-netbsd
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
+EXTRA_MULTILIB_PARTS = crtsavres$(objext)
+
+crtsavres.S: $(srcdir)/config/rs6000/crtsavres.asm
+ cat $(srcdir)/config/rs6000/crtsavres.asm >crtsavres.S
+
+$(T)crtsavres$(objext): crtsavres.S
+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavres.S -o $(T)crtsavres$(objext)
+
+# It is important that crtbegin.o, etc., aren't surprised by stuff in .sdata.
+CRTSTUFF_T_CFLAGS = -msdata=none
+# Make sure crt*.o are built with -fPIC even if configured with
+# --enable-shared --disable-multilib
+CRTSTUFF_T_CFLAGS_S = -fPIC -msdata=none

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-gcc_config_t-openbsd,v 1.1.1.1 2009/06/22 22:37:31 sthen Exp $
--- gcc/config/t-openbsd.orig Tue Sep 23 20:56:00 2003
+++ gcc/config/t-openbsd Sat Apr 11 14:22:32 2009
@@ -1,2 +1,8 @@
# We don't need GCC's own include files.
-USER_H =
+USER_H = $(EXTRA_HEADERS)
+# Use unwind-dw2-fde-glibc
+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-openbsd.c \
+ $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c \
+ unwind-dw2-fde-glibc.c
+

View File

@ -0,0 +1,23 @@
$OpenBSD: patch-gcc_config_vax_openbsd_h,v 1.1.1.1 2009/06/22 22:37:31 sthen Exp $
--- gcc/config/vax/openbsd.h.orig Wed Jul 11 22:32:42 2007
+++ gcc/config/vax/openbsd.h Mon Jun 22 00:53:58 2009
@@ -34,13 +34,17 @@ Boston, MA 02110-1301, USA. */
/* This must agree with <machine/ansi.h> */
#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
+#define SIZE_TYPE "long unsigned int"
#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
+#define PTRDIFF_TYPE "long int"
#undef WCHAR_TYPE
#define WCHAR_TYPE "int"
#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32
+
+#undef WINT_TYPE
+#define WINT_TYPE "int"
+

View File

@ -0,0 +1,8 @@
$OpenBSD: patch-gcc_config_x-openbsd,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/config/x-openbsd.orig Mon Jan 31 14:50:47 2005
+++ gcc/config/x-openbsd Mon Jan 31 14:51:13 2005
@@ -0,0 +1,4 @@
+host-openbsd.o : $(srcdir)/config/host-openbsd.c $(CONFIG_H) $(SYSTEM_H) \
+ coretypes.h hosthooks.h hosthooks-def.h $(HOOKS_H)
+ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(srcdir)/config/host-openbsd.c

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_coverage_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/coverage.c.orig Mon Nov 3 07:33:15 2008
+++ gcc/coverage.c Mon Jun 22 00:53:58 2009
@@ -810,7 +810,7 @@ build_gcov_info (void)
fields = field;
filename = getpwd ();
filename = (filename && da_file_name[0] != '/'
- ? concat (filename, "/", da_file_name, NULL)
+ ? concat (filename, "/", da_file_name, (void *)0)
: da_file_name);
filename_len = strlen (filename);
filename_string = build_string (filename_len + 1, filename);

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-gcc_cp_call_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/cp/call.c.orig Mon Nov 3 07:33:15 2008
+++ gcc/cp/call.c Mon Jun 22 00:53:58 2009
@@ -5414,7 +5414,7 @@ name_as_c_string (tree name, tree type, bool *free_p)
|| name == base_dtor_identifier
|| name == deleting_dtor_identifier)
{
- pretty_name = concat ("~", pretty_name, NULL);
+ pretty_name = concat ("~", pretty_name, (void *)0);
/* Remember that we need to free the memory allocated. */
*free_p = true;
}
@@ -5424,7 +5424,7 @@ name_as_c_string (tree name, tree type, bool *free_p)
pretty_name = concat ("operator ",
type_as_string (TREE_TYPE (name),
TFF_PLAIN_IDENTIFIER),
- NULL);
+ (void *)0);
/* Remember that we need to free the memory allocated. */
*free_p = true;
}

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_cp_decl2_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/cp/decl2.c.orig Mon Nov 3 02:04:09 2008
+++ gcc/cp/decl2.c Mon Jun 22 00:53:58 2009
@@ -3317,7 +3317,7 @@ build_java_method_aliases (void)
oid = DECL_ASSEMBLER_NAME (fndecl);
oname = IDENTIFIER_POINTER (oid);
gcc_assert (oname[0] == '_' && oname[1] == 'Z');
- nname = ACONCAT (("_ZGA", oname+2, NULL));
+ nname = ACONCAT (("_ZGA", oname+2, (char *)0));
nid = get_identifier (nname);
alias = make_alias_for (fndecl, nid);

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_cp_g++spec_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/cp/g++spec.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/cp/g++spec.c Mon Jun 22 00:53:59 2009
@@ -41,7 +41,7 @@ Boston, MA 02110-1301, USA. */
#endif
#ifndef LIBSTDCXX
-#define LIBSTDCXX "-lstdc++"
+#define LIBSTDCXX "-lestdc++"
#endif
#ifndef LIBSTDCXX_PROFILE
#define LIBSTDCXX_PROFILE LIBSTDCXX

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_cp_parser_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/cp/parser.c.orig Sun Feb 15 04:17:54 2009
+++ gcc/cp/parser.c Mon Jun 22 00:53:59 2009
@@ -17612,7 +17612,7 @@ cp_parser_require (cp_parser* parser,
/* Output the MESSAGE -- unless we're parsing tentatively. */
if (!cp_parser_simulate_error (parser))
{
- char *message = concat ("expected ", token_desc, NULL);
+ char *message = concat ("expected ", token_desc, (void *)0);
cp_parser_error (parser, message);
free (message);
}

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_dbxout_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/dbxout.c.orig Tue Sep 2 23:20:12 2008
+++ gcc/dbxout.c Mon Jun 22 00:53:59 2009
@@ -1136,7 +1136,7 @@ dbxout_init (const char *input_file_name)
if (cwd[0] == '\0')
cwd = "/";
else if (!IS_DIR_SEPARATOR (cwd[strlen (cwd) - 1]))
- cwd = concat (cwd, "/", NULL);
+ cwd = concat (cwd, "/", (void *)0);
}
#ifdef DBX_OUTPUT_MAIN_SOURCE_DIRECTORY
/* APPLE LOCAL ss2 */

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_diagnostic_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/diagnostic.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/diagnostic.c Mon Jun 22 00:53:59 2009
@@ -430,7 +430,7 @@ diagnostic_report_diagnostic (diagnostic_context *cont
if (context->show_option_requested && diagnostic->option_index)
diagnostic->message.format_spec
= ACONCAT ((diagnostic->message.format_spec,
- " [", cl_options[diagnostic->option_index].opt_text, "]", NULL));
+ " [", cl_options[diagnostic->option_index].opt_text, "]", (char *)0));
diagnostic->message.locus = &diagnostic->location;
pp_format (context->printer, &diagnostic->message);

View File

@ -0,0 +1,210 @@
$OpenBSD: patch-gcc_gcc_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/gcc.c.orig Mon Jun 22 01:17:01 2009
+++ gcc/gcc.c Mon Jun 22 01:17:03 2009
@@ -1406,7 +1406,7 @@ translate_options (int *argcp, const char *const **arg
/* Store the translation as one argv elt or as two. */
if (arg != 0 && strchr (arginfo, 'j') != 0)
newv[newindex++] = concat (option_map[j].equivalent, arg,
- NULL);
+ (void *)0);
else if (arg != 0)
{
newv[newindex++] = option_map[j].equivalent;
@@ -1746,7 +1746,7 @@ init_gcc_specs (struct obstack *obstack, const char *s
"%{shared:", shared_name, "}"
#endif
#endif
- "}}", NULL);
+ "}}", (void *)0);
obstack_grow (obstack, buf, strlen (buf));
free (buf);
@@ -1944,7 +1944,7 @@ set_spec (const char *name, const char *spec)
old_spec = *(sl->ptr_spec);
*(sl->ptr_spec) = ((spec[0] == '+' && ISSPACE ((unsigned char)spec[1]))
- ? concat (old_spec, spec + 1, NULL)
+ ? concat (old_spec, spec + 1, (void *)0)
: xstrdup (spec));
#ifdef DEBUG_SPECS
@@ -2514,12 +2514,12 @@ for_each_path (const struct path_prefix *paths,
just_multi_suffix = just_machine_suffix;
if (do_multi && multilib_dir && strcmp (multilib_dir, ".") != 0)
{
- multi_dir = concat (multilib_dir, dir_separator_str, NULL);
- multi_suffix = concat (multi_suffix, multi_dir, NULL);
- just_multi_suffix = concat (just_multi_suffix, multi_dir, NULL);
+ multi_dir = concat (multilib_dir, dir_separator_str, (void *)0);
+ multi_suffix = concat (multi_suffix, multi_dir, (void *)0);
+ just_multi_suffix = concat (just_multi_suffix, multi_dir, (void *)0);
}
if (do_multi && multilib_os_dir && strcmp (multilib_os_dir, ".") != 0)
- multi_os_dir = concat (multilib_os_dir, dir_separator_str, NULL);
+ multi_os_dir = concat (multilib_os_dir, dir_separator_str, (void *)0);
while (1)
{
@@ -2867,8 +2867,8 @@ add_sysrooted_prefix (struct path_prefix *pprefix, con
if (target_system_root)
{
if (target_sysroot_suffix)
- prefix = concat (target_sysroot_suffix, prefix, NULL);
- prefix = concat (target_system_root, prefix, NULL);
+ prefix = concat (target_sysroot_suffix, prefix, (void *)0);
+ prefix = concat (target_system_root, prefix, (void *)0);
/* We have to override this because GCC's notion of sysroot
moves along with GCC. */
@@ -3506,7 +3506,7 @@ process_command (int argc, const char **argv)
break;
new_argv0 = xmemdup (progname, baselen,
baselen + concat_length (new_version, new_machine,
- "-gcc-", NULL) + 1);
+ "-gcc-", (void *)0) + 1);
strcpy (new_argv0 + baselen, new_machine);
strcat (new_argv0, "-gcc-");
strcat (new_argv0, new_version);
@@ -3533,7 +3533,7 @@ process_command (int argc, const char **argv)
standard_bindir_prefix,
standard_libexec_prefix);
if (gcc_exec_prefix)
- putenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL));
+ putenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, (void *)0));
}
else
{
@@ -3541,7 +3541,7 @@ process_command (int argc, const char **argv)
GCC_EXEC_PREFIX is typically a directory name with a trailing
/ (which is ignored by make_relative_prefix), so append a
program name. */
- char *tmp_prefix = concat (gcc_exec_prefix, "gcc", NULL);
+ char *tmp_prefix = concat (gcc_exec_prefix, "gcc", (void *)0);
gcc_libexec_prefix = make_relative_prefix (tmp_prefix,
standard_exec_prefix,
standard_libexec_prefix);
@@ -3588,7 +3588,7 @@ process_command (int argc, const char **argv)
{
strncpy (nstore, startp, endp - startp);
if (endp == startp)
- strcpy (nstore, concat (".", dir_separator_str, NULL));
+ strcpy (nstore, concat (".", dir_separator_str, (void *)0));
else if (!IS_DIR_SEPARATOR (endp[-1]))
{
nstore[endp - startp] = DIR_SEPARATOR;
@@ -3622,7 +3622,7 @@ process_command (int argc, const char **argv)
{
strncpy (nstore, startp, endp - startp);
if (endp == startp)
- strcpy (nstore, concat (".", dir_separator_str, NULL));
+ strcpy (nstore, concat (".", dir_separator_str, (void *)0));
else if (!IS_DIR_SEPARATOR (endp[-1]))
{
nstore[endp - startp] = DIR_SEPARATOR;
@@ -3655,7 +3655,7 @@ process_command (int argc, const char **argv)
{
strncpy (nstore, startp, endp - startp);
if (endp == startp)
- strcpy (nstore, concat (".", dir_separator_str, NULL));
+ strcpy (nstore, concat (".", dir_separator_str, (void *)0));
else if (!IS_DIR_SEPARATOR (endp[-1]))
{
nstore[endp - startp] = DIR_SEPARATOR;
@@ -4178,7 +4178,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR
PREFIX_PRIORITY_LAST, 1, 0);
tooldir_prefix = concat (tooldir_base_prefix, spec_machine,
- dir_separator_str, NULL);
+ dir_separator_str, (void *)0);
/* If tooldir is relative, base it on exec_prefixes. A relative
tooldir lets us move the installed tree as a unit.
@@ -4193,28 +4193,28 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR
{
char *gcc_exec_tooldir_prefix
= concat (gcc_exec_prefix, spec_machine, dir_separator_str,
- spec_version, dir_separator_str, tooldir_prefix, NULL);
+ spec_version, dir_separator_str, tooldir_prefix, (void *)0);
add_prefix (&exec_prefixes,
concat (gcc_exec_tooldir_prefix, "bin",
- dir_separator_str, NULL),
+ dir_separator_str, (void *)0),
NULL, PREFIX_PRIORITY_LAST, 0, 0);
add_prefix (&startfile_prefixes,
concat (gcc_exec_tooldir_prefix, "lib",
- dir_separator_str, NULL),
+ dir_separator_str, (void *)0),
NULL, PREFIX_PRIORITY_LAST, 0, 1);
}
tooldir_prefix = concat (standard_exec_prefix, spec_machine,
dir_separator_str, spec_version,
- dir_separator_str, tooldir_prefix, NULL);
+ dir_separator_str, tooldir_prefix, (void *)0);
}
add_prefix (&exec_prefixes,
- concat (tooldir_prefix, "bin", dir_separator_str, NULL),
+ concat (tooldir_prefix, "bin", dir_separator_str, (void *)0),
"BINUTILS", PREFIX_PRIORITY_LAST, 0, 0);
add_prefix (&startfile_prefixes,
- concat (tooldir_prefix, "lib", dir_separator_str, NULL),
+ concat (tooldir_prefix, "lib", dir_separator_str, (void *)0),
"BINUTILS", PREFIX_PRIORITY_LAST, 0, 1);
#if defined(TARGET_SYSTEM_ROOT_RELOCATABLE) && !defined(VMS)
@@ -4338,7 +4338,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR
{ /* POSIX allows separation of -l and the lib arg;
canonicalize by concatenating -l with its arg */
infiles[n_infiles].language = "*";
- infiles[n_infiles++].name = concat ("-l", argv[++i], NULL);
+ infiles[n_infiles++].name = concat ("-l", argv[++i], (void *)0);
}
else if (strncmp (argv[i], "-l", 2) == 0)
{
@@ -6618,8 +6618,8 @@ main (int argc, char **argv)
/* Read specs from a file if there is one. */
machine_suffix = concat (spec_machine, dir_separator_str,
- spec_version, dir_separator_str, NULL);
- just_machine_suffix = concat (spec_machine, dir_separator_str, NULL);
+ spec_version, dir_separator_str, (void *)0);
+ just_machine_suffix = concat (spec_machine, dir_separator_str, (void *)0);
specs_file = find_a_file (&startfile_prefixes, "specs", R_OK, true);
/* Read the specs file unless it is a default one. */
@@ -6743,7 +6743,7 @@ main (int argc, char **argv)
if (gcc_exec_prefix)
add_prefix (&startfile_prefixes,
concat (gcc_exec_prefix, machine_suffix,
- standard_startfile_prefix, NULL),
+ standard_startfile_prefix, (void *)0),
NULL, PREFIX_PRIORITY_LAST, 0, 1);
/* APPLE LOCAL begin ARM sysroot startfile_prefixes */
@@ -6753,13 +6753,13 @@ main (int argc, char **argv)
add_sysrooted_prefix (&startfile_prefixes,
concat (standard_exec_prefix,
machine_suffix,
- standard_startfile_prefix, NULL),
+ standard_startfile_prefix, (void *)0),
NULL, PREFIX_PRIORITY_LAST, 0, 1);
else
add_prefix (&startfile_prefixes,
concat (standard_exec_prefix,
machine_suffix,
- standard_startfile_prefix, NULL),
+ standard_startfile_prefix, (void *)0),
NULL, PREFIX_PRIORITY_LAST, 0, 1);
/* APPLE LOCAL end ARM sysroot startfile_prefixes */
}
@@ -6788,7 +6788,7 @@ main (int argc, char **argv)
/* If we have a GCC_EXEC_PREFIX envvar, modify it for cpp's sake. */
if (gcc_exec_prefix)
gcc_exec_prefix = concat (gcc_exec_prefix, spec_machine, dir_separator_str,
- spec_version, dir_separator_str, NULL);
+ spec_version, dir_separator_str, (void *)0);
/* Now we have the specs.
Set the `valid' bits for switches that match anything in any spec. */

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-gcc_gensupport_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/gensupport.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/gensupport.c Mon Jun 22 00:54:00 2009
@@ -220,7 +220,7 @@ process_include (rtx desc, int lineno)
{
static const char sep[2] = { DIR_SEPARATOR, '\0' };
- pathname = concat (stackp->fname, sep, filename, NULL);
+ pathname = concat (stackp->fname, sep, filename, (void *)0);
input_file = fopen (pathname, "r");
if (input_file != NULL)
goto success;
@@ -229,7 +229,7 @@ process_include (rtx desc, int lineno)
}
if (base_dir)
- pathname = concat (base_dir, filename, NULL);
+ pathname = concat (base_dir, filename, (void *)0);
else
pathname = xstrdup (filename);
input_file = fopen (pathname, "r");

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_objc_objc-act_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/objc/objc-act.c.orig Sat May 9 00:16:04 2009
+++ gcc/objc/objc-act.c Mon Jun 22 00:54:00 2009
@@ -751,7 +751,7 @@ objc_init (void)
/* If gen_declaration desired, open the output file. */
if (flag_gen_declaration)
{
- register char * const dumpname = concat (dump_base_name, ".decl", NULL);
+ register char * const dumpname = concat (dump_base_name, ".decl", (void *)0);
gen_declaration_file = fopen (dumpname, "w");
if (gen_declaration_file == 0)
fatal_error ("can't open %s: %m", dumpname);

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_omp-low_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/omp-low.c.orig Fri Aug 3 02:00:37 2007
+++ gcc/omp-low.c Mon Jun 22 00:54:00 2009
@@ -3934,7 +3934,7 @@ lower_omp_critical (tree *stmt_p, omp_context *ctx)
decl = create_tmp_var_raw (ptr_type_node, NULL);
new_str = ACONCAT ((".gomp_critical_user_",
- IDENTIFIER_POINTER (name), NULL));
+ IDENTIFIER_POINTER (name), (void *)0));
DECL_NAME (decl) = get_identifier (new_str);
TREE_PUBLIC (decl) = 1;
TREE_STATIC (decl) = 1;

View File

@ -0,0 +1,23 @@
$OpenBSD: patch-gcc_passes_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/passes.c.orig Mon Jan 19 02:26:09 2009
+++ gcc/passes.c Mon Jun 22 00:54:01 2009
@@ -359,7 +359,7 @@ register_one_dump_file (struct tree_opt_pass *pass, bo
sprintf (num, "%d", ((int) pass->static_pass_number < 0
? 1 : pass->static_pass_number));
- dot_name = concat (".", pass->name, num, NULL);
+ dot_name = concat (".", pass->name, num, (void *)0);
if (ipa)
prefix = "ipa-", flags = TDF_IPA;
else if (properties & PROP_trees)
@@ -367,8 +367,8 @@ register_one_dump_file (struct tree_opt_pass *pass, bo
else
prefix = "rtl-", flags = TDF_RTL;
- flag_name = concat (prefix, pass->name, num, NULL);
- glob_name = concat (prefix, pass->name, NULL);
+ flag_name = concat (prefix, pass->name, num, (void *)0);
+ glob_name = concat (prefix, pass->name, (void *)0);
pass->static_pass_number = dump_register (dot_name, flag_name, glob_name,
flags, pass->letter);
}

View File

@ -0,0 +1,35 @@
$OpenBSD: patch-gcc_prefix_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/prefix.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/prefix.c Mon Jun 22 00:54:01 2009
@@ -99,7 +99,7 @@ get_key_value (char *key)
#endif
if (prefix == 0)
- prefix = getenv (temp = concat (key, "_ROOT", NULL));
+ prefix = getenv (temp = concat (key, "_ROOT", (void *)0));
if (prefix == 0)
prefix = std_prefix;
@@ -223,7 +223,7 @@ translate_name (char *name)
together. */
old_name = name;
- name = concat (prefix, &name[keylen + 1], NULL);
+ name = concat (prefix, &name[keylen + 1], (void *)0);
free (old_name);
}
@@ -261,11 +261,11 @@ update_path (const char *path, const char *key)
if (key[0] != '$')
{
- key = concat ("@", key, NULL);
+ key = concat ("@", key, (void *)0);
free_key = true;
}
- result = concat (key, &path[len], NULL);
+ result = concat (key, &path[len], (void *)0);
if (free_key)
free ((char *) key);
result = translate_name (result);

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_read-rtl_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/read-rtl.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/read-rtl.c Mon Jun 22 00:54:01 2009
@@ -784,7 +784,7 @@ join_c_conditions (const char *cond1, const char *cond
if (cond2 == 0 || cond2[0] == 0)
return cond1;
- result = concat ("(", cond1, ") && (", cond2, ")", NULL);
+ result = concat ("(", cond1, ") && (", cond2, ")", (void *)0);
obstack_ptr_grow (&joined_conditions_obstack, result);
obstack_ptr_grow (&joined_conditions_obstack, cond1);
obstack_ptr_grow (&joined_conditions_obstack, cond2);

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-gcc_testsuite_ada_acats_run_acats,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/testsuite/ada/acats/run_acats.orig Fri Jan 7 04:04:46 2005
+++ gcc/testsuite/ada/acats/run_acats Fri Jan 7 04:06:26 2005
@@ -7,8 +7,8 @@ fi
# Set up environment to use the Ada compiler from the object tree
-host_gnatchop=`type gnatchop | awk '{print $3}'`
-host_gnatmake=`type gnatmake | awk '{print $3}'`
+host_gnatchop=`which gnatchop`
+host_gnatmake=`which gnatmake`
ROOT=`${PWDCMD-pwd}`
BASE=`cd $ROOT/../../..; ${PWDCMD-pwd}`

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_testsuite_ada_acats_run_all_sh,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/testsuite/ada/acats/run_all.sh.orig Mon May 8 18:50:40 2006
+++ gcc/testsuite/ada/acats/run_all.sh Sun Jul 23 11:24:02 2006
@@ -84,7 +84,7 @@ display target gcc is $GCC
display `$GCC -v 2>&1`
display host=`gcc -dumpmachine`
display target=$target
-display `type gnatmake`
+display `which gnatmake`
gnatls -v >> $dir/acats.log
display ""

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-gcc_testsuite_gcc_dg_format_format_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/testsuite/gcc.dg/format/format.h.orig Sat Jul 22 23:16:52 2006
+++ gcc/testsuite/gcc.dg/format/format.h Sat Jul 22 23:17:34 2006
@@ -4,11 +4,13 @@
#include <stdarg.h>
#include <stddef.h>
+#ifndef _WINT_T_DEFINED_
#ifndef _WINT_T
#ifndef __WINT_TYPE__
#define __WINT_TYPE__ unsigned int
#endif
typedef __WINT_TYPE__ wint_t;
+#endif
#endif
/* Kludges to get types corresponding to size_t and ptrdiff_t. */

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_tree-complex_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/tree-complex.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/tree-complex.c Mon Jun 22 00:54:03 2009
@@ -397,7 +397,7 @@ create_one_component_var (tree type, tree orig, const
const char *name = IDENTIFIER_POINTER (DECL_NAME (orig));
tree inner_type;
- DECL_NAME (r) = get_identifier (ACONCAT ((name, suffix, NULL)));
+ DECL_NAME (r) = get_identifier (ACONCAT ((name, suffix, (char *)0)));
inner_type = TREE_TYPE (TREE_TYPE (orig));
SET_DECL_DEBUG_EXPR (r, build1 (code, type, orig));

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_tree-dump_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/tree-dump.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/tree-dump.c Mon Jun 22 00:54:03 2009
@@ -867,7 +867,7 @@ get_dump_file_name (enum tree_dump_index phase)
dump_id[0] = '\0';
}
- return concat (dump_base_name, dump_id, dfi->suffix, NULL);
+ return concat (dump_base_name, dump_id, dfi->suffix, (void *)0);
}
/* Begin a tree dump for PHASE. Stores any user supplied flag in

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_tree-mudflap_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/tree-mudflap.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/tree-mudflap.c Mon Jun 22 00:54:04 2009
@@ -236,7 +236,7 @@ mf_file_function_line_tree (location_t location)
else
op = name = cp = "";
- string = concat (file, colon, line, op, name, cp, NULL);
+ string = concat (file, colon, line, op, name, cp, (void *)0);
result = mf_build_string (string);
free (string);

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_tree-nested_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/tree-nested.c.orig Sun Feb 15 04:17:54 2009
+++ gcc/tree-nested.c Mon Jun 22 00:54:04 2009
@@ -258,7 +258,7 @@ get_frame_type (struct nesting_info *info)
name = concat ("FRAME.",
IDENTIFIER_POINTER (DECL_NAME (info->context)),
- NULL);
+ (void *)0);
TYPE_NAME (type) = get_identifier (name);
free (name);

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_tree-vect-transform_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/tree-vect-transform.c.orig Wed Jul 11 22:32:42 2007
+++ gcc/tree-vect-transform.c Mon Jun 22 00:54:04 2009
@@ -105,7 +105,7 @@ vect_get_new_vect_var (tree type, enum vect_var_kind v
}
if (name)
- new_vect_var = create_tmp_var (type, concat (prefix, name, NULL));
+ new_vect_var = create_tmp_var (type, concat (prefix, name, (void *)0));
else
new_vect_var = create_tmp_var (type, prefix);

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-gcc_tree_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/tree.c.orig Thu Mar 19 22:14:10 2009
+++ gcc/tree.c Mon Jun 22 00:54:05 2009
@@ -6931,11 +6931,11 @@ build_common_builtin_nodes (void)
*q = TOLOWER (*p);
*q = '\0';
- built_in_names[mcode] = concat ("__mul", mode_name_buf, "3", NULL);
+ built_in_names[mcode] = concat ("__mul", mode_name_buf, "3", (void *)0);
local_define_builtin (built_in_names[mcode], ftype, mcode,
built_in_names[mcode], ECF_CONST | ECF_NOTHROW);
- built_in_names[dcode] = concat ("__div", mode_name_buf, "3", NULL);
+ built_in_names[dcode] = concat ("__div", mode_name_buf, "3", (void *)0);
local_define_builtin (built_in_names[dcode], ftype, dcode,
built_in_names[dcode], ECF_CONST | ECF_NOTHROW);
}

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-gcc_unwind-dw2-fde-openbsd_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/unwind-dw2-fde-openbsd.c.orig Sat Apr 11 14:24:23 2009
+++ gcc/unwind-dw2-fde-openbsd.c Sat Apr 11 14:24:02 2009
@@ -0,0 +1,10 @@
+/* XXX This file provides a few defines such that we can compile the
+ source from unwind-dw2-fde-glibc.c on OpenBSD. Hopefully we can
+ integrate these defines in that file and rename it to something
+ like unwind-de2-fde-phdr.c in the up-stream sources. */
+
+#define ElfW(type) Elf_##type
+
+#define __GLIBC__ 3 /* Fool unwind-dw2-fde-glibc.c. */
+#include "unwind-dw2-fde-glibc.c"
+

View File

@ -0,0 +1,51 @@
$OpenBSD: patch-gcc_unwind-dw2_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/unwind-dw2.c.orig Thu Jan 25 02:13:44 2007
+++ gcc/unwind-dw2.c Wed Mar 18 11:03:10 2009
@@ -150,6 +150,25 @@ _Unwind_IsExtendedContext (struct _Unwind_Context *con
{
return context->flags & EXTENDED_CONTEXT_BIT;
}
+
+#ifdef __sparc64__
+
+/* Figure out StackGhost cookie. */
+_Unwind_Word uw_get_wcookie(void);
+
+asm(".text\n"
+ "uw_get_wcookie:\n"
+ " add %o7, %g0, %g4\n"
+ " save %sp, -176, %sp\n"
+ " save %sp, -176, %sp\n"
+ " flushw\n"
+ " restore\n"
+ " ldx [%sp + 2047 + 120], %g5\n"
+ " xor %g4, %g5, %i0\n"
+ " ret\n"
+ " restore\n");
+#endif
+
/* Get the value of register INDEX as saved in CONTEXT. */
@@ -172,6 +191,13 @@ _Unwind_GetGR (struct _Unwind_Context *context, int in
if (_Unwind_IsExtendedContext (context) && context->by_value[index])
return (_Unwind_Word) (_Unwind_Internal_Ptr) ptr;
+#ifdef __sparc64__
+ /* _Unwind_Word and _Unwind_Ptr are the same size on sparc64 */
+ _Unwind_Word reg = * (_Unwind_Word *) ptr;
+ if (index == 15 || index == 31)
+ reg ^= uw_get_wcookie ();
+ return reg;
+#else
/* This will segfault if the register hasn't been saved. */
if (size == sizeof(_Unwind_Ptr))
return * (_Unwind_Ptr *) ptr;
@@ -180,6 +206,7 @@ _Unwind_GetGR (struct _Unwind_Context *context, int in
gcc_assert (size == sizeof(_Unwind_Word));
return * (_Unwind_Word *) ptr;
}
+#endif
}
static inline void *

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-gcc_varasm_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- gcc/varasm.c.orig Sun Feb 15 04:17:54 2009
+++ gcc/varasm.c Mon Jun 22 00:54:05 2009
@@ -402,7 +402,7 @@ initialize_cold_section_name (void)
stripped_name = targetm.strip_name_encoding (name);
- buffer = ACONCAT ((stripped_name, "_unlikely", NULL));
+ buffer = ACONCAT ((stripped_name, "_unlikely", (char *)0));
cfun->unlikely_text_section_name = ggc_strdup (buffer);
}
else

View File

@ -0,0 +1,50 @@
$OpenBSD: patch-libffi_configure,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libffi/configure.orig Mon May 19 10:28:07 2008
+++ libffi/configure Tue Apr 21 17:29:31 2009
@@ -3464,6 +3464,14 @@ linux-gnu*)
lt_cv_deplibs_check_method=pass_all
;;
+openbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
+ fi
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
@@ -5390,6 +5398,7 @@ i*86-*-solaris*) TARGET=X86; TARGETDIR=x86;;
i*86-*-beos*) TARGET=X86; TARGETDIR=x86;;
i*86-*-darwin*) TARGET=X86_DARWIN; TARGETDIR=x86;;
i*86-*-freebsd* | i*86-*-kfreebsd*-gnu) TARGET=X86; TARGETDIR=x86;;
+i*86-*-openbsd*) TARGET=X86; TARGETDIR=x86;;
i*86-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=X86; TARGETDIR=x86;;
i*86-*-rtems*) TARGET=X86; TARGETDIR=x86;;
i*86-*-win32*) TARGET=X86_WIN32; TARGETDIR=x86;;
@@ -5401,6 +5410,7 @@ sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;;
sparc-*-linux* | sparc-*-netbsdelf* | sparc-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;;
sparc*-*-rtems*) TARGET=SPARC; TARGETDIR=sparc;;
sparc64-*-linux* | sparc64-*-freebsd* | sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;;
+sparc64-*-openbsd*) TARGET=SPARC; TARGETDIR=sparc;;
alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
TARGET=ALPHA; TARGETDIR=alpha
# Support 128-bit long double, changable via command-line switch.
@@ -5417,6 +5427,7 @@ powerpc-*-beos*) TARGET=POWERPC; TARGETDIR=powerpc;;
powerpc-*-darwin*) TARGET=POWERPC_DARWIN; TARGETDIR=powerpc;;
powerpc-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;;
powerpc-*-freebsd*) TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc;;
+powerpc-*-openbsd*) TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc;;
powerpc*-*-rtems*) TARGET=POWERPC; TARGETDIR=powerpc;;
rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;;
arm*-*-linux-*) TARGET=ARM; TARGETDIR=arm;;
@@ -5426,6 +5437,7 @@ cris-*-*) TARGET=LIBFFI_CRIS; TARGETDIR=cris;;
s390-*-linux-*) TARGET=S390; TARGETDIR=s390;;
s390x-*-linux-*) TARGET=S390; TARGETDIR=s390;;
x86_64-*-linux* | x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu) TARGET=X86_64; TARGETDIR=x86;;
+x86_64-*-openbsd*) TARGET=X86_64; TARGETDIR=x86;;
sh-*-linux* | sh[34]*-*-linux*) TARGET=SH; TARGETDIR=sh;;
sh-*-rtems*) TARGET=SH; TARGETDIR=sh;;
sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;;

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-libffi_src_powerpc_ffitarget_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libffi/src/powerpc/ffitarget.h.orig Mon Mar 16 21:39:23 2009
+++ libffi/src/powerpc/ffitarget.h Mon Mar 16 21:43:52 2009
@@ -71,6 +71,7 @@ typedef enum ffi_abi {
FFI_SYSV,
FFI_GCC_SYSV,
FFI_LINUX64,
+ FFI_LINUX,
FFI_DEFAULT_ABI = FFI_SYSV,
#endif

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-libiberty_testsuite_test-expandargv_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libiberty/testsuite/test-expandargv.c.orig Sat Mar 7 17:08:28 2009
+++ libiberty/testsuite/test-expandargv.c Sat Mar 7 17:09:01 2009
@@ -173,6 +173,7 @@ writeout_test (int test, const char * test_data)
fatal_error (__LINE__, "Failed to malloc parse.", errno);
memcpy (parse, test_data, sizeof (char) * len);
+ parse[len] = '\0';
/* Run all possible replaces */
run_replaces (parse);

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-libjava_configure,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libjava/configure.orig Wed Jan 17 13:10:26 2007
+++ libjava/configure Tue Mar 3 14:45:15 2009
@@ -9168,6 +9168,10 @@ case "$THREADS" in
THREADLDFLAGS=-pthread
THREADSPEC=-lpthread
;;
+ *-*-openbsd*)
+ THREADLDFLAGS=-pthread
+ THREADSPEC=-lpthread
+ ;;
alpha*-dec-osf* | hppa*-hp-hpux*)
THREADCXXFLAGS=-pthread
# boehm-gc needs some functions from librt, so link that too.

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-libjava_configure_host,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libjava/configure.host.orig Thu Nov 8 22:56:19 2007
+++ libjava/configure.host Mon Jun 22 00:54:06 2009
@@ -270,6 +270,12 @@ EOF
slow_pthread_self=
can_unwind_signal=no
;;
+ *-*-openbsd*)
+ enable_hash_synchronization_default=no
+ libgcj_flags="${libgcj_flags} -fno-omit-frame-pointer"
+ can_unwind_signal=no
+ slow_pthread_self=no
+ ;;
*-*-freebsd*)
slow_pthread_self=
;;

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-libjava_libltdl_configure,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libjava/libltdl/configure.orig Mon Mar 16 09:26:51 2009
+++ libjava/libltdl/configure Mon Mar 16 09:27:07 2009
@@ -7294,9 +7294,6 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e
with_gnu_ld=no
fi
;;
- openbsd*)
- with_gnu_ld=no
- ;;
esac
ld_shlibs=yes

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-libmudflap_mf-runtime_c,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libmudflap/mf-runtime.c.orig Wed Aug 17 05:21:42 2005
+++ libmudflap/mf-runtime.c Sun Mar 18 23:58:46 2007
@@ -45,6 +45,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor,
#define _ALL_SOURCE
#define _LARGE_FILE_API
#define _XOPEN_SOURCE_EXTENDED 1
+#define __BSD_VISIBLE
#include <stdio.h>
#include <stdlib.h>

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-libmudflap_mf-runtime_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libmudflap/mf-runtime.h.orig Wed Jun 21 18:35:27 2006
+++ libmudflap/mf-runtime.h Sun Mar 18 23:58:46 2007
@@ -36,7 +36,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor,
#define MF_RUNTIME_H
typedef void *__mf_ptr_t;
-typedef unsigned int __mf_uintptr_t __attribute__ ((__mode__ (__pointer__)));
+typedef unsigned long __mf_uintptr_t __attribute__ ((__mode__ (__pointer__)));
typedef __SIZE_TYPE__ __mf_size_t;
/* Global declarations used by instrumentation. When _MUDFLAP is

View File

@ -0,0 +1,86 @@
$OpenBSD: patch-libstdc++-v3_acinclude_m4,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libstdc++-v3/acinclude.m4.orig Fri Jul 13 09:39:34 2007
+++ libstdc++-v3/acinclude.m4 Mon Jun 22 00:54:07 2009
@@ -1856,82 +1856,6 @@ AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [
# Test it always, for use in GLIBCXX_ENABLE_C99, together with
# ac_has_wchar_h.
AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
-
- if test x"$enable_wchar_t" = x"yes"; then
-
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
-
- if test x"$ac_has_wchar_h" = xyes &&
- test x"$ac_has_wctype_h" = xyes; then
- AC_TRY_COMPILE([#include <wchar.h>
- #include <stddef.h>
- wint_t i;
- long l = WEOF;
- long j = WCHAR_MIN;
- long k = WCHAR_MAX;
- namespace test
- {
- using ::btowc;
- using ::fgetwc;
- using ::fgetws;
- using ::fputwc;
- using ::fputws;
- using ::fwide;
- using ::fwprintf;
- using ::fwscanf;
- using ::getwc;
- using ::getwchar;
- using ::mbrlen;
- using ::mbrtowc;
- using ::mbsinit;
- using ::mbsrtowcs;
- using ::putwc;
- using ::putwchar;
- using ::swprintf;
- using ::swscanf;
- using ::ungetwc;
- using ::vfwprintf;
- using ::vswprintf;
- using ::vwprintf;
- using ::wcrtomb;
- using ::wcscat;
- using ::wcschr;
- using ::wcscmp;
- using ::wcscoll;
- using ::wcscpy;
- using ::wcscspn;
- using ::wcsftime;
- using ::wcslen;
- using ::wcsncat;
- using ::wcsncmp;
- using ::wcsncpy;
- using ::wcspbrk;
- using ::wcsrchr;
- using ::wcsrtombs;
- using ::wcsspn;
- using ::wcsstr;
- using ::wcstod;
- using ::wcstok;
- using ::wcstol;
- using ::wcstoul;
- using ::wcsxfrm;
- using ::wctob;
- using ::wmemchr;
- using ::wmemcmp;
- using ::wmemcpy;
- using ::wmemmove;
- using ::wmemset;
- using ::wprintf;
- using ::wscanf;
- }
- ],[],[], [enable_wchar_t=no])
- else
- enable_wchar_t=no
- fi
-
- AC_LANG_RESTORE
- fi
if test x"$enable_wchar_t" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_WCHAR_T, 1,

View File

@ -0,0 +1,20 @@
$OpenBSD: patch-libstdc++-v3_config_locale_generic_time_members_cc,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libstdc++-v3/config/locale/generic/time_members.cc.orig Fri Jun 5 05:43:54 2009
+++ libstdc++-v3/config/locale/generic/time_members.cc Fri Jun 5 05:44:13 2009
@@ -128,12 +128,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
char* __old = strdup(setlocale(LC_ALL, NULL));
setlocale(LC_ALL, _M_name_timepunct);
+#if !defined(__OpenBSD__)
const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
+#endif
setlocale(LC_ALL, __old);
free(__old);
+#if !defined(__OpenBSD__)
// Make sure __s is null terminated.
if (__len == 0)
__s[0] = L'\0';
+#endif
}
template<>

View File

@ -0,0 +1,46 @@
$OpenBSD: patch-libstdc++-v3_include_c_compatibility_wchar_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libstdc++-v3/include/c_compatibility/wchar.h.orig Fri Jun 5 00:05:31 2009
+++ libstdc++-v3/include/c_compatibility/wchar.h Fri Jun 5 00:06:50 2009
@@ -45,24 +45,32 @@ using std::fgetws;
using std::fputwc;
using std::fputws;
using std::fwide;
+#if !defined(__OpenBSD__)
using std::fwprintf;
using std::fwscanf;
using std::swprintf;
using std::swscanf;
using std::vfwprintf;
+#endif
#if _GLIBCXX_HAVE_VFWSCANF
using std::vfwscanf;
#endif
+#if !defined(__OpenBSD__)
using std::vswprintf;
+#endif
#if _GLIBCXX_HAVE_VSWSCANF
using std::vswscanf;
#endif
+#if !defined(__OpenBSD__)
using std::vwprintf;
+#endif
#if _GLIBCXX_HAVE_VWSCANF
using std::vwscanf;
#endif
+#if !defined(__OpenBSD__)
using std::wprintf;
using std::wscanf;
+#endif
using std::getwc;
using std::getwchar;
using std::mbsinit;
@@ -101,7 +109,9 @@ using std::wmemcmp;
using std::wmemcpy;
using std::wmemmove;
using std::wmemset;
+#if !defined(__OpenBSD__)
using std::wcsftime;
+#endif
#if _GLIBCXX_USE_C99
using std::wcstold;

View File

@ -0,0 +1,62 @@
$OpenBSD: patch-libstdc++-v3_include_c_std_std_cwchar_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libstdc++-v3/include/c_std/std_cwchar.h.orig Fri Jun 5 00:00:55 2009
+++ libstdc++-v3/include/c_std/std_cwchar.h Fri Jun 5 00:05:00 2009
@@ -151,8 +151,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
using ::fputwc;
using ::fputws;
using ::fwide;
+#if !defined(__OpenBSD__)
using ::fwprintf;
using ::fwscanf;
+#endif
using ::getwc;
using ::getwchar;
using ::mbrlen;
@@ -161,18 +163,26 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
using ::mbsrtowcs;
using ::putwc;
using ::putwchar;
+#if !defined(__OpenBSD__)
using ::swprintf;
using ::swscanf;
+#endif
using ::ungetwc;
+#if !defined(__OpenBSD__)
using ::vfwprintf;
+#endif
#if _GLIBCXX_HAVE_VFWSCANF
using ::vfwscanf;
#endif
+#if !defined(__OpenBSD__)
using ::vswprintf;
+#endif
#if _GLIBCXX_HAVE_VSWSCANF
using ::vswscanf;
#endif
+#if !defined(__OpenBSD__)
using ::vwprintf;
+#endif
#if _GLIBCXX_HAVE_VWSCANF
using ::vwscanf;
#endif
@@ -182,7 +192,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
using ::wcscoll;
using ::wcscpy;
using ::wcscspn;
+#if !defined(__OpenBSD__)
using ::wcsftime;
+#endif
using ::wcslen;
using ::wcsncat;
using ::wcsncmp;
@@ -202,8 +214,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
using ::wmemcpy;
using ::wmemmove;
using ::wmemset;
+#if !defined(__OpenBSD__)
using ::wprintf;
using ::wscanf;
+#endif
using ::wcschr;

View File

@ -0,0 +1,19 @@
$OpenBSD: patch-libstdc++-v3_include_c_std_std_cwctype_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libstdc++-v3/include/c_std/std_cwctype.h.orig Fri Jun 5 00:07:56 2009
+++ libstdc++-v3/include/c_std/std_cwctype.h Fri Jun 5 00:09:22 2009
@@ -81,6 +81,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
using ::wint_t; // cwchar
+#if !defined(__OpenBSD__)
using ::wctype_t;
using ::wctrans_t;
@@ -104,6 +105,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
using ::towupper;
using ::wctrans;
using ::wctype;
+#endif
_GLIBCXX_END_NAMESPACE

View File

@ -0,0 +1,105 @@
$OpenBSD: patch-libstdc++-v3_include_ext_numeric_traits_h,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libstdc++-v3/include/ext/numeric_traits.h.orig Sat Apr 7 10:38:39 2007
+++ libstdc++-v3/include/ext/numeric_traits.h Tue Apr 7 19:39:00 2009
@@ -96,3 +96,101 @@ _GLIBCXX_END_NAMESPACE
#undef __glibcxx_digits
#endif
+// -*- C++ -*-
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License as published by the Free Software
+// Foundation; either version 2, or (at your option) any later
+// version.
+
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/** @file ext/numeric_traits.h
+ * This file is a GNU extension to the Standard C++ Library.
+ */
+
+#ifndef _EXT_NUMERIC_TRAITS
+#define _EXT_NUMERIC_TRAITS 1
+
+#pragma GCC system_header
+
+#include <limits>
+#include <bits/cpp_type_traits.h>
+#include <ext/type_traits.h>
+
+_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
+
+ // Compile time constants for builtin types.
+ // Sadly std::numeric_limits member functions cannot be used for this.
+#define __glibcxx_signed(_Tp) ((_Tp)(-1) < 0)
+#define __glibcxx_digits(_Tp) \
+ (sizeof(_Tp) * __CHAR_BIT__ - __glibcxx_signed(_Tp))
+
+#define __glibcxx_min(_Tp) \
+ (__glibcxx_signed(_Tp) ? (_Tp)1 << __glibcxx_digits(_Tp) : (_Tp)0)
+
+#define __glibcxx_max(_Tp) \
+ (__glibcxx_signed(_Tp) ? \
+ (((((_Tp)1 << (__glibcxx_digits(_Tp) - 1)) - 1) << 1) + 1) : ~(_Tp)0)
+
+ template<typename _Value>
+ struct __numeric_traits_integer
+ {
+ // Only integers for initialization of member constant.
+ static const _Value __min = __glibcxx_min(_Value);
+ static const _Value __max = __glibcxx_max(_Value);
+ };
+
+ template<typename _Value>
+ const _Value __numeric_traits_integer<_Value>::__min;
+
+ template<typename _Value>
+ const _Value __numeric_traits_integer<_Value>::__max;
+
+ template<typename _Value>
+ struct __numeric_traits_floating
+ {
+ // Only floating point types. See N1822.
+ static const int __max_digits10 =
+ 2 + std::numeric_limits<_Value>::digits * 3010/10000;
+ };
+
+ template<typename _Value>
+ const int __numeric_traits_floating<_Value>::__max_digits10;
+
+ template<typename _Value>
+ struct __numeric_traits
+ : public __conditional_type<std::__is_integer<_Value>::__value,
+ __numeric_traits_integer<_Value>,
+ __numeric_traits_floating<_Value> >::__type
+ { };
+
+_GLIBCXX_END_NAMESPACE
+
+#undef __glibcxx_signed
+#undef __glibcxx_min
+#undef __glibcxx_max
+#undef __glibcxx_digits
+
+#endif

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-libstdc++-v3_include_tr1_cwctype,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libstdc++-v3/include/tr1/cwctype.orig Fri Jun 5 02:00:32 2009
+++ libstdc++-v3/include/tr1/cwctype Fri Jun 5 02:01:17 2009
@@ -45,7 +45,7 @@ namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(tr1)
-#if _GLIBCXX_HAVE_ISWBLANK
+#if defined(_GLIBCXX_HAVE_ISWBLANK) && !defined(__OpenBSD__)
using std::iswblank;
#endif

View File

@ -0,0 +1,21 @@
$OpenBSD: patch-libstdc++-v3_libsupc++_Makefile_in,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libstdc++-v3/libsupc++/Makefile.in.orig Mon Oct 16 21:08:22 2006
+++ libstdc++-v3/libsupc++/Makefile.in Mon Oct 30 12:43:40 2006
@@ -308,7 +308,7 @@ AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
# Need this library to both be part of libstdc++.a, and installed
# separately too.
# 1) separate libsupc++.la
-toolexeclib_LTLIBRARIES = libsupc++.la
+toolexeclib_LTLIBRARIES = libesupc++.la
# 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
noinst_LTLIBRARIES = libsupc++convenience.la
headers = \
@@ -489,7 +489,7 @@ clean-toolexeclibLTLIBRARIES:
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
-libsupc++.la: $(libsupc___la_OBJECTS) $(libsupc___la_DEPENDENCIES)
+libesupc++.la: $(libsupc___la_OBJECTS) $(libsupc___la_DEPENDENCIES)
$(CXXLINK) -rpath $(toolexeclibdir) $(libsupc___la_LDFLAGS) $(libsupc___la_OBJECTS) $(libsupc___la_LIBADD) $(LIBS)
libsupc++convenience.la: $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_DEPENDENCIES)
$(CXXLINK) $(libsupc__convenience_la_LDFLAGS) $(libsupc__convenience_la_OBJECTS) $(libsupc__convenience_la_LIBADD) $(LIBS)

View File

@ -0,0 +1,14 @@
$OpenBSD: patch-libtool_m4,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- libtool.m4.orig Tue May 10 03:31:58 2005
+++ libtool.m4 Mon May 16 17:43:15 2005
@@ -757,6 +757,10 @@ newsos6)
lt_cv_file_magic_test_file=/usr/lib/libnls.so
;;
+openbsd*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
osf3* | osf4* | osf5*)
# this will be overridden with pass_all, but let us keep it just in case
lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'

View File

@ -0,0 +1,30 @@
$OpenBSD: patch-ltcf-c_sh,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- ltcf-c.sh.orig Tue Mar 18 19:53:10 2008
+++ ltcf-c.sh Mon Jun 22 00:54:08 2009
@@ -219,8 +219,8 @@ EOF
*)
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC $pic_flag -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC $pic_flag -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
else
ld_shlibs=no
fi
@@ -515,10 +515,13 @@ else
;;
openbsd*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
+ archive_cmds='$CC $pic_flag -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ archive_expsym_cmds='$CC $pic_flag -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec='${wl}-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
+ remove_lgcc=yes
+ output_verbose_link_cmds='$CC $ac_cv_prog_cc_pic -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
;;
os2*)

View File

@ -0,0 +1,57 @@
$OpenBSD: patch-ltcf-cxx_sh,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- ltcf-cxx.sh.orig Tue Mar 18 19:53:10 2008
+++ ltcf-cxx.sh Mon Jun 22 00:54:09 2009
@@ -78,8 +78,8 @@ if { ac_try='${CC-c++} -E conftest.$ac_ext'; { (eval e
# to be the same.
if test "$with_gnu_ld" = yes; then
- archive_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ archive_cmds='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
export_dynamic_flag_spec='${wl}--export-dynamic'
@@ -454,6 +454,19 @@ case $host_os in
netbsd* | knetbsd*-gnu)
# NetBSD uses g++ - do we need to do anything?
;;
+ openbsd*)
+ if test "$with_gcc" = yes && test "$with_gnu_ld" = no; then
+ # MM: OpenBSD 2.7 uses G++, but not GNU ld
+ archive_cmds='$CC $pic_flag -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ archive_expsym_cmds='$CC $pic_flag -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ old_archive_cmds="$old_archive_cmds~"'$RANLIB $oldlib'
+ hardcode_libdir_flag_spec='${wl}-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ remove_lgcc=yes
+ output_verbose_link_cmds='$CC $ac_cv_prog_cc_pic -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
+ fi
+ ;;
osf3*)
case $cc_basename in
KCC)
@@ -981,8 +994,9 @@ class Foo (private)
};
EOF
+echo $ac_compile_shared >&5
-if (eval $ac_compile) 2>&5; then
+if (eval $ac_compile_shared) 2>&5; then
# Parse the compiler output and extract the necessary
# objects, libraries and library flags.
@@ -1012,9 +1026,9 @@ if (eval $ac_compile) 2>&5; then
# provided the user. The postdeps already come after the
# user supplied libs so there is no need to process them.
if test -z "$compiler_lib_search_path"; then
- compiler_lib_search_path="${prev}${p}"
+ compiler_lib_search_path="${prev}${p}/fpic ${p}"
else
- compiler_lib_search_path="${compiler_lib_search_path} ${prev}${p}"
+ compiler_lib_search_path="${compiler_lib_search_path} ${prev}${p}/fpic ${prev}${p}"
fi
;;
# The "-l" case would never come before the object being

View File

@ -0,0 +1,19 @@
$OpenBSD: patch-ltcf-gcj_sh,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- ltcf-gcj.sh.orig Tue Mar 18 19:53:10 2008
+++ ltcf-gcj.sh Mon Jun 22 00:54:09 2009
@@ -490,10 +490,13 @@ else
;;
openbsd*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
+ archive_cmds='$CC $pic_flag -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ archive_expsym_cmds='$CC $pic_flag -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec='${wl}-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
+ remove_lgcc=yes
+ output_verbose_link_cmds='$CC $ac_cv_prog_cc_pic -shared $CFLAGS -v conftest.$objext 2>&1 | egrep "\-L"'
;;
os2*)

View File

@ -0,0 +1,40 @@
$OpenBSD: patch-ltconfig,v 1.1.1.1 2009/06/22 22:37:32 sthen Exp $
--- ltconfig.orig Tue Mar 18 19:53:10 2008
+++ ltconfig Mon Jun 22 01:01:51 2009
@@ -184,6 +184,7 @@ PACKAGE=libtool
VERSION=1.4a-GCC3.0
TIMESTAMP=" (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes)"
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_compile_shared='${CC-cc} -fPIC -DPIC -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
rm="rm -f"
@@ -626,8 +627,13 @@ old_postuninstall_cmds=
if test -n "$RANLIB"; then
old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
- # APPLE LOCAL handle ~ in pathnames 2002-01-14 --sts
- old_postinstall_cmds="@$old_postinstall_cmds@\$RANLIB \$oldlib"
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="@$old_postinstall_cmds@\$RANLIB -t \$oldlib";;
+ *)
+ # APPLE LOCAL handle ~ in pathnames 2002-01-14 --sts
+ old_postinstall_cmds="@$old_postinstall_cmds@\$RANLIB \$oldlib";;
+ esac
fi
# Source the script associated with the $tagname tag configuration.
@@ -1308,8 +1314,11 @@ openbsd*)
need_version=no
fi
library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ #finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ deplib_check_method=pass_all
+ sys_lib_dlsearch_path_spec='/usr/lib /usr/local/lib /usr/X11R6/lib'
;;
os2*)

12
lang/llvm-gcc4/pkg/DESCR Normal file
View File

@ -0,0 +1,12 @@
lvm-gcc is the LLVM C front end. It is a modified version of gcc
that compiles C/C++/ObjC programs into native objects, LLVM bitcode or
LLVM assembly language, depending upon the options.
By default, llvm-gcc compiles to native objects just like GCC does.
If the -emit-llvm option is given then it will generate LLVM bitcode
files instead. If -S (assembly) is also given, then it will generate
LLVM assembly.
Being derived from the GNU Compiler Collection, llvm-gcc has many of
gcc's features and accepts most of gcc's options. It handles a number
of gcc's extensions to the C programming language.

View File

@ -0,0 +1,3 @@
@comment $OpenBSD: PFRAG.shared,v 1.1.1.1 2009/06/22 22:37:31 sthen Exp $
@lib lib/llvm-gcc-${LLVM_V}/libssp.so.${LIBssp_VERSION}
@lib lib/llvm-gcc-${LLVM_V}/libstdc++.so.${LIBstdc++_VERSION}

680
lang/llvm-gcc4/pkg/PLIST Normal file
View File

@ -0,0 +1,680 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2009/06/22 22:37:31 sthen Exp $
%%SHARED%%
@bin bin/${CONFIG}-cpp-4.2.1
@bin bin/${CONFIG}-gcc-4.2.1
@bin bin/${CONFIG}-llvm-c++
@bin bin/${CONFIG}-llvm-cpp
@bin bin/${CONFIG}-llvm-g++
@bin bin/${CONFIG}-llvm-gcc
@bin bin/llvm-c++
@bin bin/llvm-cpp
@bin bin/llvm-g++
@bin bin/llvm-gcc
bin/llvm-gccbug
@bin bin/llvm-gcov
@comment @info info/cpp.info
@comment @info info/cppinternals.info
@comment @info info/gcc.info
@comment @info info/gccinstall.info
@comment @info info/gccint.info
lib/llvm-gcc-${LLVM_V}/
lib/llvm-gcc-${LLVM_V}/gcc/
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/
@bin lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/cc1
@bin lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/cc1plus
@bin lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/collect2
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/README
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/ammintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/com_err.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/emmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/limits.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/mm3dnow.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/mm_malloc.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/mmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/nmmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/pmmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/rpc/
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/rpc/rpc_des.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/rpc/svc.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/smmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/ssp/
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/ssp/ssp.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/ssp/stdio.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/ssp/string.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/ssp/unistd.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/stddef.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/stdio.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/stdlib.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/sys/
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/sys/types.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/syslimits.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/tmmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/unwind.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/include/xmmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/fixinc.sh
@bin lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/fixincl
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/gsyslimits.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/README
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/ammintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/emmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/limits.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/mm3dnow.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/mm_malloc.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/mmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/nmmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/pmmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/smmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/tmmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/unwind.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/include/xmmintrin.h
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/macro_list
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/mkheaders
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/install-tools/mkheaders.conf
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/libgcc.a
lib/llvm-gcc-${LLVM_V}/gcc/${CONFIG}/4.2.1/libgcov.a
lib/llvm-gcc-${LLVM_V}/include/
lib/llvm-gcc-${LLVM_V}/include/c++/
lib/llvm-gcc-${LLVM_V}/include/c++/algorithm
lib/llvm-gcc-${LLVM_V}/include/c++/backward/
lib/llvm-gcc-${LLVM_V}/include/c++/backward/algo.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/algobase.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/alloc.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/backward_warning.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/bvector.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/complex.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/defalloc.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/deque.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/fstream.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/function.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/hash_map.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/hash_set.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/hashtable.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/heap.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/iomanip.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/iostream.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/istream.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/iterator.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/list.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/map.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/multimap.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/multiset.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/new.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/ostream.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/pair.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/queue.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/rope.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/set.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/slist.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/stack.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/stream.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/streambuf.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/strstream
lib/llvm-gcc-${LLVM_V}/include/c++/backward/tempbuf.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/tree.h
lib/llvm-gcc-${LLVM_V}/include/c++/backward/vector.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/
lib/llvm-gcc-${LLVM_V}/include/c++/bits/allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/basic_ios.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/basic_ios.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/basic_string.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/basic_string.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/boost_concept_check.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/char_traits.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/cmath.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/codecvt.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/concept_check.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/cpp_type_traits.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/deque.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/fstream.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/functexcept.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/gslice.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/gslice_array.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/indirect_array.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/ios_base.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/istream.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/list.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/locale_classes.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/locale_facets.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/locale_facets.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/localefwd.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/mask_array.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/ostream.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/ostream_insert.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/postypes.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/slice_array.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/sstream.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_algo.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_algobase.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_bvector.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_construct.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_deque.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_function.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_heap.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_iterator.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_iterator_base_funcs.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_iterator_base_types.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_list.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_map.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_multimap.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_multiset.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_numeric.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_pair.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_queue.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_raw_storage_iter.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_relops.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_set.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_stack.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_tempbuf.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_tree.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_uninitialized.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stl_vector.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stream_iterator.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/streambuf.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/streambuf_iterator.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/stringfwd.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/valarray_after.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/valarray_array.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/valarray_array.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bits/valarray_before.h
lib/llvm-gcc-${LLVM_V}/include/c++/bits/vector.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/bitset
lib/llvm-gcc-${LLVM_V}/include/c++/cassert
lib/llvm-gcc-${LLVM_V}/include/c++/cctype
lib/llvm-gcc-${LLVM_V}/include/c++/cerrno
lib/llvm-gcc-${LLVM_V}/include/c++/cfloat
lib/llvm-gcc-${LLVM_V}/include/c++/ciso646
lib/llvm-gcc-${LLVM_V}/include/c++/climits
lib/llvm-gcc-${LLVM_V}/include/c++/clocale
lib/llvm-gcc-${LLVM_V}/include/c++/cmath
lib/llvm-gcc-${LLVM_V}/include/c++/complex
lib/llvm-gcc-${LLVM_V}/include/c++/csetjmp
lib/llvm-gcc-${LLVM_V}/include/c++/csignal
lib/llvm-gcc-${LLVM_V}/include/c++/cstdarg
lib/llvm-gcc-${LLVM_V}/include/c++/cstddef
lib/llvm-gcc-${LLVM_V}/include/c++/cstdio
lib/llvm-gcc-${LLVM_V}/include/c++/cstdlib
lib/llvm-gcc-${LLVM_V}/include/c++/cstring
lib/llvm-gcc-${LLVM_V}/include/c++/ctime
lib/llvm-gcc-${LLVM_V}/include/c++/cwchar
lib/llvm-gcc-${LLVM_V}/include/c++/cwctype
lib/llvm-gcc-${LLVM_V}/include/c++/cxxabi.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/
lib/llvm-gcc-${LLVM_V}/include/c++/debug/bitset
lib/llvm-gcc-${LLVM_V}/include/c++/debug/debug.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/deque
lib/llvm-gcc-${LLVM_V}/include/c++/debug/formatter.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/functions.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/hash_map
lib/llvm-gcc-${LLVM_V}/include/c++/debug/hash_map.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/hash_multimap.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/hash_multiset.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/hash_set
lib/llvm-gcc-${LLVM_V}/include/c++/debug/hash_set.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/list
lib/llvm-gcc-${LLVM_V}/include/c++/debug/macros.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/map
lib/llvm-gcc-${LLVM_V}/include/c++/debug/map.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/multimap.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/multiset.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/safe_base.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/safe_iterator.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/safe_iterator.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/debug/safe_sequence.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/set
lib/llvm-gcc-${LLVM_V}/include/c++/debug/set.h
lib/llvm-gcc-${LLVM_V}/include/c++/debug/string
lib/llvm-gcc-${LLVM_V}/include/c++/debug/vector
lib/llvm-gcc-${LLVM_V}/include/c++/deque
lib/llvm-gcc-${LLVM_V}/include/c++/exception
lib/llvm-gcc-${LLVM_V}/include/c++/exception_defines.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/algorithm
lib/llvm-gcc-${LLVM_V}/include/c++/ext/array_allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/atomicity.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/bitmap_allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/codecvt_specializations.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/concurrence.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/debug_allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/functional
lib/llvm-gcc-${LLVM_V}/include/c++/ext/hash_fun.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/hash_map
lib/llvm-gcc-${LLVM_V}/include/c++/ext/hash_set
lib/llvm-gcc-${LLVM_V}/include/c++/ext/hashtable.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/iterator
lib/llvm-gcc-${LLVM_V}/include/c++/ext/malloc_allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/memory
lib/llvm-gcc-${LLVM_V}/include/c++/ext/mt_allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/new_allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/numeric
lib/llvm-gcc-${LLVM_V}/include/c++/ext/numeric_traits.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/assoc_container.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/basic_tree_policy/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/basic_tree_policy/traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/basic_types.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/bin_search_tree_/traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_base_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/cond_dealtor.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/container_base_dispatch.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/eq_fn/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_policy/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/map_debug_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/ov_tree_map_/traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pairing_heap_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/child_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/head.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/internal_node.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/leaf.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/node_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/node_iterators.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/point_iterators.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/node.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rb_tree_map_/traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/node.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/splay_tree_/traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/standard_policies.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/tree_policy/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/tree_trace_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/type_utils.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/types_traits.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/unordered_iterator/
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/unordered_iterator/iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/exception.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/hash_policy.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/list_update_policy.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/priority_queue.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/tag_and_trait.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/tree_policy.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pb_ds/trie_policy.hpp
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pod_char_traits.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/pool_allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/rb_tree
lib/llvm-gcc-${LLVM_V}/include/c++/ext/rc_string_base.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/rope
lib/llvm-gcc-${LLVM_V}/include/c++/ext/ropeimpl.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/slist
lib/llvm-gcc-${LLVM_V}/include/c++/ext/sso_string_base.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/stdio_filebuf.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/stdio_sync_filebuf.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/throw_allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/type_traits.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/typelist.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/vstring.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/vstring.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/ext/vstring_fwd.h
lib/llvm-gcc-${LLVM_V}/include/c++/ext/vstring_util.h
lib/llvm-gcc-${LLVM_V}/include/c++/fstream
lib/llvm-gcc-${LLVM_V}/include/c++/functional
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/atomic_word.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/basic_file.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/c++allocator.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/c++config.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/c++io.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/c++locale.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/cpu_defines.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/ctype_base.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/ctype_inline.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/ctype_noninline.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/cxxabi_tweaks.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/gthr-default.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/gthr-posix.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/gthr-single.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/gthr-tpf.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/gthr.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/messages_members.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/os_defines.h
lib/llvm-gcc-${LLVM_V}/include/c++/${CONFIG}/bits/time_members.h
lib/llvm-gcc-${LLVM_V}/include/c++/iomanip
lib/llvm-gcc-${LLVM_V}/include/c++/ios
lib/llvm-gcc-${LLVM_V}/include/c++/iosfwd
lib/llvm-gcc-${LLVM_V}/include/c++/iostream
lib/llvm-gcc-${LLVM_V}/include/c++/istream
lib/llvm-gcc-${LLVM_V}/include/c++/iterator
lib/llvm-gcc-${LLVM_V}/include/c++/limits
lib/llvm-gcc-${LLVM_V}/include/c++/list
lib/llvm-gcc-${LLVM_V}/include/c++/locale
lib/llvm-gcc-${LLVM_V}/include/c++/map
lib/llvm-gcc-${LLVM_V}/include/c++/memory
lib/llvm-gcc-${LLVM_V}/include/c++/new
lib/llvm-gcc-${LLVM_V}/include/c++/numeric
lib/llvm-gcc-${LLVM_V}/include/c++/ostream
lib/llvm-gcc-${LLVM_V}/include/c++/queue
lib/llvm-gcc-${LLVM_V}/include/c++/set
lib/llvm-gcc-${LLVM_V}/include/c++/sstream
lib/llvm-gcc-${LLVM_V}/include/c++/stack
lib/llvm-gcc-${LLVM_V}/include/c++/stdexcept
lib/llvm-gcc-${LLVM_V}/include/c++/streambuf
lib/llvm-gcc-${LLVM_V}/include/c++/string
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/array
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/bind_iterate.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/bind_repeat.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/boost_shared_ptr.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cctype
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cfenv
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cfloat
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cinttypes
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/climits
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cmath
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/common.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/complex
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cstdarg
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cstdbool
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cstdint
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cstdio
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cstdlib
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/ctgmath
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/ctime
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/ctype.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cwchar
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/cwctype
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/fenv.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/float.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/functional
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/functional_hash.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/functional_iterate.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/hashtable
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/hashtable_policy.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/inttypes.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/limits.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/math.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/memory
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/mu_iterate.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/random
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/random.tcc
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/ref_fwd.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/ref_wrap_iterate.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/repeat.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/stdarg.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/stdbool.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/stdint.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/stdio.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/stdlib.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/tgmath.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/tuple
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/tuple_defs.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/tuple_iterate.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/type_traits
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/type_traits_fwd.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/unordered_map
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/unordered_set
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/utility
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/wchar.h
lib/llvm-gcc-${LLVM_V}/include/c++/tr1/wctype.h
lib/llvm-gcc-${LLVM_V}/include/c++/typeinfo
lib/llvm-gcc-${LLVM_V}/include/c++/utility
lib/llvm-gcc-${LLVM_V}/include/c++/valarray
lib/llvm-gcc-${LLVM_V}/include/c++/vector
lib/llvm-gcc-${LLVM_V}/libesupc++.a
lib/llvm-gcc-${LLVM_V}/libesupc++.la
lib/llvm-gcc-${LLVM_V}/libiberty.a
lib/llvm-gcc-${LLVM_V}/libssp.a
lib/llvm-gcc-${LLVM_V}/libssp.la
lib/llvm-gcc-${LLVM_V}/libssp_nonshared.a
lib/llvm-gcc-${LLVM_V}/libssp_nonshared.la
lib/llvm-gcc-${LLVM_V}/libstdc++.a
lib/llvm-gcc-${LLVM_V}/libstdc++.la
@man man/man1/llvm-cpp.1
@man man/man1/llvm-g++.1
@man man/man1/llvm-gcc.1
@man man/man1/llvm-gcov.1
@comment @man man/man7/fsf-funding.7
@comment @man man/man7/gfdl.7
@comment @man man/man7/gpl.7