auto import from //depot/cupcake/@135843
This commit is contained in:
28
libstdc++/Android.mk
Normal file
28
libstdc++/Android.mk
Normal file
@@ -0,0 +1,28 @@
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES:= \
|
||||
src/one_time_construction.cpp \
|
||||
src/new.cpp \
|
||||
src/pure_virtual.cpp \
|
||||
src/typeinfo.cpp
|
||||
|
||||
LOCAL_MODULE:= libstdc++
|
||||
|
||||
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES:= \
|
||||
src/one_time_construction.cpp \
|
||||
src/new.cpp \
|
||||
src/pure_virtual.cpp \
|
||||
src/typeinfo.cpp
|
||||
|
||||
LOCAL_MODULE:= libstdc++
|
||||
|
||||
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
0
libstdc++/MODULE_LICENSE_BSD
Normal file
0
libstdc++/MODULE_LICENSE_BSD
Normal file
26
libstdc++/NOTICE
Normal file
26
libstdc++/NOTICE
Normal file
@@ -0,0 +1,26 @@
|
||||
Copyright (C) 2007 The Android Open Source Project
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the project nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
0
libstdc++/include/cstddef
Normal file
0
libstdc++/include/cstddef
Normal file
29
libstdc++/include/new
Normal file
29
libstdc++/include/new
Normal file
@@ -0,0 +1,29 @@
|
||||
#ifndef __NEW__
|
||||
#define __NEW__
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
namespace std {
|
||||
using ::size_t;
|
||||
|
||||
struct nothrow_t {};
|
||||
extern const nothrow_t nothrow;
|
||||
}
|
||||
|
||||
void* operator new(std::size_t);
|
||||
void* operator new[](std::size_t);
|
||||
void operator delete(void*);
|
||||
void operator delete[](void*);
|
||||
void* operator new(std::size_t, const std::nothrow_t&);
|
||||
void* operator new[](std::size_t, const std::nothrow_t&);
|
||||
void operator delete(void*, const std::nothrow_t&);
|
||||
void operator delete[](void*, const std::nothrow_t&);
|
||||
|
||||
inline void* operator new(std::size_t, void* p) { return p; }
|
||||
inline void* operator new[](std::size_t, void* p) { return p; }
|
||||
|
||||
// these next two are not really required, since exceptions are off
|
||||
inline void operator delete(void*, void*) { }
|
||||
inline void operator delete[](void*, void*) { }
|
||||
|
||||
#endif // __NEW__
|
||||
122
libstdc++/include/stl_pair.h
Normal file
122
libstdc++/include/stl_pair.h
Normal file
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 1994
|
||||
* Hewlett-Packard Company
|
||||
*
|
||||
* Permission to use, copy, modify, distribute and sell this software
|
||||
* and its documentation for any purpose is hereby granted without fee,
|
||||
* provided that the above copyright notice appear in all copies and
|
||||
* that both that copyright notice and this permission notice appear
|
||||
* in supporting documentation. Hewlett-Packard Company makes no
|
||||
* representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1996,1997
|
||||
* Silicon Graphics Computer Systems, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute and sell this software
|
||||
* and its documentation for any purpose is hereby granted without fee,
|
||||
* provided that the above copyright notice appear in all copies and
|
||||
* that both that copyright notice and this permission notice appear
|
||||
* in supporting documentation. Silicon Graphics makes no
|
||||
* representations about the suitability of this software for any
|
||||
* purpose. It is provided "as is" without express or implied warranty.
|
||||
*/
|
||||
|
||||
/* NOTE: This is an internal header file, included by other STL headers.
|
||||
* You should not attempt to use it directly.
|
||||
*/
|
||||
|
||||
#ifndef __SGI_STL_INTERNAL_PAIR_H
|
||||
#define __SGI_STL_INTERNAL_PAIR_H
|
||||
|
||||
__STL_BEGIN_NAMESPACE
|
||||
|
||||
template <class _T1, class _T2>
|
||||
struct pair {
|
||||
typedef _T1 first_type;
|
||||
typedef _T2 second_type;
|
||||
|
||||
_T1 first;
|
||||
_T2 second;
|
||||
pair() : first(), second() {}
|
||||
pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {}
|
||||
|
||||
template <class _U1, class _U2>
|
||||
pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {}
|
||||
};
|
||||
|
||||
template <class _T1, class _T2>
|
||||
inline bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
|
||||
{
|
||||
return __x.first == __y.first && __x.second == __y.second;
|
||||
}
|
||||
|
||||
template <class _T1, class _T2>
|
||||
inline bool operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
|
||||
{
|
||||
return __x.first < __y.first ||
|
||||
(!(__y.first < __x.first) && __x.second < __y.second);
|
||||
}
|
||||
|
||||
template <class _T1, class _T2>
|
||||
inline bool operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
|
||||
return !(__x == __y);
|
||||
}
|
||||
|
||||
template <class _T1, class _T2>
|
||||
inline bool operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
|
||||
return __y < __x;
|
||||
}
|
||||
|
||||
template <class _T1, class _T2>
|
||||
inline bool operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
|
||||
return !(__y < __x);
|
||||
}
|
||||
|
||||
template <class _T1, class _T2>
|
||||
inline bool operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
|
||||
return !(__x < __y);
|
||||
}
|
||||
|
||||
template <class _T1, class _T2>
|
||||
inline pair<_T1, _T2> make_pair(_T1 __x, _T2 __y)
|
||||
{
|
||||
return pair<_T1, _T2>(__x, __y);
|
||||
}
|
||||
|
||||
__STL_END_NAMESPACE
|
||||
|
||||
#endif /* __SGI_STL_INTERNAL_PAIR_H */
|
||||
|
||||
// Local Variables:
|
||||
// mode:C++
|
||||
// End:
|
||||
28
libstdc++/include/typeinfo
Normal file
28
libstdc++/include/typeinfo
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef _TYPEINFO_HEADER_GAURD
|
||||
#define _TYPEINFO_HEADER_GAURD
|
||||
|
||||
|
||||
namespace std {
|
||||
class type_info;
|
||||
class bad_cast;
|
||||
class bad_typeid;
|
||||
};
|
||||
|
||||
|
||||
class type_info {
|
||||
public:
|
||||
type_info();
|
||||
virtual ~type_info();
|
||||
|
||||
char const * name() const;
|
||||
|
||||
bool operator==(type_info const & right) const;
|
||||
bool operator!=(type_info const & right) const;
|
||||
bool before(type_info const & right) const;
|
||||
|
||||
private:
|
||||
type_info(type_info const & right);
|
||||
type_info & operator=(type_info const & right);
|
||||
};
|
||||
|
||||
#endif
|
||||
38
libstdc++/include/utility
Normal file
38
libstdc++/include/utility
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef _CPP_UTILITY
|
||||
#define _CPP_UTILITY
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
#define __STL_BEGIN_NAMESPACE namespace std {
|
||||
#define __STL_END_NAMESPACE }
|
||||
|
||||
#include <stl_pair.h>
|
||||
|
||||
#endif /* _CPP_UTILITY */
|
||||
65
libstdc++/src/new.cpp
Normal file
65
libstdc++/src/new.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
#include "new"
|
||||
#include <stdlib.h>
|
||||
|
||||
const std::nothrow_t std::nothrow = {};
|
||||
|
||||
void* operator new(std::size_t size)
|
||||
{
|
||||
void* p = malloc(size);
|
||||
if (p == NULL) {
|
||||
// abort();
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
void* operator new[](std::size_t size)
|
||||
{
|
||||
void* p = malloc(size);
|
||||
if (p == NULL) {
|
||||
// abort();
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
void operator delete(void* ptr)
|
||||
{
|
||||
if (ptr) {
|
||||
free(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
void operator delete[](void* ptr)
|
||||
{
|
||||
if (ptr) {
|
||||
free(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
void* operator new(std::size_t size, const std::nothrow_t&)
|
||||
{
|
||||
return malloc(size);
|
||||
}
|
||||
|
||||
void* operator new[](std::size_t size, const std::nothrow_t&)
|
||||
{
|
||||
return malloc(size);
|
||||
}
|
||||
|
||||
void operator delete(void* ptr, const std::nothrow_t&)
|
||||
{
|
||||
if (ptr) {
|
||||
free(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
void operator delete[](void* ptr, const std::nothrow_t&)
|
||||
{
|
||||
if (ptr) {
|
||||
free(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
50
libstdc++/src/one_time_construction.cpp
Normal file
50
libstdc++/src/one_time_construction.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* one_time_construction.cpp
|
||||
*
|
||||
* Copyright 2006 The Android Open Source Project
|
||||
*
|
||||
* This file contains C++ ABI support functions for one time
|
||||
* constructors as defined in the "Run-time ABI for the ARM Architecture"
|
||||
* section 4.4.2
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
#include <sys/atomics.h>
|
||||
|
||||
extern "C" int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout);
|
||||
extern "C" int __futex_wake(volatile void *ftx, int count);
|
||||
|
||||
|
||||
extern "C" int __cxa_guard_acquire(int volatile * gv)
|
||||
{
|
||||
// 0 -> 2, return 1
|
||||
// 2 -> 6, wait and return 0
|
||||
// 6 untouched, wait and return 0
|
||||
// 1 untouched, return 0
|
||||
retry:
|
||||
if (__atomic_cmpxchg(0, 0x2, gv) == 0)
|
||||
return 1;
|
||||
|
||||
__atomic_cmpxchg(0x2, 0x6, gv); // Indicate there is a waiter
|
||||
__futex_wait(gv, 0x6, NULL);
|
||||
if(*gv != 1) // __cxa_guard_abort was called, let every thread try since there is no return code for this condition
|
||||
goto retry;
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern "C" void __cxa_guard_release(int volatile * gv)
|
||||
{
|
||||
// 2 -> 1
|
||||
// 6 -> 1, and wake
|
||||
if (__atomic_cmpxchg(0x2, 0x1, gv) == 0)
|
||||
return;
|
||||
|
||||
*gv = 0x1;
|
||||
__futex_wake(gv, 0x7fffffff);
|
||||
}
|
||||
|
||||
extern "C" void __cxa_guard_abort(int volatile * gv)
|
||||
{
|
||||
*gv = 0;
|
||||
__futex_wake(gv, 0x7fffffff);
|
||||
}
|
||||
10
libstdc++/src/pure_virtual.cpp
Normal file
10
libstdc++/src/pure_virtual.cpp
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
extern "C" void __cxa_pure_virtual()
|
||||
{
|
||||
fprintf(stderr, "Pure virtual function called. Are you calling virtual methods from a destructor?\n");
|
||||
abort();
|
||||
}
|
||||
|
||||
32
libstdc++/src/typeinfo.cpp
Normal file
32
libstdc++/src/typeinfo.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
#include "typeinfo"
|
||||
#include <stdlib.h>
|
||||
|
||||
type_info::type_info() {
|
||||
}
|
||||
|
||||
type_info::~type_info() {
|
||||
}
|
||||
|
||||
char const *
|
||||
type_info::name() const {
|
||||
return "N/A";
|
||||
}
|
||||
|
||||
bool
|
||||
type_info::operator==(type_info const & right) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
type_info::operator!=(type_info const & right) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
type_info::before(type_info const & right) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
type_info::type_info(type_info const & right) {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user