debian/0000755000000000000000000000000012266764203007176 5ustar debian/changelog0000644000000000000000000000335412266764072011061 0ustar libc++ (1.0~svn199600-1) unstable; urgency=low * New snapshot release * Standards-Version updated to 3.9.5 * Introduce package libc++-helpers (Closes: #718637) * Rename libc++-src => libc++-test * Rename libc++abi-src => libc++abi-test * For both, remove the sources from the packages (apt-get source libc++) -- Sylvestre Ledru Sun, 19 Jan 2014 15:25:24 +0100 libc++ (1.0~svn196040-1) unstable; urgency=low * New snapshot release -- Sylvestre Ledru Sun, 01 Dec 2013 11:00:53 +0100 libc++ (1.0~svn189766-1) unstable; urgency=low * New snapshot release -- Sylvestre Ledru Mon, 02 Sep 2013 19:43:49 +0200 libc++ (1.0~svn181765-1) unstable; urgency=low * New snapshot release * Upload to unstable -- Sylvestre Ledru Tue, 14 May 2013 10:41:44 +0200 libc++ (1.0~svn180177-1~exp1) experimental; urgency=low * New upstream release * Minimal clang version (>= 3.2) * Standards-Version updated to version 3.9.4 -- Sylvestre Ledru Wed, 24 Apr 2013 09:32:41 +0200 libc++ (1.0~svn170866-1~exp1) experimental; urgency=low * New snapshot release * libc++-dev now provides libstdc++-dev * Update of the homepage * Update the minimal version of debhelper (9) -- Sylvestre Ledru Fri, 21 Dec 2012 09:45:40 +0100 libc++ (1.0~svn161106-1~exp1) experimental; urgency=low * New snapshot release [ Andrej Belym ] * Multiarch support. -- Sylvestre Ledru Wed, 01 Aug 2012 10:38:08 +0200 libc++ (1.0~svn160132-1~exp1) experimental; urgency=low * Initial release (Closes: #682245) -- Andrej Belym Sat, 02 Jun 2012 19:25:47 +0400 debian/info0000644000000000000000000000000011773154141010036 0ustar debian/docs0000644000000000000000000000000011773154141010033 0ustar debian/libc++1.dirs0000644000000000000000000000001011773154141011164 0ustar usr/lib debian/libc++-helpers.install0000644000000000000000000000012512266760530013262 0ustar #! /usr/bin/dh-exec libcxx/bin/clang++-libc++ usr/bin libcxx/bin/g++-libc++ usr/bin debian/control0000644000000000000000000001046412266764107010611 0ustar Source: libc++ Priority: extra Maintainer: LLVM Packaging Team Uploaders: Andrej Belym , Sylvestre Ledru Build-Depends: debhelper (>= 9.0.0), clang (>= 1:3.2), dh-exec Standards-Version: 3.9.5 Section: libs Homepage: http://libcxx.llvm.org/ Vcs-Svn: svn://svn.debian.org/svn/pkg-llvm/libcxx/trunk/ Vcs-Browser: http://svn.debian.org/viewsvn/pkg-llvm/libcxx/trunk/ Package: libc++1 Section: libs Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: clang Description: LLVM C++ Standard library libc++ is a new implementation of the C++ standard library, targeting C++11. . Features and Goals . * Correctness as defined by the C++11 standard. * Fast execution. * Minimal memory use. * Fast compile times. * ABI compatibility with gcc's libstdc++ for some low-level features such as exception objects, rtti and memory allocation. * Extensive unit tests. Package: libc++-dev Section: libdevel Architecture: any Multi-Arch: same Depends: libc++1 (= ${binary:Version}), ${misc:Depends}, libc++-helpers Provides: libstdc++-dev Description: LLVM C++ Standard library (development files) libc++ is a new implementation of the C++ standard library, targeting C++11. . Features and Goals . * Correctness as defined by the C++11 standard. * Fast execution. * Minimal memory use. * Fast compile times. * ABI compatibility with gcc's libstdc++ for some low-level features such as exception objects, rtti and memory allocation. * Extensive unit tests. Package: libc++-test Section: libs Architecture: any Depends: libc++1 (= ${binary:Version}), ${misc:Depends} Replaces: libc++-src (<< 1.0~svn199600-1) Breaks: libc++-src (<< 1.0~svn199600-1) Description: LLVM C++ Standard library (test cases) libc++ is a new implementation of the C++ standard library, targeting C++11. . Features and Goals . * Correctness as defined by the C++11 standard. * Fast execution. * Minimal memory use. * Fast compile times. * ABI compatibility with gcc's libstdc++ for some low-level features such as exception objects, rtti and memory allocation. * Extensive unit tests. . This package contains the test cases of libc++ library. Package: libc++abi1 Section: libs Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends} Description: LLVM low level support for a standard C++ library libc++abi is a new implementation of low level support for a standard C++ library. . Features and Goals . * Correctness as defined by the C++11 standard. * Provide a portable sublayer to ease the porting of libc++ . Package: libc++abi-dev Section: libdevel Architecture: any Multi-Arch: same Depends: libc++abi1 (= ${binary:Version}), ${misc:Depends} Description: LLVM low level support for a standard C++ library (development files) libc++abi is a new implementation of low level support for a standard C++ library. . Features and Goals . * Correctness as defined by the C++11 standard. * Provide a portable sublayer to ease the porting of libc++ . Package: libc++abi-test Section: libs Architecture: any Depends: libc++abi1 (= ${binary:Version}), ${misc:Depends} Replaces: libc++abi-src (<< 1.0~svn199600-1) Breaks: libc++abi-src (<< 1.0~svn199600-1) Description: libc++abi test cases libc++abi is a new implementation of low level support for a standard C++ library. . Features and Goals . * Correctness as defined by the C++11 standard. * Provide a portable sublayer to ease the porting of libc++ . Test cases of libc++abi library. Package: libc++-helpers Architecture: all Multi-Arch: foreign Depends: ${misc:Depends} Replaces: libc++-dev (<< 1.0~svn199600-1) Breaks: libc++-dev (<< 1.0~svn199600-1) Description: LLVM C++ Standard library - build helpers libc++ is a new implementation of the C++ standard library, targeting C++11. . Features and Goals . * Correctness as defined by the C++11 standard. * Fast execution. * Minimal memory use. * Fast compile times. * ABI compatibility with gcc's libstdc++ for some low-level features such as exception objects, rtti and memory allocation. * Extensive unit tests. . This package contains the build helpers (clang++-libc++, etc) debian/compat0000644000000000000000000000000212007321135010356 0ustar 9 debian/libc++abi-test.install0000644000000000000000000000005012266763221013250 0ustar libcxxabi/test/* usr/lib/libcxxabi/test debian/libc++abi1.dirs0000644000000000000000000000001011773154141011640 0ustar usr/lib debian/libc++-test.dirs0000644000000000000000000000002412266763145012075 0ustar usr/lib/libcxx/test debian/libc++abi1.install0000755000000000000000000000011112007321135012340 0ustar #! /usr/bin/dh-exec libcxxabi/lib/*.so.* usr/lib/${DEB_HOST_MULTIARCH}/ debian/libc++abi-dev.dirs0000644000000000000000000000002411773154141012340 0ustar usr/include usr/lib debian/patches/0000755000000000000000000000000012265460153010621 5ustar debian/patches/libcxx-fix_g++.patch0000644000000000000000000000124312266761457014367 0ustar --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -53,7 +53,7 @@ # define _LIBCPP_LITTLE_ENDIAN 1 # define _LIBCPP_BIG_ENDIAN 0 // Compiler intrinsics (GCC or MSVC) -# if (defined(_MSC_VER) && _MSC_VER >= 1400) || (__GNUC__ >= 4 && __GNUC_MINOR__ > 3) +# if (defined(_MSC_VER) && _MSC_VER >= 1400) # define _LIBCP_HAS_IS_BASE_OF # endif #endif // _WIN32 @@ -307,6 +307,10 @@ #define _LIBCPP_HAS_NO_TRAILING_RETURN #define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS +#if (__GNUC__ >= 4 && __GNUC_MINOR__ > 3) +#define _LIBCP_HAS_IS_BASE_OF +#endif + #if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 3) #define _LIBCPP_HAS_NO_RVALUE_REFERENCES #endif debian/patches/libcxx-testit.patch0000644000000000000000000000114312266761457014460 0ustar Index: aze/libcxx/test/testit =================================================================== --- aze.orig/libcxx/test/testit 2014-01-19 15:36:20.020424562 +0100 +++ aze/libcxx/test/testit 2014-01-19 15:37:10.832423428 +0100 @@ -42,10 +42,16 @@ fi if [ -z "$OPTIONS" ] then - OPTIONS="-std=${CXX_LANG} -stdlib=libc++" + OPTIONS="-std=${CXX_LANG} -stdlib=libc++ -U__STRICT_ANSI__ -D__STDC_FORMAT_MACROS" fi OPTIONS="$OPTIONS -I$LIBCXX_ROOT/test/support" +if [ -z "$LIBS" ] +then + LIBS="-lm -lpthread" +fi + + if [ -z "$HEADER_INCLUDE" ] then HEADER_INCLUDE="-I$LIBCXX_ROOT/include" debian/patches/libcxx-buildit.patch0000644000000000000000000000215712266761457014606 0ustar Index: aze/libcxx/lib/buildit =================================================================== --- aze.orig/libcxx/lib/buildit 2013-12-01 11:05:11.989987101 +0100 +++ aze/libcxx/lib/buildit 2013-12-01 11:05:11.989987101 +0100 @@ -118,19 +118,20 @@ SOEXT=so LDSHARED_FLAGS="-o libc++.so.1.0 \ -shared -nodefaultlibs -Wl,-soname,libc++.so.1 \ - -lpthread -lrt -lc -lstdc++" + -lpthread -lrt -lc -L../../libcxxabi/lib" + EXTRA_FLAGS="$EXTRA_FLAGS -DLIBCXXABI" ;; esac if [ -z "$RC_XBS" ] then - rm -f libc++.1.$SOEXT* + rm -f libc++.a fi set -x for FILE in ../src/*.cpp; do - $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -I../include $FILE + $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -I../include -I../../libcxxabi/include $FILE done case $TRIPLE in *-*-mingw*) @@ -139,8 +140,12 @@ done ;; esac +for i in *.o; do + mv $i libcxx-$i; +done; +ar x ../../libcxxabi/lib/libc++abi.a +ar rcs libc++.a *.o $CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS - #libtool -static -o libc++.a *.o # Create the link for the final library name, so that we can use this directory debian/patches/libcxx-use_libcxxabi.patch0000644000000000000000000000061312266761457015766 0ustar Index: aze/libcxx/src/new.cpp =================================================================== --- aze.orig/libcxx/src/new.cpp 2013-12-01 11:07:42.245991909 +0100 +++ aze/libcxx/src/new.cpp 2013-12-01 11:07:42.241991909 +0100 @@ -17,7 +17,7 @@ #define __has_include(inc) 0 #endif -#ifdef __APPLE__ +#ifdef __APPLE__ || LIBCXXABI #include #ifndef _LIBCPPABI_VERSION debian/patches/libcxxabi-testit.patch0000644000000000000000000000126012266761457015134 0ustar --- a/libcxxabi/test/testit +++ b/libcxxabi/test/testit @@ -18,6 +18,15 @@ OPTIONS="-std=c++0x -stdlib=libc++" fi +if [ -z "$HEADER_INCLUDE"] +then + HEADER_INCLUDE="-I/usr/include/libcxxabi" +fi +#if [ -z "$SOURCE_LIB"] +#then +# SOURCE_LIB="-lc++abi" +#fi + case $TRIPLE in *-*-mingw* | *-*-cygwin* | *-*-win*) TEST_EXE=test.exe @@ -40,7 +49,7 @@ if (ls *.fail.cpp &> /dev/null) then for FILE in $(ls *.fail.cpp); do - if $CC $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null + if $CC -v $OPTIONS $HEADER_INCLUDE $SOURCE_LIB $FILE $LIBS -o ./$TEST_EXE &> /dev/null then rm ./$TEST_EXE echo "$FILE should not compile" debian/patches/libcxxabi-buildit.patch0000644000000000000000000000214412266761457015256 0ustar Index: aze/libcxxabi/lib/buildit =================================================================== --- aze.orig/libcxxabi/lib/buildit 2013-12-01 11:05:40.761988022 +0100 +++ aze/libcxxabi/lib/buildit 2013-12-01 11:07:33.777991638 +0100 @@ -70,29 +70,31 @@ SOEXT=so LDSHARED_FLAGS="-o libc++abi.so.1.0 \ -shared -nodefaultlibs -Wl,-soname,libc++abi.so.1 \ - -lpthread -lrt -lc -lstdc++" + -lpthread -lc " ;; esac if [ -z $RC_XBS ] then rm -f libc++abi.1.$SOEXT* + rm -f libc++abi.a fi set -x for FILE in ../src/*.cpp; do - $CXX -c -g -O3 $RC_CFLAGS $EXTRA_FLAGS -I../include $OPTIONS $FILE + $CXX -c -g -O3 $RC_CFLAGS $EXTRA_FLAGS -I../include -I../../libcxx/include $OPTIONS $FILE done case $TRIPLE in *-*-mingw*) for FILE in ../src/support/win32/*.cpp; do - $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -I../include $OPTIONS $FILE + $CXX -c -g -Os $RC_CFLAGS $EXTRA_FLAGS -I../include -I../../libcxx/include $OPTIONS $FILE done ;; esac $CC *.o $RC_CFLAGS $LDSHARED_FLAGS $EXTRA_FLAGS +ar rcs libc++abi.a *.o if [ -z $RC_XBS ] then rm *.o debian/patches/libcxxabi-unwind.patch0000644000000000000000000002451512266761457015134 0ustar --- /dev/null +++ b/libcxxabi/include/unwind.h @@ -0,0 +1,276 @@ +/* Exception handling and frame unwind runtime interface routines. + Copyright (C) 2001, 2003, 2004, 2006, 2008, 2009 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 3, 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + +/* This is derived from the C++ ABI for IA-64. Where we diverge + for cross-architecture compatibility are noted with "@@@". */ + +#ifndef _UNWIND_H +#define _UNWIND_H + +#ifndef HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Level 1: Base ABI */ + +/* @@@ The IA-64 ABI uses uint64 throughout. Most places this is + inefficient for 32-bit and smaller machines. */ +typedef unsigned _Unwind_Word __attribute__((__mode__(__word__))); +typedef signed _Unwind_Sword __attribute__((__mode__(__word__))); +#if defined(__ia64__) && defined(__hpux__) +typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__))); +#else +typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__))); +#endif +typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__))); + +/* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and + consumer of an exception. We'll go along with this for now even on + 32-bit machines. We'll need to provide some other option for + 16-bit machines and for machines with > 8 bits per byte. */ +typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__))); + +/* The unwind interface uses reason codes in several contexts to + identify the reasons for failures or other actions. */ +typedef enum +{ + _URC_NO_REASON = 0, + _URC_FOREIGN_EXCEPTION_CAUGHT = 1, + _URC_FATAL_PHASE2_ERROR = 2, + _URC_FATAL_PHASE1_ERROR = 3, + _URC_NORMAL_STOP = 4, + _URC_END_OF_STACK = 5, + _URC_HANDLER_FOUND = 6, + _URC_INSTALL_CONTEXT = 7, + _URC_CONTINUE_UNWIND = 8 +} _Unwind_Reason_Code; + + +/* The unwind interface uses a pointer to an exception header object + as its representation of an exception being thrown. In general, the + full representation of an exception object is language- and + implementation-specific, but it will be prefixed by a header + understood by the unwind interface. */ + +struct _Unwind_Exception; + +typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code, + struct _Unwind_Exception *); + +struct _Unwind_Exception +{ + _Unwind_Exception_Class exception_class; + _Unwind_Exception_Cleanup_Fn exception_cleanup; + _Unwind_Word private_1; + _Unwind_Word private_2; + + /* @@@ The IA-64 ABI says that this structure must be double-word aligned. + Taking that literally does not make much sense generically. Instead we + provide the maximum alignment required by any type for the machine. */ +} __attribute__((__aligned__)); + + +/* The ACTIONS argument to the personality routine is a bitwise OR of one + or more of the following constants. */ +typedef int _Unwind_Action; + +#define _UA_SEARCH_PHASE 1 +#define _UA_CLEANUP_PHASE 2 +#define _UA_HANDLER_FRAME 4 +#define _UA_FORCE_UNWIND 8 +#define _UA_END_OF_STACK 16 + +/* The target can override this macro to define any back-end-specific + attributes required for the lowest-level stack frame. */ +#ifndef LIBGCC2_UNWIND_ATTRIBUTE +#define LIBGCC2_UNWIND_ATTRIBUTE +#endif + +/* This is an opaque type used to refer to a system-specific data + structure used by the system unwinder. This context is created and + destroyed by the system, and passed to the personality routine + during unwinding. */ +struct _Unwind_Context; + +/* Raise an exception, passing along the given exception object. */ +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_RaiseException (struct _Unwind_Exception *); + +/* Raise an exception for forced unwinding. */ + +typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn) + (int, _Unwind_Action, _Unwind_Exception_Class, + struct _Unwind_Exception *, struct _Unwind_Context *, void *); + +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); + +/* Helper to invoke the exception_cleanup routine. */ +extern void _Unwind_DeleteException (struct _Unwind_Exception *); + +/* Resume propagation of an existing exception. This is used after + e.g. executing cleanup code, and not to implement rethrowing. */ +extern void LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_Resume (struct _Unwind_Exception *); + +/* @@@ Resume propagation of a FORCE_UNWIND exception, or to rethrow + a normal exception that was handled. */ +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *); + +/* @@@ Use unwind data to perform a stack backtrace. The trace callback + is called for every stack frame in the call chain, but no cleanup + actions are performed. */ +typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) + (struct _Unwind_Context *, void *); + +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_Backtrace (_Unwind_Trace_Fn, void *); + +/* These functions are used for communicating information about the unwind + context (i.e. the unwind descriptors and the user register state) between + the unwind library and the personality routine and landing pad. Only + selected registers may be manipulated. */ + +extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int); +extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word); + +extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *); +extern _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *); +extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr); + +/* @@@ Retrieve the CFA of the given context. */ +extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *); + +extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *); + +extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *); + + +/* The personality routine is the function in the C++ (or other language) + runtime library which serves as an interface between the system unwind + library and language-specific exception handling semantics. It is + specific to the code fragment described by an unwind info block, and + it is always referenced via the pointer in the unwind info block, and + hence it has no ABI-specified name. + + Note that this implies that two different C++ implementations can + use different names, and have different contents in the language + specific data area. Moreover, that the language specific data + area contains no version info because name of the function invoked + provides more effective versioning by detecting at link time the + lack of code to handle the different data format. */ + +typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn) + (int, _Unwind_Action, _Unwind_Exception_Class, + struct _Unwind_Exception *, struct _Unwind_Context *); + +/* @@@ The following alternate entry points are for setjmp/longjmp + based unwinding. */ + +struct SjLj_Function_Context; +extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *); +extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *); + +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_SjLj_RaiseException (struct _Unwind_Exception *); +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_SjLj_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); +extern void LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_SjLj_Resume (struct _Unwind_Exception *); +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *); + +/* @@@ The following provide access to the base addresses for text + and data-relative addressing in the LDSA. In order to stay link + compatible with the standard ABI for IA-64, we inline these. */ + +#ifdef __ia64__ +#include + +static inline _Unwind_Ptr +_Unwind_GetDataRelBase (struct _Unwind_Context *_C) +{ + /* The GP is stored in R1. */ + return _Unwind_GetGR (_C, 1); +} + +static inline _Unwind_Ptr +_Unwind_GetTextRelBase (struct _Unwind_Context *_C __attribute__ ((__unused__))) +{ + abort (); + return 0; +} + +/* @@@ Retrieve the Backing Store Pointer of the given context. */ +extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); +#else +extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); +extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); +#endif + +/* @@@ Given an address, return the entry point of the function that + contains it. */ +extern void * _Unwind_FindEnclosingFunction (void *pc); + +#ifndef __SIZEOF_LONG__ + #error "__SIZEOF_LONG__ macro not defined" +#endif + +#ifndef __SIZEOF_POINTER__ + #error "__SIZEOF_POINTER__ macro not defined" +#endif + + +/* leb128 type numbers have a potentially unlimited size. + The target of the following definitions of _sleb128_t and _uleb128_t + is to have efficient data types large enough to hold the leb128 type + numbers used in the unwind code. + Mostly these types will simply be defined to long and unsigned long + except when a unsigned long data type on the target machine is not + capable of storing a pointer. */ + +#if __SIZEOF_LONG__ >= __SIZEOF_POINTER__ + typedef long _sleb128_t; + typedef unsigned long _uleb128_t; +#elif __SIZEOF_LONG_LONG__ >= __SIZEOF_POINTER__ + typedef long long _sleb128_t; + typedef unsigned long long _uleb128_t; +#else +# error "What type shall we use for _sleb128_t?" +#endif + +#ifdef __cplusplus +} +#endif + +#ifndef HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* unwind.h */ debian/patches/series0000644000000000000000000000016312266761457012052 0ustar libcxx-buildit.patch libcxxabi-buildit.patch libcxx-use_libcxxabi.patch libcxxabi-testit.patch libcxx-testit.patch debian/patches/debian_build_flags.patch0000644000000000000000000000156312266761457015440 0ustar --- a/libcxx/lib/buildit +++ b/libcxx/lib/buildit @@ -99,6 +99,13 @@ ;; esac +#Debian build flags +CPPFLAGS="`dpkg-buildflags --get CPPFLAGS` $CPPFLAGS" +CFLAGS="`dpkg-buildflags --get CFLAGS` $CFLAGS" +CXXFLAGS="`dpkg-buildflags --get CXXFLAGS` $CXXFLAGS" +LDFLAGS="`dpkg-buildflags --get LDFLAGS` $LDFLAGS" +EXTRA_FLAGS="$CPPFLAGS $CFLAGS $CXXFLAGS $LDFLAGS $EXTRA_FLAGS" + if [ -z $RC_XBS ] then rm -f libc++.1.$SOEXT* --- a/libcxxabi/lib/buildit +++ b/libcxxabi/lib/buildit @@ -74,6 +74,13 @@ ;; esac +#Debian build flags +CPPFLAGS="`dpkg-buildflags --get CPPFLAGS` $CPPFLAGS" +CFLAGS="`dpkg-buildflags --get CFLAGS` $CFLAGS" +CXXFLAGS="`dpkg-buildflags --get CXXFLAGS` $CXXFLAGS" +LDFLAGS="`dpkg-buildflags --get LDFLAGS` $LDFLAGS" +EXTRA_FLAGS="$CPPFLAGS $CFLAGS $CXXFLAGS $LDFLAGS $EXTRA_FLAGS" + if [ -z $RC_XBS ] then rm -f libc++abi.1.$SOEXT* debian/patches/libcxxabi-test_vector3.patch0000644000000000000000000000061412266761457016246 0ustar --- a/libcxxabi/test/test_vector3.cpp +++ b/libcxxabi/test/test_vector3.cpp @@ -14,7 +14,8 @@ #include #include - +//for exit(int) +#include // use dtors instead of try/catch namespace test1 { struct B { @@ -54,4 +55,4 @@ __cxxabiv1::__cxa_vec_dtor(a, 10, sizeof(test1::A), destroy); assert(false); } -} \ No newline at end of file +} debian/libc++1.postrm0000644000000000000000000000165611773154141011570 0ustar #!/bin/sh # postrm script for libc++ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `purge' # * `upgrade' # * `failed-upgrade' # * `abort-install' # * `abort-install' # * `abort-upgrade' # * `disappear' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ldconfig ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libc++-helpers.postinst0000644000000000000000000000203412007321135013463 0ustar #!/bin/sh # postinst script for libc++ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package PRIORITY=5 case "$1" in configure) update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-libc++ $PRIORITY ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libc++-helpers.prerm0000644000000000000000000000165112007321135012731 0ustar #!/bin/sh # prerm script for libc++ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove|upgrade|deconfigure) update-alternatives --remove c++ /usr/bin/clang++-libc++ ;; failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libc++-dev.docs0000644000000000000000000000000011773154141011645 0ustar debian/libc++abi1.postrm0000644000000000000000000000165611773154141012244 0ustar #!/bin/sh # postrm script for libc++ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `purge' # * `upgrade' # * `failed-upgrade' # * `abort-install' # * `abort-install' # * `abort-upgrade' # * `disappear' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ldconfig ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libc++-get-orig-source.sh0000755000000000000000000000243012155640052013574 0ustar #!/bin/sh if test ! -d debian; then echo "This script must be started from the base directory" exit 1 fi if test $# -ne 1; then echo "Version is expected" fi PACKAGE=libc++ SRC_VERSION=$1 SVN_REVISION=`echo ${SRC_VERSION} | awk -F'~' '{ print $2 }' | sed 's/svn//'` LIBCXX_SVN=http://llvm.org/svn/llvm-project/libcxx/trunk LIBCXXABI_SVN=http://llvm.org/svn/llvm-project/libcxxabi/trunk rm -rf tmp $TARBALL mkdir tmp if [ -z "$SVN_REVISION" ]; then echo "No SVN revision specified, using current revision..." SVN_REVISION=`LANG=C svn info $LIBCXX_SVN| sed -ne 's/Revision: \([0-9]*\)/\1/p'` echo "Current revision is $SVN_REVISION." SRC_VERSION="${SRC_VERSION}~svn${SVN_REVISION}" else echo "Using SVN revision ${SVN_REVISION}..." SRC_VERSION="${SRC_VERSION}" fi PKG_NAME=${PACKAGE}_${SRC_VERSION} TARBALL=${PKG_NAME}.orig.tar.gz svn co -r $SVN_REVISION $LIBCXX_SVN tmp/libcxx svn co -r $SVN_REVISION $LIBCXXABI_SVN tmp/libcxxabi cd libcxxabi cp --parents include/unwind.h ../tmp/libcxxabi/ cd ../ cd libcxx cp --parents bin/clang++-libc++ ../tmp/libcxx/ cp --parents bin/g++-libc++ ../tmp/libcxx/ cd ../ GZIP='--best --no-name' tar czf $TARBALL --exclude-vcs -C tmp libcxx libcxxabi rm -rf tmp echo "$TARBALL created; move it to the right destination to build the package" debian/libc++1.postinst0000644000000000000000000000171112007321135012105 0ustar #!/bin/sh # postinst script for libc++ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) ldconfig ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/TODO0000644000000000000000000000006512007321135007651 0ustar * multiarch * use libunwind to replace also libgcc_s debian/libc++-dev.dirs0000644000000000000000000000003311773154141011664 0ustar usr/include/c++/v1 usr/lib debian/libc++1.install0000755000000000000000000000010612007321135011670 0ustar #! /usr/bin/dh-exec libcxx/lib/*.so.* usr/lib/${DEB_HOST_MULTIARCH}/ debian/libc++abi-dev.docs0000644000000000000000000000000011773154141012321 0ustar debian/libc++abi-test.dirs0000644000000000000000000000002712266763217012554 0ustar usr/lib/libcxxabi/test debian/libc++-dev.install0000755000000000000000000000030412266760531012401 0ustar #! /usr/bin/dh-exec libcxx/lib/*.so usr/lib/${DEB_HOST_MULTIARCH}/ libcxx/lib/*.a usr/lib/${DEB_HOST_MULTIARCH}/ libcxx/include/* usr/include/c++/v1 libcxxabi/include/cxxabi.h usr/include/c++/v1 debian/rules0000755000000000000000000000135112007321135010240 0ustar #!/usr/bin/make -f # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 SRC_VERSION := $(shell dpkg-parsechangelog | sed -ne 's/^Version: \(\([0-9]\+\):\)\?\(.*\)-.*/\3/p') %: dh $@ override_dh_auto_clean: cd libcxxabi/test;rm -f a.out; cd libcxxabi/lib; rm -f libc++abi.a libc++abi.so.1.0 libc++abi.so libc++abi.so.1 *.o; cd libcxx/lib; rm -f libc++.a libc++.so.1.0 libc++.so libc++.so.1.0 libc++.so.1 *.o; override_dh_auto_build: cd libcxxabi/lib; ./buildit; ln -s libc++abi.so.1.0 libc++abi.so;\ ln -s libc++abi.so.1.0 libc++abi.so.1; cd libcxx/lib; ./buildit; ln -s libc++.so.1.0 libc++.so;\ ln -s libc++.so.1.0 libc++.so.1; .PHONY: get-orig-source get-orig-source: sh debian/libc++-get-orig-source.sh $(SRC_VERSION) debian/README.source0000644000000000000000000000115412155640052011346 0ustar libc++ for Debian ----------------- Please use debian/rules get-orig-source to get sources for current package version. You can use the script libc++-get-orig-source.sh in debian folder. This script takes as argument the version of package in two formats: X.Y~svnZ or X.Y. If the first form is specified, script uses SVN revision Z when checkouting sources. Otherwise, it uses the current revision of libc++ SVN repository. Target in debian/rules get-orig-source just invoke script with version specified in debian/changelog file. -- Sylvestre Ledru , Wed, 24 Apr 2013 09:32:10 +0200 debian/copyright0000644000000000000000000001201212007321135011107 0ustar Format: http://dep.debian.net/deps/dep5 Upstream-Name: libc++ Source: http://libcxx.llvm.org,http://libcxxabi.llvm.org Files: * Copyright: 2009-2012 by the contributors listed below N: Howard Hinnant E: hhinnant@apple.com D: Architect and primary author of libc++ N: Marshall Clow E: marshall@idio.com E: mclow@qualcomm.com D: Minor patches and bug fixes. N: Bjorn Reese E: breese@users.sourceforge.net D: Initial regex prototype N: David Chisnall E: theraven at theravensnest dot org D: FreeBSD and Solaris ports, libcxxrt support, some atomics work. N: Ruben Van Boxem E: vanboxem dot ruben at gmail dot com D: Initial Windows patches. N: Arvid Picciani E: aep at exys dot org D: Minor patches and musl port. N: Craig Silverstein E: csilvers@google.com D: Implemented Cityhash as the string hash function on 64-bit machines N: Google Inc. D: Copyright owner and contributor of the CityHash algorithm N: Jeffrey Yasskin E: jyasskin@gmail.com E: jyasskin@google.com D: Linux fixes. N: Jonathan Sauer D: Minor patches, mostly related to constexpr N: Richard Smith D: Minor patches. The list is sorted by surname and formatted to allow easy grepping and beautification by scripts. The fields are: name (N), email (E), web-address (W), PGP key ID and fingerprint (P), description (D), and snail-mail address (S). License: NCSA or MIT License: NCSA University of Illinois/NCSA Open Source License All rights reserved. Developed by: LLVM Team University of Illinois at Urbana-Champaign http://llvm.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at Urbana-Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Files: debian/* libcxx/bin/clang++-libc++ libcxx/bin/g++-libc++ Copyright: 2012 Andrej Belym 2012 Sylvestre Ledru License: GPL-2+ This package 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 of the License, or (at your option) any later version. . This package 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 program. If not, see . On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". debian/libc++-test.install0000644000000000000000000000004212266763153012601 0ustar libcxx/test/* usr/lib/libcxx/test debian/README.Debian0000644000000000000000000000123412007321135011221 0ustar libc++ for Debian ----------------- Package of new implementation of C++ standard library and C++ ABI. As a quick start, libc++ can be used the following way: With this great example: ---- foo.cpp ---- #include int main() { std::cout << "plop" << std::endl; } ---- foo.cpp ---- $ clang++ -stdlib=libc++ -o plop foo.cpp $ ./plop plop $ ldd ./plop |grep c++ libc++.so.1 => /usr/lib/libc++.so.1 (0xb76c2000) As an helper, the script clang++-libc++ is provided to hide the call to libc++. With the same source, it can be used this way: $ clang++-libc++ -o plop foo.cpp -- Sylvestre Ledru , Fri, 20 Jul 2012 19:30:49 +0200 debian/source/0000755000000000000000000000000012216363002010461 5ustar debian/source/format0000644000000000000000000000001411773154141011700 0ustar 3.0 (quilt) debian/libc++abi-dev.install0000755000000000000000000000024212007321135013040 0ustar #! /usr/bin/dh-exec libcxxabi/lib/*.a usr/lib/${DEB_HOST_MULTIARCH}/ libcxxabi/lib/*.so usr/lib/${DEB_HOST_MULTIARCH}/ libcxxabi/include/* usr/include/libcxxabi debian/libc++abi1.postinst0000644000000000000000000000171011773154141012572 0ustar #!/bin/sh # postinst script for libc++ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) ldconfig ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0