diff options
author | monster <monster@ydb.tech> | 2022-07-07 14:41:37 +0300 |
---|---|---|
committer | monster <monster@ydb.tech> | 2022-07-07 14:41:37 +0300 |
commit | 06e5c21a835c0e923506c4ff27929f34e00761c2 (patch) | |
tree | 75efcbc6854ef9bd476eb8bf00cc5c900da436a2 /contrib/restricted/boost/libs | |
parent | 03f024c4412e3aa613bb543cf1660176320ba8f4 (diff) | |
download | ydb-06e5c21a835c0e923506c4ff27929f34e00761c2.tar.gz |
fix ya.make
Diffstat (limited to 'contrib/restricted/boost/libs')
180 files changed, 5 insertions, 22442 deletions
diff --git a/contrib/restricted/boost/libs/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/.yandex_meta/licenses.list.txt deleted file mode 100644 index db29dd547c..0000000000 --- a/contrib/restricted/boost/libs/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,72 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// (C) Copyright 2016 Raffi Enficiaud. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// (C) Copyright Gennadiy Rozental 2005-2010. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// (C) Copyright Gennadiy Rozental 2006-2010. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// (C) Copyright Gennadiy Rozental 2011. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// (c) Copyright Raffi Enficiaud 2017. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/atomic/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/atomic/.yandex_meta/licenses.list.txt deleted file mode 100644 index 445e6b59c5..0000000000 --- a/contrib/restricted/boost/libs/atomic/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,39 +0,0 @@ -====================BSL-1.0==================== - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== - * Copyright (c) 2011 Helge Bahmann - * Copyright (c) 2013-2014 Andrey Semashev - - -====================COPYRIGHT==================== -// Copyright (c) 2011 Helge Bahmann - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/chrono/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/chrono/.yandex_meta/licenses.list.txt deleted file mode 100644 index 261729da1d..0000000000 --- a/contrib/restricted/boost/libs/chrono/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,86 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost -// Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// (C) Copyright Howard Hinnant -// Copyright 2011 Vicente J. Botet Escriba - - -====================COPYRIGHT==================== -// Copyright 2009-2010 Vicente J. Botet Escriba - - -====================COPYRIGHT==================== -// Copyright 2009-2011 Vicente J. Botet Escriba - - -====================COPYRIGHT==================== -// Copyright 2010 Vicente J. Botet Escriba - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2003, 2006, 2008 -// Copyright 2009-2011 Vicente J. Botet Escriba -// Copyright (c) Microsoft Corporation 2014 - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2008 -// Copyright Vicente J. Botet Escriba 2009 - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2008 -// Copyright Vicente J. Botet Escriba 2009-2010 - - -====================COPYRIGHT==================== -// (C) Copyright Vicente J. Botet Escriba 2010. -// Distributed under the Boost -// Software License, Version 1.0. - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/chrono/CMakeLists.txt b/contrib/restricted/boost/libs/chrono/CMakeLists.txt index fc7b1ee73c..a681d385f3 100644 --- a/contrib/restricted/boost/libs/chrono/CMakeLists.txt +++ b/contrib/restricted/boost/libs/chrono/CMakeLists.txt @@ -8,6 +8,6 @@ if (APPLE) include(CMakeLists.darwin.txt) -elseif (UNIX AND NOT APPLE) +elseif (UNIX) include(CMakeLists.linux.txt) endif() diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp deleted file mode 100644 index 66fd02cb17..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches.hpp +++ /dev/null @@ -1,24 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// -// (C) Copyright Vicente J. Botet Escriba 2010. -// Distributed under the Boost -// Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/stm for documentation. -// -////////////////////////////////////////////////////////////////////////////// - -#ifndef BOOST_STOPWATCHES_HPP -#define BOOST_STOPWATCHES_HPP - -//----------------------------------------------------------------------------- -#include <boost/chrono/stopwatches/simple_stopwatch.hpp> -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp> -#include <boost/chrono/stopwatches/reporters/system_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/process_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/thread_default_formatter.hpp> -//----------------------------------------------------------------------------- - -#endif // BOOST_STOPWATCHES_HPP diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp deleted file mode 100644 index 740c40d28c..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_MEMORIES_LAPS_ACCUMULATOR_SET_HPP -#define BOOST_CHRONO_STOPWATCHES_MEMORIES_LAPS_ACCUMULATOR_SET_HPP - -#include <boost/chrono/stopwatches/collectors/last_lap.hpp> -#include <boost/accumulators/framework/accumulator_set.hpp> -#include <boost/accumulators/statistics/count.hpp> -#include <boost/accumulators/statistics/sum.hpp> -#include <boost/accumulators/statistics/min.hpp> -#include <boost/accumulators/statistics/max.hpp> -#include <boost/accumulators/statistics/mean.hpp> -#include <boost/accumulators/accumulators.hpp> -#include <boost/accumulators/framework/features.hpp> - -namespace boost -{ - namespace chrono - { - - template< - typename Duration, - typename Features = accumulators::features<accumulators::tag::count, - accumulators::tag::sum, accumulators::tag::min, - accumulators::tag::max, accumulators::tag::mean>, - typename Weight = void> - struct laps_accumulator_set : last_lap<Duration> - { - typedef last_lap<Duration> base_type; - typedef Duration duration; - typedef typename duration::rep rep; - typedef accumulators::accumulator_set<rep, Features, - Weight> storage_type; - storage_type acc_; - - void store(duration const& d) - { - this->base_type::store(d); - acc_(d.count()); - } - - void reset() - { - this->base_type::reset(); - acc_ = storage_type(); - } - - storage_type const& accumulator_set() const { return acc_; } - - duration elapsed() const { return duration(accumulators::sum(acc_)); } - - }; - - - } // namespace chrono -} // namespace boost - - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp deleted file mode 100644 index debb5fc102..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/laps_sequence_container.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// boost/chrono/stopwatches/collectors/laps_sequence_container.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_MEMORIES_LAPS_CONTAINER_HPP -#define BOOST_CHRONO_STOPWATCHES_MEMORIES_LAPS_CONTAINER_HPP - -#include <list> - -namespace boost -{ - namespace chrono - { - - template< - typename Duration, - typename SequenceContainer = std::list<Duration> - > - struct laps_sequence_container - { - typedef Duration duration; - typedef typename duration::rep rep; - typedef SequenceContainer storage_type; - typedef typename SequenceContainer::iterator iterator; - typedef typename SequenceContainer::const_iterator const_iterator; - storage_type cont_; - - void store(duration const& d) - { - cont_.push_front(d); - } - - void reset() - { - cont_.clear(); - } - - storage_type const& container() const { return cont_; } - - duration last() const { - if (cont_.empty()) - return duration::zero(); - else - return *cont_.begin(); - } - - duration elapsed() const { - duration elapsed_ = duration::zero(); - for (const_iterator it = cont_.begin(); it !=cont_.end(); ++it) elapsed_ += *it; - return elapsed_; - } - - }; - - - } // namespace chrono -} // namespace boost - - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp deleted file mode 100644 index 1a24392f4b..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/last_lap.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// boost/chrono/stopwatches/collectors/last_lap.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_MEMORIES_LAST_LAP_HPP -#define BOOST_CHRONO_STOPWATCHES_MEMORIES_LAST_LAP_HPP - - -namespace boost -{ - namespace chrono - { - - template<typename Duration> - struct last_lap - { - typedef Duration duration; - duration last_; - void store(duration const& d) - { - last_ = d; - } - void reset() - { - last_ = duration::zero(); - } - duration last() const { return last_; } - duration elapsed() const { return duration::zero(); } - - }; - - - } // namespace chrono -} // namespace boost - - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp deleted file mode 100644 index 7c68b6cb0f..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/collectors/no_memory.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// boost/chrono/stopwatches/collectors/no_memory.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_MEMORIES_NO_MEMORY_HPP -#define BOOST_CHRONO_STOPWATCHES_MEMORIES_NO_MEMORY_HPP - - -namespace boost -{ - namespace chrono - { - - template<typename Duration> - struct no_memory - { - typedef Duration duration; - - duration elapsed() const { return duration::zero(); } - duration last() const { return duration::zero(); } - void store(duration const& ) {} - void reset() {} - - }; - - - } // namespace chrono -} // namespace boost - - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp deleted file mode 100644 index e9c4df3667..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/dont_start.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// boost/chrono/stopwatches/dont.hpp ------------------------------------------------------------// -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_DONT_START__HPP -#define BOOST_CHRONO_STOPWATCHES_DONT_START__HPP - -namespace boost -{ - namespace chrono - { - - /** - * Type used to don't start a basic_stopwatch at construction time. - */ - struct dont_start_t - { - }; - - /** - * Instance used to don't start a basic_stopwatch at construction time. - */ - static const dont_start_t dont_start = - { }; - - - } // namespace chrono -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp deleted file mode 100644 index dc0cf18e74..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp +++ /dev/null @@ -1,133 +0,0 @@ -// boost/chrono/stopwatches/formatters/ accumulator_set_formatter.hpp ------------------------------------------------------------// -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_FORMATTERS_ACCUMULATOR_SET_HPP -#define BOOST_CHRONO_STOPWATCHES_FORMATTERS_ACCUMULATOR_SET_HPP - -#include <boost/chrono/stopwatches/formatters/base_formatter.hpp> -#include <boost/chrono/chrono_io.hpp> -#include <boost/current_function.hpp> -#include <boost/accumulators/framework/accumulator_set.hpp> -#include <boost/accumulators/statistics/count.hpp> -#include <boost/accumulators/statistics/sum.hpp> -#include <boost/accumulators/statistics/min.hpp> -#include <boost/accumulators/statistics/max.hpp> -#include <boost/accumulators/statistics/mean.hpp> -#include <boost/accumulators/accumulators.hpp> -#include <boost/format.hpp> -#include <boost/format/group.hpp> -#include <boost/cstdint.hpp> -#include <boost/assert.hpp> -#include <string> -#include <iostream> -#include <cassert> -#include <iomanip> - -#define BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FORMAT_DEFAULT "count=%1%, sum=%2%, min=%3%, max=%4%, mean=%5%\n" - -namespace boost -{ - namespace chrono - { - - template<typename Ratio = milli, typename CharT = char, - typename Traits = std::char_traits<CharT>, - class Alloc = std::allocator<CharT> > - class basic_accumulator_set_formatter: public base_formatter<CharT, Traits> , public basic_format< - CharT, Traits> - { - - public: - typedef base_formatter<CharT, Traits> base_type; - typedef basic_format<CharT, Traits> format_type; - typedef std::basic_string<CharT, Traits, Alloc> string_type; - typedef CharT char_type; - typedef std::basic_ostream<CharT, Traits> ostream_type; - - basic_accumulator_set_formatter() : - base_type(), - format_type(BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FORMAT_DEFAULT) - { - } - basic_accumulator_set_formatter(ostream_type& os) : - base_type(os), - format_type(BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FORMAT_DEFAULT) - { - } - basic_accumulator_set_formatter(const char* fmt, ostream_type& os = - std::cout) : - base_type(os), format_type(fmt) - { - } - basic_accumulator_set_formatter(string_type const& fmt, ostream_type& os = - std::cout) : - base_type(os), format_type(fmt) - { - } - - // static string_type format(const char* s) - // { - // string_type res(s); - // res += boost::chrono::detail::adaptive_string(" : "); - // res += BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FORMAT_DEFAULT; - // return res; - // } - - template<class Stopwatch> - void operator()(Stopwatch & stopwatch_ - //, system::error_code & ec = BOOST_CHRONO_THROWS - ) - { - - typedef typename Stopwatch::laps_collector::storage_type - laps_collector_acc; - laps_collector_acc const& acc = - stopwatch_.get_laps_collector().accumulator_set(); - - typedef typename Stopwatch::duration duration_t; - - duration_style_io_saver dsios(this->os_); - this->os_ - << static_cast<format_type&> (*this) - % boost::accumulators::count(acc) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), (boost::accumulators::count(acc) - == 0) ? boost::chrono::duration<double, Ratio>(duration_t::zero()) : boost::chrono::duration< - double, Ratio>(duration_t(boost::accumulators::sum(acc)))) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), (boost::accumulators::count(acc) - == 0) ? boost::chrono::duration<double, Ratio>(duration_t::zero()) : boost::chrono::duration< - double, Ratio>(duration_t((boost::accumulators::min)(acc)))) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), (boost::accumulators::count(acc) - == 0) ? boost::chrono::duration<double, Ratio>(duration_t::zero()) : boost::chrono::duration< - double, Ratio>(duration_t((boost::accumulators::max)(acc)))) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), ((boost::accumulators::count(acc) - > 0) ? boost::chrono::duration<double, Ratio>(duration_t(boost::accumulators::sum(acc) - / boost::accumulators::count(acc))) : boost::chrono::duration< - double, Ratio>(duration_t::zero()))); - - } - }; - - typedef basic_accumulator_set_formatter<milli, char> - accumulator_set_formatter; - typedef basic_accumulator_set_formatter<milli, wchar_t> - waccumulator_set_formatter; - - } // namespace chrono -} // namespace boost - -#if 0 -#define BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FORMAT(F) \ - boost::chrono::detail::adaptive_string(F " : " BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FORMAT_DEFAULT) -#ifdef __GNUC__ -#define BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FUNCTION_FORMAT \ - boost::chrono::elapsed_formatter::format(BOOST_CURRENT_FUNCTION) -#else -#define BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FUNCTION_FORMAT \ - BOOST_CHRONO_STOPWATCHES_ACCUMULATOR_SET_FORMAT(BOOST_CURRENT_FUNCTION) -#endif -#endif - -#endif diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/base_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/base_formatter.hpp deleted file mode 100644 index 855379ae1d..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/base_formatter.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// boost/chrono/stopwatches/formatters/base_formatter.hpp ------------------------------------------------------------// -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_FORMATTERS_BASE_FORMATTER_HPP -#define BOOST_CHRONO_STOPWATCHES_FORMATTERS_BASE_FORMATTER_HPP - -#include <boost/chrono/io/duration_style.hpp> -#include <boost/chrono/duration.hpp> -#include <boost/chrono/chrono_io.hpp> -#include <boost/cstdint.hpp> -#include <iostream> -#include <iomanip> - -namespace boost -{ - namespace chrono - { - - template<typename CharT = char, typename Traits = std::char_traits<CharT> > - class base_formatter - { - base_formatter& operator=(base_formatter const& rhs) ; - - public: - typedef std::basic_ostream<CharT, Traits> ostream_type; - - base_formatter() : - precision_(3), os_(std::cout), duration_style_(duration_style::symbol) - { - } - base_formatter(ostream_type& os) : - precision_(3), os_(os), duration_style_(duration_style::symbol) - { - } - - void set_precision(std::size_t precision) - { - precision_ = precision; - if (precision_ > 9) - precision_ = 9; // sanity check - } - void set_os(ostream_type& os) - { - os_ = os; - } - void set_duration_style(duration_style style) - { - duration_style_ = style; - } - - protected: - std::size_t precision_; - ostream_type & os_; - duration_style duration_style_; - - }; - - } // namespace chrono -} // namespace boost - - -#endif diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/elapsed_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/elapsed_formatter.hpp deleted file mode 100644 index 7ec23c8e4e..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/elapsed_formatter.hpp +++ /dev/null @@ -1,109 +0,0 @@ -// boost/chrono/stopwatches/formatters/elapsed_formatter.hpp ------------------------------------------------------------// -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_FORMATTERS_ELAPSED_HPP -#define BOOST_CHRONO_STOPWATCHES_FORMATTERS_ELAPSED_HPP - -#include <boost/chrono/stopwatches/formatters/base_formatter.hpp> -#include <boost/chrono/chrono_io.hpp> -#include <boost/current_function.hpp> -#include <boost/format.hpp> -#include <boost/format/group.hpp> -#include <boost/cstdint.hpp> -#include <boost/assert.hpp> -#include <string> -#include <iostream> -#include <cassert> -#include <iomanip> - -#define BOOST_CHRONO_STOPWATCHES_ELAPSED_FORMAT_DEFAULT "%1%\n" - -namespace boost -{ - namespace chrono - { - - template<typename Ratio, typename CharT, - typename Traits = std::char_traits<CharT>, - class Alloc = std::allocator<CharT> > - class basic_elapsed_formatter: public base_formatter<CharT, Traits>, public basic_format<CharT, Traits> - { - - public: - typedef base_formatter<CharT, Traits> base_type; - typedef basic_format<CharT, Traits> format_type; - typedef std::basic_string<CharT, Traits, Alloc> string_type; - typedef CharT char_type; - typedef std::basic_ostream<CharT, Traits> ostream_type; - - basic_elapsed_formatter() : - base_type(), - format_type(BOOST_CHRONO_STOPWATCHES_ELAPSED_FORMAT_DEFAULT) - { - } - basic_elapsed_formatter(ostream_type& os) : - base_type(os), - format_type(BOOST_CHRONO_STOPWATCHES_ELAPSED_FORMAT_DEFAULT) - { - } - basic_elapsed_formatter(const char* fmt, ostream_type& os = std::cout) : - base_type(os), format_type(fmt) - { - } - basic_elapsed_formatter(string_type const& fmt, ostream_type& os = - std::cout) : - base_type(os), format_type(fmt) - { - } - -// static string_type format(const char* s) -// { -// string_type res(s); -// res += boost::chrono::detail::adaptive_string(" : "); -// res += BOOST_CHRONO_STOPWATCHES_ELAPSED_FORMAT_DEFAULT; -// return res; -// } - - template<class Stopwatch> - void operator()(Stopwatch & stopwatch_ - //, system::error_code & ec= BOOST_CHRONO_THROWS - ) - { - typedef typename Stopwatch::duration duration_t; - duration_t d = stopwatch_.elapsed(); - //duration_t d = stopwatch_.elapsed(ec); - - if (d < duration_t::zero()) - return; - - duration_style_io_saver dsios(this->os_); - this->os_ << static_cast<format_type&>(*this) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), boost::chrono::duration< - double, Ratio>(d)) - ; - - } - }; - - typedef basic_elapsed_formatter<milli, char> elapsed_formatter; - typedef basic_elapsed_formatter<milli, wchar_t> welapsed_formatter; - - } // namespace chrono -} // namespace boost - -#if 0 -#define BOOST_CHRONO_STOPWATCHES_ELAPSED_FORMAT(F) \ - boost::chrono::detail::adaptive_string(F " : " BOOST_CHRONO_STOPWATCHES_ELAPSED_FORMAT_DEFAULT) -#ifdef __GNUC__ -#define BOOST_CHRONO_STOPWATCHES_ELAPSED_FUNCTION_FORMAT \ - boost::chrono::elapsed_formatter::format(BOOST_CURRENT_FUNCTION) -#else -#define BOOST_CHRONO_STOPWATCHES_ELAPSED_FUNCTION_FORMAT \ - BOOST_CHRONO_STOPWATCHES_ELAPSED_FORMAT(BOOST_CURRENT_FUNCTION) -#endif -#endif - -#endif diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/times_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/times_formatter.hpp deleted file mode 100644 index 4db70d08f7..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/formatters/times_formatter.hpp +++ /dev/null @@ -1,117 +0,0 @@ -// boost/chrono/stopwatches/formatters/times_formatter.hpp ------------------------------------------------------------// -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_FORMATTERS_TIMES_HPP -#define BOOST_CHRONO_STOPWATCHES_FORMATTERS_TIMES_HPP - -#include <boost/chrono/stopwatches/formatters/base_formatter.hpp> -//#include <boost/chrono/detail/system.hpp> -#include <boost/current_function.hpp> -//#include <boost/chrono/stopwatches/detail/adaptive_string.hpp> -#include <boost/format.hpp> -#include <boost/format/group.hpp> -#include <boost/cstdint.hpp> -#include <boost/assert.hpp> -#include <string> -#include <iostream> -#include <cassert> -#include <iomanip> - -#define BOOST_CHRONO_STOPWATCHES_TIMES_FORMAT_DEFAULT "real %1%, cpu %4% (%5%%%), user %2%, system %3%\n" - -namespace boost -{ - namespace chrono - { - - template<typename Ratio = milli, typename CharT = char, - typename Traits = std::char_traits<CharT>, - class Alloc = std::allocator<CharT> > - class basic_times_formatter: public base_formatter<CharT, Traits>, public basic_format<CharT, Traits> - { - - public: - typedef base_formatter<CharT, Traits> base_type; - typedef basic_format<CharT, Traits> format_type; - typedef std::basic_string<CharT, Traits, Alloc> string_type; - typedef CharT char_type; - typedef std::basic_ostream<CharT, Traits> ostream_type; - - basic_times_formatter() : - base_type(), - format_type(BOOST_CHRONO_STOPWATCHES_TIMES_FORMAT_DEFAULT) - { - } - basic_times_formatter(ostream_type& os) : - base_type(os), - format_type(BOOST_CHRONO_STOPWATCHES_TIMES_FORMAT_DEFAULT) - { - } - basic_times_formatter(const char* fmt, ostream_type& os = std::cout) : - base_type(os), format_type(fmt) - { - } - basic_times_formatter(string_type const& fmt, ostream_type& os = - std::cout) : - base_type(os), format_type(fmt) - { - } - -// static string_type format(const char* s) -// { -// string_type res(s); -// res += boost::chrono::detail::adaptive_string(" : "); -// res += BOOST_CHRONO_STOPWATCHES_TIMES_FORMAT_DEFAULT; -// return res; -// } - - template<class Stopwatch> - void operator()(Stopwatch & stopwatch_ - //, system::error_code & ec= BOOST_CHRONO_THROWS - ) - { - typedef typename Stopwatch::duration::rep times_type; - //times_type times = stopwatch_.elapsed(ec).count(); - times_type times = stopwatch_.elapsed().count(); - - if (times.real < 0) - return; - double p; - if (times.real > 0) - p=double(times.user+times.system)*100/times.real; - else - p=0; - - duration_style_io_saver dsios(this->os_); - this->os_ << static_cast<format_type&>(*this) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), boost::chrono::duration<double, Ratio>(nanoseconds(times.real))) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), boost::chrono::duration<double, Ratio>(nanoseconds(times.user))) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), boost::chrono::duration<double, Ratio>(nanoseconds(times.system))) - % io::group(std::fixed, std::setprecision(this->precision_), duration_fmt(this->duration_style_), boost::chrono::duration<double, Ratio>(nanoseconds(times.user+times.system))) - % io::group(std::fixed, std::setprecision(2), p) - ; - } - }; - - typedef basic_times_formatter<milli, char> times_formatter; - typedef basic_times_formatter<milli, wchar_t> wtimes_formatter; - - } // namespace chrono -} // namespace boost - -#if 0 -#define BOOST_CHRONO_STOPWATCHES_TIMES_FORMAT(F) \ - boost::chrono::detail::adaptive_string(F " : " BOOST_CHRONO_STOPWATCHES_TIMES_FORMAT_DEFAULT) -#ifdef __GNUC__ -#define BOOST_CHRONO_STOPWATCHES_TIMES_FUNCTION_FORMAT \ - boost::chrono::times_formatter::format(BOOST_CURRENT_FUNCTION) -#else -#define BOOST_CHRONO_STOPWATCHES_TIMES_FUNCTION_FORMAT \ - BOOST_CHRONO_STOPWATCHES_TIMES_FORMAT(BOOST_CURRENT_FUNCTION) -#endif -#endif - -#endif diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp deleted file mode 100644 index 981644193a..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/laps_stopwatch.hpp +++ /dev/null @@ -1,442 +0,0 @@ -// boost/chrono/stopwatches/laps_stopwatch.hpp -----------------------------// - -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_LAPS_STOPWATCH_HPP -#define BOOST_CHRONO_STOPWATCHES_LAPS_STOPWATCH_HPP - - -#include <boost/chrono/config.hpp> - -#include <boost/chrono/stopwatches/stopwatch_scoped.hpp> -#include <boost/chrono/stopwatches/collectors/no_memory.hpp> // default laps_collector -#include <boost/chrono/stopwatches/dont_start.hpp> -#include <boost/chrono/system_clocks.hpp> // default_clock -#include <boost/system/error_code.hpp> -#include <utility> - -namespace boost -{ - namespace chrono - { - - - /** - * A laps_stopwatch is a model of @c Stopwatch taking as template parameters the @c Clock and the @c LapsCollector. - * - * The main difference respect to a @c simple_stopwatch is that the user can stop it. - * Each sequence of start-stop results in a new elapsed duration sample that is provided to the LapsCollector. - * - * It is up to the LapsCollector to make whatever wants with each sample. - * A LapCollector must define a store(duration const&) and a clear() functions. - * - * The library provides LapsCollectors that forget the sample, store the - * last one, cummulates the samples in an accumulator set or store them in a container. - * For simplicity the default LapCollector is the one that forget the samples. - * - * Even if it is preferable to use process or thread wide clocks, - * the default of the Clock parameter is high_resolution_clock, - * as it is the single one ensured on all platforms. - */ - template<typename Clock=high_resolution_clock, typename LapsCollector=no_memory<typename Clock::duration> > - class laps_stopwatch - { - public: - typedef LapsCollector laps_collector; - typedef Clock clock; - typedef typename Clock::duration duration; - typedef typename Clock::time_point time_point; - typedef typename Clock::rep rep; - typedef typename Clock::period period; - BOOST_STATIC_CONSTEXPR bool is_steady = Clock::is_steady; - - /** - * Default constructor. - * - * Effects: Starts the stopwatch. - * Post-conditions: is_running(). - */ - explicit laps_stopwatch() - : - start_(duration::zero()), - running_(false), - laps_collector_() - { - start(); - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Default constructor. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: Starts the stopwatch. - * Post-conditions: is_running() if no error occur. - */ - explicit laps_stopwatch( - system::error_code & ec - ) : - start_(duration::zero()), - running_(false), - laps_collector_() - { - start(ec); - } -#endif - /** - * Not starting constructor. - * - * Effects: Don't starts the stopwatch. - * Post-conditions: ! is_running() if no error occur. - */ - explicit laps_stopwatch( - const dont_start_t& - ) : - start_(duration::zero()), - running_(false), - laps_collector_() - { - } - - /** - * Starting constructor from a LapsCollector instance. - * - * Effects: Copies the LapsCollector. Starts the stopwatch. - * Post-conditions: is_running() if no error occur. - * - * Remark: The LapsCollector is copied and owned by the stopwatch. - */ - explicit laps_stopwatch( - laps_collector const& acc - ) : - start_(duration::zero()), - running_(false), - laps_collector_(acc) - { - start(); - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Starting constructor from a LapsCollector instance. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: Copies the LapsCollector. Starts the stopwatch. - * Post-conditions: is_running() if no error occur. - * - * Remark: The LapsCollector is copied and owned by the stopwatch. - */ - explicit laps_stopwatch( - laps_collector const& acc, - system::error_code & ec - ) : - start_(duration::zero()), - running_(false), - laps_collector_(acc) - { - start(ec); - } -#endif - - /** - * Not starting constructor from a LapsCollector instance. - * - * Effects: Copies the LapsCollector. Don't starts the stopwatch. - * Post-conditions: ! is_running() if no error occur. - * - * Remark: The LapsCollector is copied and owned by the stopwatch. - */ - laps_stopwatch( - laps_collector const& acc, - const dont_start_t& - ) : - start_(duration::zero()), - running_(false), - laps_collector_(acc) - { - } - - /** - * Destructor. - * - * Effects: Do nothing. - */ - ~laps_stopwatch() - { - } - - /** - * Restart the stopwatch. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: As if stop(); start() were called, but ensuring that the start time is the same as the stop time. - * - * Post-conditions: is_running() if no error occur. - */ - void restart() - { - time_point tmp = clock::now(); - - if (is_running()) - { - laps_collector_.store(tmp - start_); - } - else - { - running_ = true; - } - start_ = tmp; - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Restart the stopwatch. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: As if stop(); start() were called, but ensuring that the start time is the same as the stop time. - * - * Post-conditions: is_running() if no error occur. - */ - void restart( - system::error_code & ec - ) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - if (is_running()) - { - laps_collector_.store(tmp - start_); - } - else - { - running_ = true; - } - start_ = tmp; - } -#endif - - /** - * Start the stopwatch. - * - * Effects: Memorize the current time. - * - * Post-conditions: is_running(). - */ - void start() - { - start_ = clock::now(); - running_ = true; - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Start the stopwatch. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: Memorize the current time. - * - * Post-conditions: is_running() if no error occur. - */ - void start( - system::error_code & ec - ) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - start_ = tmp; - running_ = true; - } -#endif - - /** - * Start the stopwatch. - * - * Effects: Gives the elapsed time since start time to the LapCollector. - * - * Throws: Any exception that the LapCollector can throw when . - * - * Post-conditions: !is_running() if no error occur. - */ - void stop() - { - if (is_running()) - { - laps_collector_.store(clock::now() - start_); - start_ = time_point(duration::zero()); - running_ = false; - } - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Start the stopwatch. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: Gives the elapsed time since start time to the LapCollector if no internal error occurs. - * - * Throws: Any exception that the LapCollector can Throw. - * - * Post-conditions: !is_running() if no error occur. - */ - void stop( - system::error_code & ec - ) - { - if (is_running()) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - laps_collector_.store(tmp - start_); - start_ = time_point(duration::zero()); - running_ = false; - } - } -#endif - - /** - * States if the Stopwatch is running. - */ - bool is_running() const { - return running_; - } - - /** - * Elapsed time getter for the current lap. - * - * Returns: the elapsed time since the last start if no internal error occur. - * - */ - duration elapsed_current_lap() const - { - if (is_running()) - { - return clock::now() - start_; - } - else - { - return duration::zero(); - } - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Elapsed time getter for the current lap. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * - * Returns: the elapsed time since the start if no internal error occur. - * - */ - duration elapsed_current_lap( - system::error_code & ec - ) const - { - if (is_running()) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return duration::zero(); - - return tmp - start_; - } else - { - return duration::zero(); - } - } -#endif - - /** - * Elapsed time getter. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * - * Returns: the elapsed time since the start if no internal error occur. - * - */ - duration elapsed() const - { - return laps_collector_.elapsed()+elapsed_current_lap(); - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Elapsed time getter. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * - * Returns: the elapsed time since the start if no internal error occur. - * - */ - duration elapsed( - system::error_code & ec - ) const - { - duration tmp = elapsed_current_lap(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return duration::zero(); - return laps_collector_.elapsed() + tmp; - } -#endif - /** - * Elapsed time for the last lap. - * - * Returns: the elapsed time of the last lap. - * - */ - - duration last() const - { - return laps_collector_.last(); - } - /** - * Resets the stopwatch. - * - * Effects: Resets the LapCollector. - * - * Post-conditions: !is_running() if no error occur. - * - */ - void reset() - { - - laps_collector_.reset(); - running_ = false; - start_ = time_point(duration::zero()); - } - - /** - * LapsCollector getter. - * - * Returns: the LapCollector instance. - * - */ - laps_collector const& get_laps_collector() BOOST_NOEXCEPT - { - return laps_collector_; - } - - /** - * Useful typedef for scoped run - */ - typedef stopwatch_runner<laps_stopwatch<Clock, LapsCollector> > - scoped_run; - /** - * Useful typedef for scoped stop - */ - typedef stopwatch_stopper<laps_stopwatch<Clock, LapsCollector> > - scoped_stop; - - private: - time_point start_; - bool running_; - laps_collector laps_collector_; - }; - - } // namespace chrono -} // namespace boost - -#endif // header diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp deleted file mode 100644 index d85039ab62..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/clock_default_formatter.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_CLOCK_DEFAULT_FORMATTER_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_CLOCK_DEFAULT_FORMATTER_HPP - -#include <boost/chrono/stopwatches/formatters/elapsed_formatter.hpp> - -namespace boost -{ - namespace chrono - { - - template<class CharT, class Clock> - struct basic_clock_default_formatter - { - typedef basic_elapsed_formatter<milli, CharT> type; - }; - - } // namespace chrono -} // namespace boost - - - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp deleted file mode 100644 index 239833fcfc..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_LAPS_STOPWATCH_DEFAULT_FORMATTER_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_LAPS_STOPWATCH_DEFAULT_FORMATTER_HPP - -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp> -#include <boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp> -#include <boost/chrono/stopwatches/stopwatch.hpp> -#include <boost/chrono/thread_clock.hpp> - -namespace boost -{ - namespace chrono - { - - template <typename CharT, typename Clock, typename Features, typename Weight> - struct basic_stopwatch_reporter_default_formatter<CharT, stopwatch<Clock,laps_accumulator_set<typename Clock::duration,Features, Weight> > > - { - typedef basic_accumulator_set_formatter<milli,CharT> type; - }; - - } // namespace chrono -} // namespace boost - - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp deleted file mode 100644 index 4debbc5518..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopclock.hpp +++ /dev/null @@ -1,176 +0,0 @@ -// boost/chrono/stopwatches/reporters/stopclock.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. -#error - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_LAPS_STOPCLOCK_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_LAPS_STOPCLOCK_HPP - -#include <boost/chrono/config.hpp> - -#if !defined(BOOST_ENABLE_WARNINGS) && !defined(BOOST_CHRONO_ENABLE_WARNINGS) -#if defined __GNUC__ -#pragma GCC system_header -#elif defined __SUNPRO_CC -#pragma disable_warn -#elif defined _MSC_VER -#pragma warning(push, 1) -#endif -#endif - -#include <boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp> -#include <boost/chrono/stopwatches/stopwatch_scoped.hpp> -#include <boost/chrono/stopwatches/stopwatch.hpp> -#include <boost/chrono/stopwatches/dont_start.hpp> -#include <boost/chrono/chrono.hpp> -#include <boost/system/error_code.hpp> -#include <boost/cstdint.hpp> -#include <cassert> - -namespace boost -{ - namespace chrono - { - - template<class CharT, typename Clock, typename LapsCollector, class Formatter> - class basic_stopclock: public basic_stopwatch_reporter<CharT, stopwatch<Clock, LapsCollector>, Formatter> - { - public: - typedef basic_stopwatch_reporter<CharT, stopwatch<Clock, LapsCollector>, Formatter> base_type; - typedef Clock clock; - typedef stopwatch<Clock, LapsCollector> stopwatch; - typedef Formatter formatter_type; - - basic_stopclock() - { - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit basic_stopclock(system::error_code & ec) : - base_type(ec) - { - } -#endif - explicit basic_stopclock( - const dont_start_t& tag - ) BOOST_NOEXCEPT : - base_type(tag) - { - } - - explicit basic_stopclock(formatter_type const& fmt) : - base_type(fmt) - { - } - - explicit basic_stopclock(const typename Formatter::char_type* fmt) : - base_type(fmt) - { - } - explicit basic_stopclock(typename Formatter::string_type const& fmt) : - base_type(fmt) - { - } - typedef stopwatch_runner<basic_stopclock<CharT,Clock, LapsCollector, Formatter> > - scoped_run; - typedef stopwatch_stopper<basic_stopclock<CharT,Clock, LapsCollector, Formatter> > - scoped_stop; - typedef stopwatch_suspender<basic_stopclock<CharT,Clock, LapsCollector, Formatter> > - scoped_suspend; - typedef stopwatch_resumer<basic_stopclock<CharT,Clock, LapsCollector, Formatter> > - scoped_resume; - - protected: - - basic_stopclock(const basic_stopclock&); // = delete; - basic_stopclock& operator=(const basic_stopclock&); // = delete; - }; - - - template<typename Clock=high_resolution_clock, typename LapsCollector=no_memory<typename Clock::duration>, - class Formatter = typename basic_stopwatch_reporter_default_formatter<char, stopwatch<Clock, LapsCollector> >::type> - class stopclock; - - template<class Stopwatch, class Formatter> - struct basic_stopwatch_reporter_default_formatter<char, stopclock<Stopwatch, - Formatter> > - { - typedef Formatter type; - }; - - template<typename Clock, typename LapsCollector, class Formatter> - class stopclock: public basic_stopclock<char, Clock, LapsCollector, Formatter> - { - typedef basic_stopclock<char, Clock, LapsCollector, Formatter> base_type; - public: - typedef Clock clock; - typedef typename base_type::stopwatch stopwatch; - typedef Formatter formatter_type; - - stopclock() - { - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit stopclock(system::error_code & ec) : - base_type(ec) - { - } -#endif - explicit stopclock( - const dont_start_t& tag - ) BOOST_NOEXCEPT : - base_type(tag) - { - } - - explicit stopclock(formatter_type const& fmt) : - base_type(fmt) - { - } - - explicit stopclock(const typename Formatter::char_type* fmt) : - base_type(fmt) - { - } - explicit stopclock(typename Formatter::string_type const& fmt) : - base_type(fmt) - { - } - typedef stopwatch_runner<stopclock<Clock, LapsCollector, Formatter> > - scoped_run; - typedef stopwatch_stopper<stopclock<Clock, LapsCollector, Formatter> > - scoped_stop; - typedef stopwatch_suspender<stopclock<Clock, LapsCollector, Formatter> > - scoped_suspend; - typedef stopwatch_resumer<stopclock<Clock, LapsCollector, Formatter> > - scoped_resume; - - protected: - - stopclock(const stopclock&); // = delete; - stopclock& operator=(const stopclock&); // = delete; - }; - - - - } // namespace chrono -} // namespace boost - - -#if !defined(BOOST_ENABLE_WARNINGS) && !defined(BOOST_CHRONO_ENABLE_WARNINGS) -#if defined __SUNPRO_CC -#pragma enable_warn -#elif defined _MSC_VER -#pragma warning(pop) -#endif -#endif - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp deleted file mode 100644 index e157eb39d2..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// boost/chrono/stopwatches/reporters/laps_stopwatch_default_formatter.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Copyright (c) Microsoft Corporation 2014 -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_LAPS_STOPWATCH_DEFAULT_FORMATTER_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_LAPS_STOPWATCH_DEFAULT_FORMATTER_HPP - -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/formatters/accumulator_set_formatter.hpp> -#include <boost/chrono/stopwatches/collectors/laps_accumulator_set.hpp> -#include <boost/chrono/stopwatches/laps_stopwatch.hpp> -#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP -#include <boost/chrono/thread_clock.hpp> -#endif - -namespace boost -{ - namespace chrono - { - - template <typename CharT, typename Clock, typename Features, typename Weight> - struct basic_stopwatch_reporter_default_formatter<CharT, laps_stopwatch<Clock,laps_accumulator_set<typename Clock::duration,Features, Weight> > > - { - typedef basic_accumulator_set_formatter<milli,CharT> type; - }; - - } // namespace chrono -} // namespace boost - - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp deleted file mode 100644 index 4b3c1c58e9..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/process_default_formatter.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// boost/chrono/stopwatches/reporters/process_default_formatter.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Copyright (c) Microsoft Corporation 2014 -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_PROCESS_DEFAULT_FORMATTER_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_PROCESS_DEFAULT_FORMATTER_HPP - -#include <boost/chrono/config.hpp> - -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/clock_default_formatter.hpp> -#include <boost/chrono/stopwatches/formatters/elapsed_formatter.hpp> -#include <boost/chrono/stopwatches/formatters/times_formatter.hpp> -#include <boost/chrono/process_cpu_clocks.hpp> - -#if defined(BOOST_CHRONO_HAS_PROCESS_CLOCKS) - -namespace boost -{ - namespace chrono - { -#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP - - template <typename CharT> - struct basic_clock_default_formatter<CharT, process_cpu_clock> - { - typedef basic_times_formatter<milli, CharT> type; - }; - -#endif - } // namespace chrono -} // namespace boost - - -#endif - -#endif - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp deleted file mode 100644 index 937cabdd45..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopclock.hpp +++ /dev/null @@ -1,175 +0,0 @@ -// boost/chrono/stopwatches/reporters/stopclock.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_LAPS_STOPCLOCK_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_LAPS_STOPCLOCK_HPP - -#include <boost/chrono/config.hpp> - -#if !defined(BOOST_ENABLE_WARNINGS) && !defined(BOOST_CHRONO_ENABLE_WARNINGS) -#if defined __GNUC__ -#pragma GCC system_header -#elif defined __SUNPRO_CC -#pragma disable_warn -#elif defined _MSC_VER -#pragma warning(push, 1) -#endif -#endif - -#include <boost/chrono/stopwatches/reporters/laps_accumulator_set_stopwatch_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp> -#include <boost/chrono/stopwatches/stopwatch_scoped.hpp> -#include <boost/chrono/stopwatches/stopwatch.hpp> -#include <boost/chrono/stopwatches/dont_start.hpp> -#include <boost/chrono/chrono.hpp> -#include <boost/chrono/detail/system.hpp> -#include <boost/cstdint.hpp> -#include <cassert> - -namespace boost -{ - namespace chrono - { - - template<class CharT, typename Clock, typename LapsCollector, class Formatter> - class basic_stopclock: public basic_stopwatch_reporter<CharT, stopwatch<Clock, LapsCollector>, Formatter> - { - public: - typedef basic_stopwatch_reporter<CharT, stopwatch<Clock, LapsCollector>, Formatter> base_type; - typedef Clock clock; - typedef stopwatch<Clock, LapsCollector> stopwatch_type; - typedef Formatter formatter_type; - - basic_stopclock() - { - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit basic_stopclock(system::error_code & ec) : - base_type(ec) - { - } -#endif - explicit basic_stopclock( - const dont_start_t& tag - ) BOOST_NOEXCEPT : - base_type(tag) - { - } - - explicit basic_stopclock(formatter_type const& fmt) : - base_type(fmt) - { - } - - explicit basic_stopclock(const typename Formatter::char_type* fmt) : - base_type(fmt) - { - } - explicit basic_stopclock(typename Formatter::string_type const& fmt) : - base_type(fmt) - { - } - typedef stopwatch_runner<basic_stopclock<CharT,Clock, LapsCollector, Formatter> > - scoped_run; - typedef stopwatch_stopper<basic_stopclock<CharT,Clock, LapsCollector, Formatter> > - scoped_stop; - typedef stopwatch_suspender<basic_stopclock<CharT,Clock, LapsCollector, Formatter> > - scoped_suspend; - typedef stopwatch_resumer<basic_stopclock<CharT,Clock, LapsCollector, Formatter> > - scoped_resume; - - protected: - - basic_stopclock(const basic_stopclock&); // = delete; - basic_stopclock& operator=(const basic_stopclock&); // = delete; - }; - - - template<typename Clock=high_resolution_clock, typename LapsCollector=no_memory<typename Clock::duration>, - class Formatter = typename basic_stopwatch_reporter_default_formatter<char, stopwatch<Clock, LapsCollector> >::type> - class stopclock; - - template<class Stopwatch, class Formatter> - struct basic_stopwatch_reporter_default_formatter<char, stopclock<Stopwatch, - Formatter> > - { - typedef Formatter type; - }; - - template<typename Clock, typename LapsCollector, class Formatter> - class stopclock: public basic_stopclock<char, Clock, LapsCollector, Formatter> - { - typedef basic_stopclock<char, Clock, LapsCollector, Formatter> base_type; - public: - typedef Clock clock; - typedef typename base_type::stopwatch_type stopwatch_type; - typedef Formatter formatter_type; - - stopclock() - { - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit stopclock(system::error_code & ec) : - base_type(ec) - { - } -#endif - explicit stopclock( - const dont_start_t& tag - ) BOOST_NOEXCEPT : - base_type(tag) - { - } - - explicit stopclock(formatter_type const& fmt) : - base_type(fmt) - { - } - - explicit stopclock(const typename Formatter::char_type* fmt) : - base_type(fmt) - { - } - explicit stopclock(typename Formatter::string_type const& fmt) : - base_type(fmt) - { - } - typedef stopwatch_runner<stopclock<Clock, LapsCollector, Formatter> > - scoped_run; - typedef stopwatch_stopper<stopclock<Clock, LapsCollector, Formatter> > - scoped_stop; - typedef stopwatch_suspender<stopclock<Clock, LapsCollector, Formatter> > - scoped_suspend; - typedef stopwatch_resumer<stopclock<Clock, LapsCollector, Formatter> > - scoped_resume; - - protected: - - stopclock(const stopclock&); // = delete; - stopclock& operator=(const stopclock&); // = delete; - }; - - - - } // namespace chrono -} // namespace boost - - -#if !defined(BOOST_ENABLE_WARNINGS) && !defined(BOOST_CHRONO_ENABLE_WARNINGS) -#if defined __SUNPRO_CC -#pragma enable_warn -#elif defined _MSC_VER -#pragma warning(pop) -#endif -#endif - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp deleted file mode 100644 index 8d379cd9cf..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp +++ /dev/null @@ -1,259 +0,0 @@ -// boost/chrono/stopwatches/stopwatch_reporter.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_STOPWATCH_REPORTER_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_STOPWATCH_REPORTER_HPP - -#include <boost/chrono/config.hpp> - -#if !defined(BOOST_ENABLE_WARNINGS) && !defined(BOOST_CHRONO_ENABLE_WARNINGS) -#if defined __GNUC__ -#pragma GCC system_header -#elif defined __SUNPRO_CC -#pragma disable_warn -#elif defined _MSC_VER -#pragma warning(push, 1) -#endif -#endif - -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/stopwatch_scoped.hpp> -#include <boost/chrono/stopwatches/dont_start.hpp> -#include <boost/chrono/chrono.hpp> -#include <boost/chrono/detail/system.hpp> -#include <boost/cstdint.hpp> -#include <cassert> - -namespace boost -{ - namespace chrono - { - - template<class CharT, class Stopwatch, class Formatter=basic_stopwatch_reporter_default_formatter<CharT, Stopwatch> > - class basic_stopwatch_reporter: public Stopwatch - { - public: - typedef Stopwatch base_type; - typedef typename Stopwatch::clock clock; - typedef Stopwatch stopwatch_type; - typedef Formatter formatter_type; - - basic_stopwatch_reporter() BOOST_NOEXCEPT : - formatter_(), reported_(false) - { - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit basic_stopwatch_reporter(system::error_code & ec) : - base_type(ec), formatter_(), reported_(false) - { - } -#endif - - explicit basic_stopwatch_reporter( - const dont_start_t& tag - ) BOOST_NOEXCEPT : - base_type(tag), - formatter_(), reported_(false) - { - } - - explicit basic_stopwatch_reporter(const typename Formatter::char_type* fmt) : - formatter_(fmt), reported_(false) - { - } - explicit basic_stopwatch_reporter(typename Formatter::string_type const& fmt) : - formatter_(fmt), reported_(false) - { - } - explicit basic_stopwatch_reporter(formatter_type fmt) : - formatter_(fmt), reported_(false) - { - } - - ~basic_stopwatch_reporter() BOOST_NOEXCEPT - { - if (!reported()) - { - this->report(); - } - } - - inline void report() BOOST_NOEXCEPT - { - formatter_(*this); - reported_ = true; - } -// inline void report(system::error_code & ec) -// { -// formatter_(*this, ec); -// reported_ = true; -// } - - bool reported() const - { - return reported_; - } - - formatter_type& format() - { - return formatter_; - } - - protected: - formatter_type formatter_; - bool reported_; - - basic_stopwatch_reporter(const basic_stopwatch_reporter&); // = delete; - basic_stopwatch_reporter& operator=(const basic_stopwatch_reporter&); // = delete; - }; - - - template<class Stopwatch, - class Formatter = typename basic_stopwatch_reporter_default_formatter<char, Stopwatch>::type> - class stopwatch_reporter; - - template<class Stopwatch, class Formatter> - struct basic_stopwatch_reporter_default_formatter<char, stopwatch_reporter<Stopwatch, Formatter> > - { - typedef Formatter type; - }; - - template<class Stopwatch, class Formatter> - class stopwatch_reporter: public basic_stopwatch_reporter<char, Stopwatch, - Formatter> - { - typedef basic_stopwatch_reporter<char, Stopwatch, Formatter> base_type; - public: - typedef typename Stopwatch::clock clock; - typedef Stopwatch stopwatch_type; - typedef Formatter formatter_type; - - stopwatch_reporter() - { - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit stopwatch_reporter(system::error_code & ec) : - base_type(ec) - { - } -#endif - explicit stopwatch_reporter( - const dont_start_t& tag - ) BOOST_NOEXCEPT : - base_type(tag) - { - } - - explicit stopwatch_reporter(formatter_type const& fmt) : - base_type(fmt) - { - } - - explicit stopwatch_reporter(const typename Formatter::char_type* fmt) : - base_type(fmt) - { - } - explicit stopwatch_reporter(typename Formatter::string_type const& fmt) : - base_type(fmt) - { - } - typedef stopwatch_runner<stopwatch_reporter<Stopwatch, Formatter> > - scoped_run; - typedef stopwatch_stopper<stopwatch_reporter<Stopwatch, Formatter> > - scoped_stop; - typedef stopwatch_suspender<stopwatch_reporter<Stopwatch, Formatter> > - scoped_suspend; - typedef stopwatch_resumer<stopwatch_reporter<Stopwatch, Formatter> > - scoped_resume; - - protected: - - stopwatch_reporter(const stopwatch_reporter&); // = delete; - stopwatch_reporter& operator=(const stopwatch_reporter&); // = delete; - }; - - template<class Stopwatch, - class Formatter = typename basic_stopwatch_reporter_default_formatter<wchar_t, - Stopwatch>::type> - class wstopwatch_reporter; - - template<class Stopwatch, class Formatter> - struct basic_stopwatch_reporter_default_formatter<wchar_t, wstopwatch_reporter<Stopwatch, Formatter> > - { - typedef Formatter type; - }; - - template<class Stopwatch, class Formatter> - class wstopwatch_reporter: public basic_stopwatch_reporter<wchar_t, Stopwatch, Formatter> - { - typedef basic_stopwatch_reporter<wchar_t, Stopwatch, Formatter> base_type; - public: - typedef typename Stopwatch::clock clock; - typedef Stopwatch stopwatch_type; - typedef Formatter formatter_type; - - wstopwatch_reporter() : - base_type() - { - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit wstopwatch_reporter(system::error_code & ec) : - base_type(ec) - { - } -#endif - explicit wstopwatch_reporter( - const dont_start_t& tag - ) BOOST_NOEXCEPT : - base_type(tag) - { - } - - explicit wstopwatch_reporter(formatter_type const& fmt) : - base_type(fmt) - { - } - explicit wstopwatch_reporter(const typename Formatter::char_type* fmt) : - base_type(fmt) - { - } - explicit wstopwatch_reporter(typename Formatter::string_type const& fmt) : - base_type(fmt) - { - } - typedef stopwatch_runner<wstopwatch_reporter<Stopwatch, Formatter> > - scoped_run; - typedef stopwatch_stopper<wstopwatch_reporter<Stopwatch, Formatter> > - scoped_stop; - typedef stopwatch_suspender<wstopwatch_reporter<Stopwatch, Formatter> > - scoped_suspend; - typedef stopwatch_resumer<wstopwatch_reporter<Stopwatch, Formatter> > - scoped_resume; - - protected: - - wstopwatch_reporter(const wstopwatch_reporter&); // = delete; - wstopwatch_reporter& operator=(const wstopwatch_reporter&); // = delete; - }; - - } // namespace chrono -} // namespace boost - - -#if !defined(BOOST_ENABLE_WARNINGS) && !defined(BOOST_CHRONO_ENABLE_WARNINGS) -#if defined __SUNPRO_CC -#pragma enable_warn -#elif defined _MSC_VER -#pragma warning(pop) -#endif -#endif - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp deleted file mode 100644 index bd81214eb2..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// boost/chrono/stopwatches/stopwatch_reporter_default_formatter.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_DEFAULT_FORMATTER_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_DEFAULT_FORMATTER_HPP - -#include <boost/chrono/stopwatches/reporters/clock_default_formatter.hpp> - -namespace boost -{ - namespace chrono - { - - template <class CharT, class Stopwatch> - struct basic_stopwatch_reporter_default_formatter - : basic_clock_default_formatter<CharT, typename Stopwatch::clock> - { - }; - - } // namespace chrono -} // namespace boost - - - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp deleted file mode 100644 index 2252c8049a..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/strict_stopclock.hpp +++ /dev/null @@ -1,143 +0,0 @@ -// boost/chrono/stopwatches/reporters/strict_stopclock.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_STRICT_STOPCLOCK_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_STRICT_STOPCLOCK_HPP - -#include <boost/chrono/config.hpp> - -#if !defined(BOOST_ENABLE_WARNINGS) && !defined(BOOST_CHRONO_ENABLE_WARNINGS) -#if defined __GNUC__ -#pragma GCC system_header -#elif defined __SUNPRO_CC -#pragma disable_warn -#elif defined _MSC_VER -#pragma warning(push, 1) -#endif -#endif - -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter.hpp> -#include <boost/chrono/stopwatches/strict_stopwatch.hpp> -#include <boost/chrono/chrono.hpp> -#include <boost/chrono/detail/system.hpp> -#include <boost/cstdint.hpp> -#include <cassert> - -namespace boost -{ - namespace chrono - { - - template<class CharT, typename Clock, class Formatter> - class basic_strict_stopclock: public basic_stopwatch_reporter<CharT, strict_stopwatch<Clock>, Formatter> - { - public: - typedef basic_stopwatch_reporter<CharT, strict_stopwatch<Clock>, Formatter> base_type; - typedef Clock clock; - typedef strict_stopwatch<Clock> stopwatch; - typedef Formatter formatter_type; - - basic_strict_stopclock() - { - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit basic_strict_stopclock(system::error_code & ec) : - base_type(ec) - { - } -#endif - - explicit basic_strict_stopclock(formatter_type const& fmt) : - base_type(fmt) - { - } - - explicit basic_strict_stopclock(const typename Formatter::char_type* fmt) : - base_type(fmt) - { - } - explicit basic_strict_stopclock(typename Formatter::string_type const& fmt) : - base_type(fmt) - { - } - - protected: - - basic_strict_stopclock(const basic_strict_stopclock&); // = delete; - basic_strict_stopclock& operator=(const basic_strict_stopclock&); // = delete; - }; - - - template<typename Clock=high_resolution_clock, - class Formatter = typename basic_stopwatch_reporter_default_formatter<char, strict_stopwatch<Clock> >::type> - class strict_stopclock; - - template<class Stopwatch, class Formatter> - struct basic_stopwatch_reporter_default_formatter<char, strict_stopclock<Stopwatch, Formatter> > - { - typedef Formatter type; - }; - - template<typename Clock, class Formatter> - class strict_stopclock: public basic_strict_stopclock<char, Clock, Formatter> - { - typedef basic_strict_stopclock<char, Clock, Formatter> base_type; - public: - typedef Clock clock; - typedef typename base_type::stopwatch stopwatch; - typedef Formatter formatter_type; - - strict_stopclock() - { - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit strict_stopclock(system::error_code & ec) : - base_type(ec) - { - } -#endif - - explicit strict_stopclock(formatter_type const& fmt) : - base_type(fmt) - { - } - - explicit strict_stopclock(const typename Formatter::char_type* fmt) : - base_type(fmt) - { - } - explicit strict_stopclock(typename Formatter::string_type const& fmt) : - base_type(fmt) - { - } - - protected: - - strict_stopclock(const strict_stopclock&); // = delete; - strict_stopclock& operator=(const strict_stopclock&); // = delete; - }; - - - - } // namespace chrono -} // namespace boost - - -#if !defined(BOOST_ENABLE_WARNINGS) && !defined(BOOST_CHRONO_ENABLE_WARNINGS) -#if defined __SUNPRO_CC -#pragma enable_warn -#elif defined _MSC_VER -#pragma warning(pop) -#endif -#endif - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp deleted file mode 100644 index ed2a384412..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/system_default_formatter.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// boost/chrono/stopwatches/reporters/system_default_formatter.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_SYSTEM_DEFAULT_FORMATTER_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_SYSTEM_DEFAULT_FORMATTER_HPP - -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/clock_default_formatter.hpp> -#include <boost/chrono/stopwatches/formatters/elapsed_formatter.hpp> -#include <boost/chrono/system_clocks.hpp> - - - -#endif - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp deleted file mode 100644 index 40b0eb7d14..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/reporters/thread_default_formatter.hpp +++ /dev/null @@ -1,26 +0,0 @@ -// boost/chrono/stopwatches/reporters/thread_default_formatter.hpp -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or -// copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_REPORTERS_THREAD_DEFAULT_FORMATTER_HPP -#define BOOST_CHRONO_STOPWATCHES_REPORTERS_THREAD_DEFAULT_FORMATTER_HPP - -#include <boost/chrono/config.hpp> - -#if defined(BOOST_CHRONO_HAS_THREAD_CLOCK) - -#include <boost/chrono/stopwatches/reporters/stopwatch_reporter_default_formatter.hpp> -#include <boost/chrono/stopwatches/reporters/clock_default_formatter.hpp> -#include <boost/chrono/stopwatches/formatters/elapsed_formatter.hpp> -#include <boost/chrono/thread_clock.hpp> - - - -#endif - -#endif - - diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp deleted file mode 100644 index f36acbb714..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/simple_stopwatch.hpp +++ /dev/null @@ -1,110 +0,0 @@ -// boost/chrono/stopwatches/simple_stopwatch.hpp ------------------------------------------------------------// -// Copyright 2011 Vicente J. Botet Escriba -// Copyright (c) Microsoft Corporation 2014 -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_SIMPLE_STOPWATCH__HPP -#define BOOST_CHRONO_STOPWATCHES_SIMPLE_STOPWATCH__HPP - -#include <boost/chrono/config.hpp> - -#include <boost/chrono/chrono.hpp> -#include <boost/system/error_code.hpp> -#include <boost/chrono/thread_clock.hpp> -#include <boost/chrono/process_cpu_clocks.hpp> -#include <utility> - -namespace boost -{ - namespace chrono - { - - /** - * This class provides the simpler stopwatch which is just able to give the elapsed time since its construction. - */ - template<typename Clock=high_resolution_clock> - class simple_stopwatch - { - public: - typedef Clock clock; - typedef typename Clock::duration duration; - typedef typename Clock::time_point time_point; - typedef typename Clock::rep rep; - typedef typename Clock::period period; - BOOST_STATIC_CONSTEXPR bool is_steady = Clock::is_steady; - - - simple_stopwatch() : - start_(clock::now()) - { - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit simple_stopwatch(system::error_code & ec) : - start_(duration::zero()) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec)) - { - if (ec) - { - return; - } - } - start_ = tmp; - } -#endif - - ~simple_stopwatch() BOOST_NOEXCEPT - { - } - - duration elapsed() - { - return clock::now() - start_; - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - duration elapsed(system::error_code & ec) BOOST_NOEXCEPT - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec)) - { - if (ec) - return duration::zero(); - } - return tmp - start_; - } -#endif - - private: - time_point start_; - simple_stopwatch(const simple_stopwatch&); // = delete; - simple_stopwatch& operator=(const simple_stopwatch&); // = delete; - }; - - typedef simple_stopwatch<system_clock> system_simple_stopwatch; -#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY - typedef simple_stopwatch<steady_clock> steady_simple_stopwatch; -#endif - typedef simple_stopwatch<high_resolution_clock> high_resolution_simple_stopwatch; - -#if defined(BOOST_CHRONO_HAS_PROCESS_CLOCKS) - typedef simple_stopwatch<process_real_cpu_clock> process_real_cpu_simple_stopwatch; -#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP - typedef simple_stopwatch<process_user_cpu_clock> process_user_cpu_simple_stopwatch; - typedef simple_stopwatch<process_system_cpu_clock> process_system_cpu_simple_stopwatch; - typedef simple_stopwatch<process_cpu_clock> process_cpu_simple_stopwatch; -#endif -#endif - -#if defined(BOOST_CHRONO_HAS_THREAD_CLOCK) - typedef simple_stopwatch<thread_clock> thread_simple_stopwatch; -#endif - - - } // namespace chrono -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp deleted file mode 100644 index afa00806bf..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch.hpp +++ /dev/null @@ -1,444 +0,0 @@ -// boost/chrono/stopwatches/stopwatch.hpp -----------------------------// - -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_STOPWATCH_HPP -#define BOOST_CHRONO_STOPWATCHES_STOPWATCH_HPP - - -#include <boost/chrono/config.hpp> - -#include <boost/chrono/stopwatches/stopwatch_scoped.hpp> -#include <boost/chrono/stopwatches/collectors/no_memory.hpp> // default laps_collector -#include <boost/chrono/stopwatches/dont_start.hpp> -#include <boost/chrono/system_clocks.hpp> // default_clock -#include <boost/chrono/detail/system.hpp> -#include <utility> - -namespace boost -{ - namespace chrono - { - - - /** - * A stopwatch is a model of @c Stopwatch taking as parameters the @c Clock and the @c LapsCollector. - * - * The main difference respect to a @c simple_stopwatch is that the user can stop it. - * Each sequence of start-stop results in a new elapsed duration sample that is provided to the LapsCollector. - * - * It is up to the LapsCollector to do whatever it wants with each sample. - * A LapCollector must define a store(duration const&) and a clear() functions. - * - * The library provides LapsCollectors that forget the sample, store the - * last one, cummulates the samples in an accumulator set or store them in a container. - * For simplicity the default LapCollector is the one that forget the samples. - * - * Even if it is preferable to use process or thread wide clocks, - * the default of the Clock parameter is high_resolution_clock, - * as it is the single one ensured on all platforms. - */ - template<typename Clock=high_resolution_clock, typename LapsCollector=no_memory<typename Clock::duration> > - class stopwatch - { - public: - typedef LapsCollector laps_collector; - typedef Clock clock; - typedef typename Clock::duration duration; - typedef typename Clock::time_point time_point; - typedef typename Clock::rep rep; - typedef typename Clock::period period; - BOOST_STATIC_CONSTEXPR bool is_steady = Clock::is_steady; - - /** - * Default constructor. - * - * Effects: Starts the stopwatch. - * Post-conditions: is_running(). - */ - stopwatch() - : - start_(duration::zero()), - running_(false), - laps_collector_() - { - start(); - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Default constructor. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: Starts the stopwatch. - * Post-conditions: is_running() if no error occur. - */ - explicit stopwatch( - system::error_code & ec - ) : - start_(duration::zero()), - running_(false), - laps_collector_() - { - start(ec); - } -#endif - /** - * Not starting constructor. - * - * Effects: Don't starts the stopwatch. - * Post-conditions: ! is_running() if no error occur. - */ - explicit stopwatch( - const dont_start_t& - ) : - start_(duration::zero()), - running_(false), - laps_collector_() - { - } - - /** - * Starting constructor from a LapsCollector instance. - * - * Effects: Copies the LapsCollector. Starts the stopwatch. - * Post-conditions: is_running() if no error occur. - * - * Remark: The LapsCollector is copied and owned by the stopwatch. - */ - explicit stopwatch( - laps_collector const& acc - ) : - start_(duration::zero()), - running_(false), - laps_collector_(acc) - { - start(); - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Starting constructor from a LapsCollector instance. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: Copies the LapsCollector. Starts the stopwatch. - * Post-conditions: is_running() if no error occur. - * - * Remark: The LapsCollector is copied and owned by the stopwatch. - */ - explicit stopwatch( - laps_collector const& acc, - system::error_code & ec - ) : - start_(duration::zero()), - running_(false), - laps_collector_(acc) - { - start(ec); - } -#endif - - /** - * Not starting constructor from a LapsCollector instance. - * - * Effects: Copies the LapsCollector. Don't starts the stopwatch. - * Post-conditions: ! is_running() if no error occur. - * - * Remark: The LapsCollector is copied and owned by the stopwatch. - */ - stopwatch( - laps_collector const& acc, - const dont_start_t& - ) : - start_(duration::zero()), - running_(false), - laps_collector_(acc) - { - } - - /** - * Destructor. - * - * Effects: Do nothing. - */ - ~stopwatch() BOOST_NOEXCEPT - { - } - - /** - * Restart the stopwatch. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: As if stop(); start() were called, but ensuring that the start time is the same as the stop time. - * - * Post-conditions: is_running() if no error occur. - */ - void restart() - { - time_point tmp = clock::now(); - - if (is_running()) - { - laps_collector_.store(tmp - start_); - } - else - { - running_ = true; - } - start_ = tmp; - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Restart the stopwatch. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: As if stop(); start() were called, but ensuring that the start time is the same as the stop time. - * - * Post-conditions: is_running() if no error occur. - */ - void restart( - system::error_code & ec - ) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - if (is_running()) - { - laps_collector_.store(tmp - start_); - } - else - { - running_ = true; - } - start_ = tmp; - } -#endif - - /** - * Start the stopwatch. - * - * Effects: Memorize the current time. - * - * Post-conditions: is_running(). - */ - void start() - { - start_ = clock::now(); - running_ = true; - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Start the stopwatch. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: Memorize the current time. - * - * Post-conditions: @c is_running() if no error occur. - */ - void start( - system::error_code & ec - ) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - start_ = tmp; - running_ = true; - } -#endif - - /** - * Start the stopwatch. - * - * Requires: is_running(). - * Effects: Stores the elapsed time since start time into the LapCollector. - * - * Throws: Any exception that the LapCollector can throw. - * - * Post-conditions: !is_running() if no error occur. - */ - void stop() - { - if (is_running()) - { - laps_collector_.store(clock::now() - start_); - start_ = time_point(duration::zero()); - running_ = false; - } - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Start the stopwatch. - * - * Requires: is_running(). - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * Effects: Stores the elapsed time since start time into the LapCollector if no internal error occurs. - * - * Throws: Any exception that the LapCollector can Throw. - * - * Post-conditions: !is_running() if no error occur. - */ - void stop( - system::error_code & ec - ) - { - if (is_running()) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - laps_collector_.store(tmp - start_); - start_ = time_point(duration::zero()); - running_ = false; - } - } -#endif - - /** - * States if the Stopwatch is running. - */ - bool is_running() const { - return running_; - } - - /** - * Elapsed time getter for the current lap. - * - * Returns: the elapsed time since the last start if no internal error occur. - * - */ - duration elapsed_current_lap() const - { - if (is_running()) - { - return clock::now() - start_; - } - else - { - return duration::zero(); - } - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Elapsed time getter for the current lap. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * - * Returns: the elapsed time since the start if no internal error occur. - * - */ - duration elapsed_current_lap( - system::error_code & ec - ) const - { - if (is_running()) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return duration::zero(); - - return tmp - start_; - } else - { - return duration::zero(); - } - } -#endif - - /** - * Elapsed time getter. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * - * Returns: the elapsed time since the start if no internal error occur. - * - */ - duration elapsed() const - { - return laps_collector_.elapsed()+elapsed_current_lap(); - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - /** - * Elapsed time getter. - * - * Effects: Assign the error code if any internal error occur while retrieving the current time. - * - * Returns: the elapsed time since the start if no internal error occur. - * - */ - duration elapsed( - system::error_code & ec - ) const - { - duration tmp = elapsed_current_lap(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return duration::zero(); - return laps_collector_.elapsed() + tmp; - } -#endif - /** - * Elapsed time for the last lap. - * - * Returns: the elapsed time of the last lap. - * - */ - - duration last() const - { - return laps_collector_.last(); - } - /** - * Resets the stopwatch. - * - * Effects: Resets the LapCollector. - * - * Post-conditions: !is_running() if no error occur. - * - */ - void reset() - { - - laps_collector_.reset(); - running_ = false; - start_ = time_point(duration::zero()); - } - - /** - * LapsCollector getter. - * - * Returns: the LapCollector instance. - * - */ - laps_collector const& get_laps_collector() BOOST_NOEXCEPT - { - return laps_collector_; - } - - /** - * Useful typedef for scoped run - */ - typedef stopwatch_runner<stopwatch<Clock, LapsCollector> > - scoped_run; - /** - * Useful typedef for scoped stop - */ - typedef stopwatch_stopper<stopwatch<Clock, LapsCollector> > - scoped_stop; - - private: - time_point start_; - bool running_; - laps_collector laps_collector_; - }; - - } // namespace chrono -} // namespace boost - -#endif // header diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp deleted file mode 100644 index 836d0a9552..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/stopwatch_scoped.hpp +++ /dev/null @@ -1,142 +0,0 @@ -// boost/chrono/stopwatches/stopwatch_scoped.hpp ------------------------------------------------------------// -// Copyright 2009-2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_STOPWATCH_SCOPED_HPP -#define BOOST_CHRONO_STOPWATCHES_STOPWATCH_SCOPED_HPP - -#include <boost/chrono/config.hpp> - -#include <boost/chrono/chrono.hpp> -#include <boost/chrono/detail/system.hpp> - -namespace boost -{ - namespace chrono - { - - //--------------------------------------------------------------------------------------// - template<class Stopwatch> - class stopwatch_runner - { - public: - typedef Stopwatch stopwatch; - stopwatch_runner(stopwatch & a) : - stopwatch_(a) - { - stopwatch_.start(); - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - stopwatch_runner(stopwatch & a, system::error_code & ec) : - stopwatch_(a) - { - stopwatch_.start(ec); - } -#endif - ~stopwatch_runner() - { - stopwatch_.stop(); - } - private: - stopwatch& stopwatch_; - stopwatch_runner();//= delete; - stopwatch_runner(const stopwatch_runner&); // = delete; - stopwatch_runner& operator=(const stopwatch_runner&); // = delete; - - }; - - //--------------------------------------------------------------------------------------// - template<class Stopwatch> - class stopwatch_stopper - { - public: - typedef Stopwatch stopwatch; - stopwatch_stopper(stopwatch & a) : - stopwatch_(a) - { - stopwatch_.stop(); - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - stopwatch_stopper(stopwatch & a, system::error_code & ec) : - stopwatch_(a) - { - stopwatch_.stop(ec); - } -#endif - ~stopwatch_stopper() - { - stopwatch_.start(); - } - private: - stopwatch& stopwatch_; - stopwatch_stopper();//= delete; - stopwatch_stopper(const stopwatch_stopper&); // = delete; - stopwatch_stopper& operator=(const stopwatch_stopper&); // = delete; - - }; - - //--------------------------------------------------------------------------------------// - template<class Stopwatch> - class stopwatch_suspender - { - public: - typedef Stopwatch stopwatch; - stopwatch_suspender(stopwatch & a) : - stopwatch_(a) - { - stopwatch_.suspend(); - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - stopwatch_suspender(stopwatch & a, system::error_code & ec) : - stopwatch_(a) - { - stopwatch_.suspend(ec); - } -#endif - - ~stopwatch_suspender() - { - stopwatch_.resume(); - } - private: - stopwatch& stopwatch_; - stopwatch_suspender(); // = delete; - stopwatch_suspender(const stopwatch_suspender&); // = delete; - stopwatch_suspender& operator=(const stopwatch_suspender&); // = delete; - }; - - //--------------------------------------------------------------------------------------// - template<class Stopwatch> - class stopwatch_resumer - { - public: - typedef Stopwatch stopwatch; - stopwatch_resumer(stopwatch & a) : - stopwatch_(a) - { - stopwatch_.resume(); - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - stopwatch_resumer(stopwatch & a, system::error_code & ec) : - stopwatch_(a) - { - stopwatch_.resume(ec); - } -#endif - ~stopwatch_resumer() - { - stopwatch_.suspend(); - } - private: - stopwatch& stopwatch_; - stopwatch_resumer(); // = delete; - stopwatch_resumer(const stopwatch_resumer&); // = delete; - stopwatch_resumer& operator=(const stopwatch_resumer&); // = delete; - }; - - } // namespace chrono -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp deleted file mode 100644 index ceb0be66da..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/strict_stopwatch.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// boost/chrono/stopwatches/strict_stopwatch.hpp ------------------------------------------------------------// -// Copyright 2011 Vicente J. Botet Escriba -// Copyright (c) Microsoft Corporation 2014 -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_STRICT_STOPWATCH__HPP -#define BOOST_CHRONO_STOPWATCHES_STRICT_STOPWATCH__HPP - -#include <boost/chrono/config.hpp> - -#include <boost/chrono/chrono.hpp> -#include <boost/chrono/detail/system.hpp> -#include <boost/chrono/thread_clock.hpp> -#include <boost/chrono/process_cpu_clocks.hpp> -#include <utility> - -namespace boost -{ - namespace chrono - { - - /** - * This class provides the simpler stopwatch which is just able to give the elapsed time since its construction. - */ - template<typename Clock=high_resolution_clock> - class strict_stopwatch - { - public: - typedef Clock clock; - typedef typename Clock::duration duration; - typedef typename Clock::time_point time_point; - typedef typename Clock::rep rep; - typedef typename Clock::period period; - BOOST_STATIC_CONSTEXPR bool is_steady = Clock::is_steady; - - - strict_stopwatch() : - start_(clock::now()) - { - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit strict_stopwatch(system::error_code & ec) : - start_(duration::zero()) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec)) - { - if (ec) - { - return; - } - } - start_ = tmp; - } -#endif - - ~strict_stopwatch() BOOST_NOEXCEPT - { - } - - duration elapsed() - { - return clock::now() - start_; - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - duration elapsed(system::error_code & ec) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec)) - { - if (ec) - return duration::zero(); - } - return tmp - start_; - } -#endif - /** - * States if the Stopwatch is running. - */ - bool is_running() const { - return true; - } - private: - time_point start_; - strict_stopwatch(const strict_stopwatch&); // = delete; - strict_stopwatch& operator=(const strict_stopwatch&); // = delete; - }; - - typedef strict_stopwatch<system_clock> system_strict_stopwatch; -#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY - typedef strict_stopwatch<steady_clock> steady_strict_stopwatch; -#endif - typedef strict_stopwatch<high_resolution_clock> high_resolution_strict_stopwatch; - -#if defined(BOOST_CHRONO_HAS_PROCESS_CLOCKS) - typedef strict_stopwatch<process_real_cpu_clock> process_real_cpu_strict_stopwatch; -#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP - typedef strict_stopwatch<process_user_cpu_clock> process_user_cpu_strict_stopwatch; - typedef strict_stopwatch<process_system_cpu_clock> process_system_cpu_strict_stopwatch; - typedef strict_stopwatch<process_cpu_clock> process_cpu_strict_stopwatch; -#endif -#endif - -#if defined(BOOST_CHRONO_HAS_THREAD_CLOCK) - typedef strict_stopwatch<thread_clock> thread_strict_stopwatch; -#endif - - - } // namespace chrono -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp b/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp deleted file mode 100644 index 5af8e948f6..0000000000 --- a/contrib/restricted/boost/libs/chrono/stopwatches/include/boost/chrono/stopwatches/suspendable_stopwatch.hpp +++ /dev/null @@ -1,334 +0,0 @@ -// boost/chrono/stopwatches/suspendable_stopwatch.hpp ------------------------------------------------------------// -// Copyright 2011 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org/libs/libs/chrono/stopwatches for documentation. - -#ifndef BOOST_CHRONO_STOPWATCHES_SUSPENDABLE_STOPWATCH__HPP -#define BOOST_CHRONO_STOPWATCHES_SUSPENDABLE_STOPWATCH__HPP - -#include <boost/chrono/config.hpp> - -#include <boost/chrono/stopwatches/stopwatch_scoped.hpp> -#include <boost/chrono/stopwatches/collectors/no_memory.hpp> // default laps_collector -#include <boost/chrono/stopwatches/dont_start.hpp> -#include <boost/chrono/detail/system.hpp> -#include <boost/chrono/system_clocks.hpp> -#include <utility> - -namespace boost -{ - namespace chrono - { - - template<typename Clock=high_resolution_clock, typename LapsCollector=no_memory<typename Clock::duration> > - class suspendable_stopwatch - { - public: - typedef LapsCollector laps_collector; - typedef Clock clock; - typedef typename Clock::duration duration; - typedef typename Clock::time_point time_point; - typedef typename Clock::rep rep; - typedef typename Clock::period period; - BOOST_STATIC_CONSTEXPR bool is_steady = Clock::is_steady; - - suspendable_stopwatch() : - start_(duration::zero()), - running_(false), - suspended_(false), - laps_collector_(), - partial_(duration::zero()) - { - start(); - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit suspendable_stopwatch( - system::error_code & ec - ) : - start_(duration::zero()), - running_(false), - suspended_(false), - laps_collector_(), - partial_(duration::zero()) - { - start(ec); - } -#endif - - explicit suspendable_stopwatch( - const dont_start_t& - ) : - start_(duration::zero()), - running_(false), - suspended_(false), - laps_collector_(), - partial_(duration::zero()) - { - } - - explicit suspendable_stopwatch( - laps_collector const& acc - ) : - start_(duration::zero()), - running_(false), - suspended_(false), - laps_collector_(acc), - partial_(duration::zero()) - { - start(); - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - explicit suspendable_stopwatch( - laps_collector const& acc, - system::error_code & ec - ) : - start_(duration::zero()), - running_(false), - suspended_(false), - laps_collector_(acc), - partial_(duration::zero()) - { - start(ec); - } -#endif - - suspendable_stopwatch( - laps_collector const& acc, - const dont_start_t& - ) : - start_(duration::zero()), - running_(false), - suspended_(false), - laps_collector_(acc), - partial_(duration::zero()) - { - } - - ~suspendable_stopwatch() - { - stop(); - } - - void restart() - { - time_point tmp = clock::now(); - - if (running_) - { - partial_ += tmp - start_; - laps_collector_.store(partial_); - partial_ = duration::zero(); - } - else - { - running_ = true; - } - start_ = tmp; - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - void restart(system::error_code & ec) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - if (running_) - { - partial_ += tmp - start_; - laps_collector_.store(partial_); - partial_ = duration::zero(); - } - else - { - running_ = true; - } - start_ = tmp; - } -#endif - - void start() - { - start_ = clock::now();; - partial_ = duration::zero(); - running_ = true; - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - void start(system::error_code & ec) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - partial_ = duration::zero(); - start_ = tmp; - running_ = true; - } -#endif - - void stop() - { - partial_ += clock::now() - start_; - laps_collector_.store(partial_); - start_ = time_point(duration::zero()); - running_ = false; - suspended_ = false; - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - void stop(system::error_code & ec) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - partial_ += tmp - start_; - laps_collector_.store(partial_); - start_ = time_point(duration::zero()); - running_ = false; - suspended_ = false; - } -#endif - - void suspend() - { - if (is_running()) - { - if (!suspended_) - { - partial_ += clock::now() - start_; - suspended_ = true; - } - } - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - void suspend(system::error_code & ec) - { - if (is_running()) - { - if (!suspended_) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - partial_ += tmp - start_; - suspended_ = true; - } - else - { - ec.clear(); - } - } else - { - ec.clear(); - } - } -#endif - - void resume() - { - if (suspended_) - { - start_ = clock::now(); - suspended_ = false; - } - } - -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - void resume(system::error_code & ec) - { - if (suspended_) - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return; - - start_ = tmp; - suspended_ = false; - } else - { - ec.clear(); - } - } -#endif - - bool is_running() const { - return running_; - } - bool is_suspended() const { - return suspended_; - } - - duration elapsed() const - { - if (is_running()) - { - if (suspended_) { - return partial_; - } - else - { - return partial_ + clock::now() - start_; - } - } else - { - return duration::zero(); - } - } -#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING - duration elapsed(system::error_code & ec) const - { - if (is_running()) - { - if (suspended_) { - return partial_; - } - else - { - time_point tmp = clock::now(ec); - if (!BOOST_CHRONO_IS_THROWS(ec) && ec) return duration::zero(); - - return partial_ + tmp - start_; - } - } else - { - return duration::zero(); - } - } -#endif - - void reset( - ) - { - laps_collector_.reset(); - running_ = false; - suspended_ = false; - partial_ = duration::zero(); - start_ = time_point(duration::zero()); - } - - laps_collector const& get_laps_collector() - { - return laps_collector_; - } - - - typedef stopwatch_runner<suspendable_stopwatch<Clock, LapsCollector> > - scoped_run; - typedef stopwatch_stopper<suspendable_stopwatch<Clock, LapsCollector> > - scoped_stop; - typedef stopwatch_suspender<suspendable_stopwatch<Clock, LapsCollector> > - scoped_suspend; - typedef stopwatch_resumer<suspendable_stopwatch<Clock, LapsCollector> > - scoped_resume; - private: - time_point start_; - bool running_; - bool suspended_; - laps_collector laps_collector_; - duration partial_; - }; - - } // namespace chrono -} // namespace boost - -#endif diff --git a/contrib/restricted/boost/libs/container/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/container/.yandex_meta/licenses.list.txt deleted file mode 100644 index 86ed39445e..0000000000 --- a/contrib/restricted/boost/libs/container/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,65 +0,0 @@ -====================BSL-1.0==================== -// (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================CC0-1.0==================== - Doug Lea and released to the public domain, as explained at - http://creativecommons.org/publicdomain/zero/1.0/ Send questions, - - -====================COPYRIGHT==================== -// (C) Copyright Ion Gaztanaga 2007-2015. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// (C) Copyright Ion Gaztanaga 2015-2015. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/context/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/context/.yandex_meta/licenses.list.txt deleted file mode 100644 index 79fa1e073c..0000000000 --- a/contrib/restricted/boost/libs/context/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,91 +0,0 @@ -====================BSL-1.0==================== - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== - Copyright Oliver Kowalke 2009. - Copyright Thomas Sailer 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== - Copyright Edward Nevill + Oliver Kowalke 2015 - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright Oliver Kowalke 2014. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright Oliver Kowalke 2017. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S deleted file mode 100644 index 1b8ce9eddb..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S +++ /dev/null @@ -1,113 +0,0 @@ -/* - Copyright Edward Nevill + Oliver Kowalke 2015 - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | d8 | d9 | d10 | d11 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | d12 | d13 | d14 | d15 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * | x19 | x20 | x21 | x22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | x23 | x24 | x25 | x26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * - * ------------------------------------------------- * - * | x27 | x28 | FP | LR | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | | | * - * ------------------------------------------------- * - * | 0xa0| 0xa4| 0xa8| 0xac| | | * - * ------------------------------------------------- * - * | PC | align | | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.align 2 -.global jump_fcontext -.type jump_fcontext, %function -jump_fcontext: - # prepare stack for GP + FPU - sub sp, sp, #0xb0 - - # save d8 - d15 - stp d8, d9, [sp, #0x00] - stp d10, d11, [sp, #0x10] - stp d12, d13, [sp, #0x20] - stp d14, d15, [sp, #0x30] - - # save x19-x30 - stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70] - stp x27, x28, [sp, #0x80] - stp x29, x30, [sp, #0x90] - - # save LR as PC - str x30, [sp, #0xa0] - - # store RSP (pointing to context-data) in X0 - mov x4, sp - - # restore RSP (pointing to context-data) from X1 - mov sp, x0 - - # load d8 - d15 - ldp d8, d9, [sp, #0x00] - ldp d10, d11, [sp, #0x10] - ldp d12, d13, [sp, #0x20] - ldp d14, d15, [sp, #0x30] - - # load x19-x30 - ldp x19, x20, [sp, #0x40] - ldp x21, x22, [sp, #0x50] - ldp x23, x24, [sp, #0x60] - ldp x25, x26, [sp, #0x70] - ldp x27, x28, [sp, #0x80] - ldp x29, x30, [sp, #0x90] - - # return transfer_t from jump - # pass transfer_t as first arg in context function - # X0 == FCTX, X1 == DATA - mov x0, x4 - - # load pc - ldr x4, [sp, #0xa0] - - # restore stack from GP + FPU - add sp, sp, #0xb0 - - ret x4 -.size jump_fcontext,.-jump_fcontext -# Mark that we don't need executable stack. -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_arm64_aapcs_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_arm64_aapcs_macho_gas.S deleted file mode 100644 index 31738f7453..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_arm64_aapcs_macho_gas.S +++ /dev/null @@ -1,109 +0,0 @@ -/* - Copyright Edward Nevill + Oliver Kowalke 2015 - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | d8 | d9 | d10 | d11 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | d12 | d13 | d14 | d15 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * | x19 | x20 | x21 | x22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | x23 | x24 | x25 | x26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * - * ------------------------------------------------- * - * | x27 | x28 | FP | LR | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | | | * - * ------------------------------------------------- * - * | 0xa0| 0xa4| 0xa8| 0xac| | | * - * ------------------------------------------------- * - * | PC | align | | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl _jump_fcontext -.balign 16 -_jump_fcontext: - ; prepare stack for GP + FPU - sub sp, sp, #0xb0 - - ; save d8 - d15 - stp d8, d9, [sp, #0x00] - stp d10, d11, [sp, #0x10] - stp d12, d13, [sp, #0x20] - stp d14, d15, [sp, #0x30] - - ; save x19-x30 - stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70] - stp x27, x28, [sp, #0x80] - stp fp, lr, [sp, #0x90] - - ; save LR as PC - str lr, [sp, #0xa0] - - ; store RSP (pointing to context-data) in X0 - mov x4, sp - - ; restore RSP (pointing to context-data) from X1 - mov sp, x0 - - ; load d8 - d15 - ldp d8, d9, [sp, #0x00] - ldp d10, d11, [sp, #0x10] - ldp d12, d13, [sp, #0x20] - ldp d14, d15, [sp, #0x30] - - ; load x19-x30 - ldp x19, x20, [sp, #0x40] - ldp x21, x22, [sp, #0x50] - ldp x23, x24, [sp, #0x60] - ldp x25, x26, [sp, #0x70] - ldp x27, x28, [sp, #0x80] - ldp fp, lr, [sp, #0x90] - - ; return transfer_t from jump - ; pass transfer_t as first arg in context function - ; X0 == FCTX, X1 == DATA - mov x0, x4 - - ; load pc - ldr x4, [sp, #0xa0] - - ; restore stack from GP + FPU - add sp, sp, #0xb0 - - ret x4 diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_elf_gas.S deleted file mode 100644 index d0f7fa24c6..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_elf_gas.S +++ /dev/null @@ -1,86 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | s16 | s17 | s18 | s19 | s20 | s21 | s22 | s23 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | s24 | s25 | s26 | s27 | s28 | s29 | s30 | s31 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * |hiddn| v1 | v2 | v3 | v4 | v5 | v6 | v7 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | v8 | lr | pc | FCTX| DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl jump_fcontext -.align 2 -.type jump_fcontext,%function -jump_fcontext: - @ save LR as PC - push {lr} - @ save hidden,V1-V8,LR - push {a1,v1-v8,lr} - - @ prepare stack for FPU - sub sp, sp, #64 -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) - @ save S16-S31 - vstmia sp, {d8-d15} -#endif - - @ store RSP (pointing to context-data) in A1 - mov a1, sp - - @ restore RSP (pointing to context-data) from A2 - mov sp, a2 - -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) - @ restore S16-S31 - vldmia sp, {d8-d15} -#endif - @ prepare stack for FPU - add sp, sp, #64 - - @ restore hidden,V1-V8,LR - pop {a4,v1-v8,lr} - - @ return transfer_t from jump - str a1, [a4, #0] - str a3, [a4, #4] - @ pass transfer_t as first arg in context function - @ A1 == FCTX, A2 == DATA - mov a2, a3 - - @ restore PC - pop {pc} -.size jump_fcontext,.-jump_fcontext - -@ Mark that we don't need executable stack. -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_macho_gas.S deleted file mode 100644 index 077c36409e..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_macho_gas.S +++ /dev/null @@ -1,95 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | s16 | s17 | s18 | s19 | s20 | s21 | s22 | s23 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | s24 | s25 | s26 | s27 | s28 | s29 | s30 | s31 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | sjlj|hiddn| v1 | v2 | v3 | v4 | v5 | v6 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | v7 | v8 | lr | pc | FCTX| DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl _jump_fcontext -.align 2 -_jump_fcontext: - @ save LR as PC - push {lr} - @ save hidden,V1-V8,LR - push {a1,v1-v8,lr} - - @ locate TLS to save/restore SjLj handler - mrc p15, 0, v2, c13, c0, #3 - bic v2, v2, #3 - - @ load TLS[__PTK_LIBC_DYLD_Unwind_SjLj_Key] - ldr v1, [v2, #72] - @ save SjLj handler - push {v1} - - @ prepare stack for FPU - sub sp, sp, #64 -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) - @ save S16-S31 - vstmia sp, {d8-d15} -#endif - - @ store RSP (pointing to context-data) in A1 - mov a1, sp - - @ restore RSP (pointing to context-data) from A2 - mov sp, a2 - -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) - @ restore S16-S31 - vldmia sp, {d8-d15} -#endif - @ prepare stack for FPU - add sp, sp, #64 - - @ r#estore SjLj handler - pop {v1} - @ store SjLj handler in TLS - str v1, [v2, #72] - - @ restore hidden,V1-V8,LR - pop {a4,v1-v8,lr} - - @ return transfer_t from jump - str a1, [a4, #0] - str a3, [a4, #4] - @ pass transfer_t as first arg in context function - @ A1 == FCTX, A2 == DATA - mov a2, a3 - - @ restore PC - pop {pc} diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm b/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm deleted file mode 100644 index bca923c6c7..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_pe_armasm.asm +++ /dev/null @@ -1,81 +0,0 @@ -;/* -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) -;*/ - -; ******************************************************* -; * * -; * ------------------------------------------------- * -; * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -; * ------------------------------------------------- * -; * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * -; * ------------------------------------------------- * -; * |deall|limit| base|hiddn| v1 | v2 | v3 | v4 | * -; * ------------------------------------------------- * -; * ------------------------------------------------- * -; * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -; * ------------------------------------------------- * -; * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * -; * ------------------------------------------------- * -; * | v5 | v6 | v7 | v8 | lr | pc | FCTX| DATA| * -; * ------------------------------------------------- * -; * * -; ******************************************************* - - AREA |.text|, CODE - ALIGN 4 - EXPORT jump_fcontext - -jump_fcontext PROC - ; save LR as PC - push {lr} - ; save hidden,V1-V8,LR - push {a1,v1-v8,lr} - - ; load TIB to save/restore thread size and limit. - ; we do not need preserve CPU flag and can use it's arg register - mrc p15, #0, v1, c13, c0, #2 - - ; save current stack base - ldr a5, [v1, #0x04] - push {a5} - ; save current stack limit - ldr a5, [v1, #0x08] - push {a5} - ; save current deallocation stack - ldr a5, [v1, #0xe0c] - push {a5} - - ; store RSP (pointing to context-data) in A1 - mov a1, sp - - ; restore RSP (pointing to context-data) from A2 - mov sp, a2 - - ; restore deallocation stack - pop {a5} - str a5, [v1, #0xe0c] - ; restore stack limit - pop {a5} - str a5, [v1, #0x08] - ; restore stack base - pop {a5} - str a5, [v1, #0x04] - - ; restore hidden,V1-V8,LR - pop {a4,v1-v8,lr} - - ; return transfer_t from jump - str a1, [a4, #0] - str a3, [a4, #4] - ; pass transfer_t as first arg in context function - ; A1 == FCTX, A2 == DATA - mov a2, a3 - - ; restore PC - pop {pc} - - ENDP - END diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm b/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm deleted file mode 100644 index bca923c6c7..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_arm_aapcs_pe_armasm.masm +++ /dev/null @@ -1,81 +0,0 @@ -;/* -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) -;*/ - -; ******************************************************* -; * * -; * ------------------------------------------------- * -; * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -; * ------------------------------------------------- * -; * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * -; * ------------------------------------------------- * -; * |deall|limit| base|hiddn| v1 | v2 | v3 | v4 | * -; * ------------------------------------------------- * -; * ------------------------------------------------- * -; * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -; * ------------------------------------------------- * -; * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * -; * ------------------------------------------------- * -; * | v5 | v6 | v7 | v8 | lr | pc | FCTX| DATA| * -; * ------------------------------------------------- * -; * * -; ******************************************************* - - AREA |.text|, CODE - ALIGN 4 - EXPORT jump_fcontext - -jump_fcontext PROC - ; save LR as PC - push {lr} - ; save hidden,V1-V8,LR - push {a1,v1-v8,lr} - - ; load TIB to save/restore thread size and limit. - ; we do not need preserve CPU flag and can use it's arg register - mrc p15, #0, v1, c13, c0, #2 - - ; save current stack base - ldr a5, [v1, #0x04] - push {a5} - ; save current stack limit - ldr a5, [v1, #0x08] - push {a5} - ; save current deallocation stack - ldr a5, [v1, #0xe0c] - push {a5} - - ; store RSP (pointing to context-data) in A1 - mov a1, sp - - ; restore RSP (pointing to context-data) from A2 - mov sp, a2 - - ; restore deallocation stack - pop {a5} - str a5, [v1, #0xe0c] - ; restore stack limit - pop {a5} - str a5, [v1, #0x08] - ; restore stack base - pop {a5} - str a5, [v1, #0x04] - - ; restore hidden,V1-V8,LR - pop {a4,v1-v8,lr} - - ; return transfer_t from jump - str a1, [a4, #0] - str a3, [a4, #4] - ; pass transfer_t as first arg in context function - ; A1 == FCTX, A2 == DATA - mov a2, a3 - - ; restore PC - pop {pc} - - ENDP - END diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_combined_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_combined_sysv_macho_gas.S deleted file mode 100644 index 1d27afad10..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_combined_sysv_macho_gas.S +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__i386__) - #include "jump_i386_sysv_macho_gas.S" -#elif defined(__x86_64__) - #include "jump_x86_64_sysv_macho_gas.S" -#elif defined(__ppc__) - #include "jump_ppc32_sysv_macho_gas.S" -#elif defined(__ppc64__) - #include "jump_ppc64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_gas.asm b/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_gas.asm deleted file mode 100644 index 8512a3d088..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_gas.asm +++ /dev/null @@ -1,117 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Copyright Thomas Sailer 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/************************************************************************************* -* --------------------------------------------------------------------------------- * -* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -* --------------------------------------------------------------------------------- * -* | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | * -* --------------------------------------------------------------------------------- * -* | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | * -* --------------------------------------------------------------------------------- * -* --------------------------------------------------------------------------------- * -* | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -* --------------------------------------------------------------------------------- * -* | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | * -* --------------------------------------------------------------------------------- * -* | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| * -* --------------------------------------------------------------------------------- * -**************************************************************************************/ - -.file "jump_i386_ms_pe_gas.asm" -.text -.p2align 4,,15 -.globl _jump_fcontext -.def _jump_fcontext; .scl 2; .type 32; .endef -_jump_fcontext: - /* prepare stack */ - leal -0x2c(%esp), %esp - -#if !defined(BOOST_USE_TSX) - /* save MMX control- and status-word */ - stmxcsr (%esp) - /* save x87 control-word */ - fnstcw 0x4(%esp) -#endif - - /* load NT_TIB */ - movl %fs:(0x18), %edx - /* load fiber local storage */ - movl 0x10(%edx), %eax - movl %eax, 0x8(%esp) - /* load current dealloction stack */ - movl 0xe0c(%edx), %eax - movl %eax, 0xc(%esp) - /* load current stack limit */ - movl 0x8(%edx), %eax - movl %eax, 0x10(%esp) - /* load current stack base */ - movl 0x4(%edx), %eax - movl %eax, 0x14(%esp) - /* load current SEH exception list */ - movl (%edx), %eax - movl %eax, 0x18(%esp) - - movl %edi, 0x1c(%esp) /* save EDI */ - movl %esi, 0x20(%esp) /* save ESI */ - movl %ebx, 0x24(%esp) /* save EBX */ - movl %ebp, 0x28(%esp) /* save EBP */ - - /* store ESP (pointing to context-data) in EAX */ - movl %esp, %eax - - /* firstarg of jump_fcontext() == fcontext to jump to */ - movl 0x30(%esp), %ecx - - /* restore ESP (pointing to context-data) from ECX */ - movl %ecx, %esp - -#if !defined(BOOST_USE_TSX) - /* restore MMX control- and status-word */ - ldmxcsr (%esp) - /* restore x87 control-word */ - fldcw 0x4(%esp) -#endif - - /* restore NT_TIB into EDX */ - movl %fs:(0x18), %edx - /* restore fiber local storage */ - movl 0x8(%esp), %ecx - movl %ecx, 0x10(%edx) - /* restore current deallocation stack */ - movl 0xc(%esp), %ecx - movl %ecx, 0xe0c(%edx) - /* restore current stack limit */ - movl 0x10(%esp), %ecx - movl %ecx, 0x8(%edx) - /* restore current stack base */ - movl 0x14(%esp), %ecx - movl %ecx, 0x4(%edx) - /* restore current SEH exception list */ - movl 0x18(%esp), %ecx - movl %ecx, (%edx) - - movl 0x2c(%esp), %ecx /* restore EIP */ - - movl 0x1c(%esp), %edi /* restore EDI */ - movl 0x20(%esp), %esi /* restore ESI */ - movl 0x24(%esp), %ebx /* restore EBX */ - movl 0x28(%esp), %ebp /* restore EBP */ - - /* prepare stack */ - leal 0x30(%esp), %esp - - /* return transfer_t */ - /* FCTX == EAX, DATA == EDX */ - movl 0x34(%eax), %edx - - /* jump to context */ - jmp *%ecx - -.section .drectve -.ascii " -export:\"jump_fcontext\"" diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_masm.asm b/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_masm.asm deleted file mode 100644 index 7a9e848f1c..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_masm.asm +++ /dev/null @@ -1,116 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; --------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; --------------------------------------------------------------------------------- -; | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | -; --------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | -; --------------------------------------------------------------------------------- -; --------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; --------------------------------------------------------------------------------- -; | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | -; --------------------------------------------------------------------------------- -; | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| -; --------------------------------------------------------------------------------- - -.386 -.XMM -.model flat, c -.code - -jump_fcontext PROC BOOST_CONTEXT_EXPORT - ; prepare stack - lea esp, [esp-02ch] - -IFNDEF BOOST_USE_TSX - ; save MMX control- and status-word - stmxcsr [esp] - ; save x87 control-word - fnstcw [esp+04h] -ENDIF - - assume fs:nothing - ; load NT_TIB into ECX - mov edx, fs:[018h] - assume fs:error - ; load fiber local storage - mov eax, [edx+010h] - mov [esp+08h], eax - ; load current deallocation stack - mov eax, [edx+0e0ch] - mov [esp+0ch], eax - ; load current stack limit - mov eax, [edx+08h] - mov [esp+010h], eax - ; load current stack base - mov eax, [edx+04h] - mov [esp+014h], eax - ; load current SEH exception list - mov eax, [edx] - mov [esp+018h], eax - - mov [esp+01ch], edi ; save EDI - mov [esp+020h], esi ; save ESI - mov [esp+024h], ebx ; save EBX - mov [esp+028h], ebp ; save EBP - - ; store ESP (pointing to context-data) in EAX - mov eax, esp - - ; firstarg of jump_fcontext() == fcontext to jump to - mov ecx, [esp+030h] - - ; restore ESP (pointing to context-data) from ECX - mov esp, ecx - -IFNDEF BOOST_USE_TSX - ; restore MMX control- and status-word - ldmxcsr [esp] - ; restore x87 control-word - fldcw [esp+04h] -ENDIF - - assume fs:nothing - ; load NT_TIB into EDX - mov edx, fs:[018h] - assume fs:error - ; restore fiber local storage - mov ecx, [esp+08h] - mov [edx+010h], ecx - ; restore current deallocation stack - mov ecx, [esp+0ch] - mov [edx+0e0ch], ecx - ; restore current stack limit - mov ecx, [esp+010h] - mov [edx+08h], ecx - ; restore current stack base - mov ecx, [esp+014h] - mov [edx+04h], ecx - ; restore current SEH exception list - mov ecx, [esp+018h] - mov [edx], ecx - - mov ecx, [esp+02ch] ; restore EIP - - mov edi, [esp+01ch] ; restore EDI - mov esi, [esp+020h] ; restore ESI - mov ebx, [esp+024h] ; restore EBX - mov ebp, [esp+028h] ; restore EBP - - ; prepare stack - lea esp, [esp+030h] - - ; return transfer_t - ; FCTX == EAX, DATA == EDX - mov edx, [eax+034h] - - ; jump to context - jmp ecx -jump_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_masm.masm b/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_masm.masm deleted file mode 100644 index 7a9e848f1c..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_i386_ms_pe_masm.masm +++ /dev/null @@ -1,116 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; --------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; --------------------------------------------------------------------------------- -; | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | -; --------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | -; --------------------------------------------------------------------------------- -; --------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; --------------------------------------------------------------------------------- -; | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | -; --------------------------------------------------------------------------------- -; | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| -; --------------------------------------------------------------------------------- - -.386 -.XMM -.model flat, c -.code - -jump_fcontext PROC BOOST_CONTEXT_EXPORT - ; prepare stack - lea esp, [esp-02ch] - -IFNDEF BOOST_USE_TSX - ; save MMX control- and status-word - stmxcsr [esp] - ; save x87 control-word - fnstcw [esp+04h] -ENDIF - - assume fs:nothing - ; load NT_TIB into ECX - mov edx, fs:[018h] - assume fs:error - ; load fiber local storage - mov eax, [edx+010h] - mov [esp+08h], eax - ; load current deallocation stack - mov eax, [edx+0e0ch] - mov [esp+0ch], eax - ; load current stack limit - mov eax, [edx+08h] - mov [esp+010h], eax - ; load current stack base - mov eax, [edx+04h] - mov [esp+014h], eax - ; load current SEH exception list - mov eax, [edx] - mov [esp+018h], eax - - mov [esp+01ch], edi ; save EDI - mov [esp+020h], esi ; save ESI - mov [esp+024h], ebx ; save EBX - mov [esp+028h], ebp ; save EBP - - ; store ESP (pointing to context-data) in EAX - mov eax, esp - - ; firstarg of jump_fcontext() == fcontext to jump to - mov ecx, [esp+030h] - - ; restore ESP (pointing to context-data) from ECX - mov esp, ecx - -IFNDEF BOOST_USE_TSX - ; restore MMX control- and status-word - ldmxcsr [esp] - ; restore x87 control-word - fldcw [esp+04h] -ENDIF - - assume fs:nothing - ; load NT_TIB into EDX - mov edx, fs:[018h] - assume fs:error - ; restore fiber local storage - mov ecx, [esp+08h] - mov [edx+010h], ecx - ; restore current deallocation stack - mov ecx, [esp+0ch] - mov [edx+0e0ch], ecx - ; restore current stack limit - mov ecx, [esp+010h] - mov [edx+08h], ecx - ; restore current stack base - mov ecx, [esp+014h] - mov [edx+04h], ecx - ; restore current SEH exception list - mov ecx, [esp+018h] - mov [edx], ecx - - mov ecx, [esp+02ch] ; restore EIP - - mov edi, [esp+01ch] ; restore EDI - mov esi, [esp+020h] ; restore ESI - mov ebx, [esp+024h] ; restore EBX - mov ebp, [esp+028h] ; restore EBP - - ; prepare stack - lea esp, [esp+030h] - - ; return transfer_t - ; FCTX == EAX, DATA == EDX - mov edx, [eax+034h] - - ; jump to context - jmp ecx -jump_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_i386_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_i386_sysv_elf_gas.S deleted file mode 100644 index c56ef14202..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_i386_sysv_elf_gas.S +++ /dev/null @@ -1,92 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/**************************************************************************************** - * * - * ---------------------------------------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ---------------------------------------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * - * ---------------------------------------------------------------------------------- * - * | fc_mxcsr|fc_x87_cw| guard | EDI | ESI | EBX | EBP | EIP | * - * ---------------------------------------------------------------------------------- * - * ---------------------------------------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ---------------------------------------------------------------------------------- * - * | 0x20 | 0x24 | 0x28 | | * - * ---------------------------------------------------------------------------------- * - * | hidden | to | data | | * - * ---------------------------------------------------------------------------------- * - * * - ****************************************************************************************/ - -.text -.globl jump_fcontext -.align 2 -.type jump_fcontext,@function -jump_fcontext: - leal -0x1c(%esp), %esp /* prepare stack */ - -#if !defined(BOOST_USE_TSX) - stmxcsr (%esp) /* save MMX control- and status-word */ - fnstcw 0x4(%esp) /* save x87 control-word */ -#endif - -#if defined(TLS_STACK_PROTECTOR) - movl %gs:0x14, %ecx /* read stack guard from TLS record */ - movl %ecx, 0x8(%esp) /* save stack guard */ -#endif - - movl %edi, 0xc(%esp) /* save EDI */ - movl %esi, 0x10(%esp) /* save ESI */ - movl %ebx, 0x14(%esp) /* save EBX */ - movl %ebp, 0x18(%esp) /* save EBP */ - - /* store ESP (pointing to context-data) in ECX */ - movl %esp, %ecx - - /* first arg of jump_fcontext() == fcontext to jump to */ - movl 0x24(%esp), %eax - - /* second arg of jump_fcontext() == data to be transferred */ - movl 0x28(%esp), %edx - - /* restore ESP (pointing to context-data) from EAX */ - movl %eax, %esp - - /* address of returned transport_t */ - movl 0x20(%esp), %eax - /* return parent fcontext_t */ - movl %ecx, (%eax) - /* return data */ - movl %edx, 0x4(%eax) - - movl 0x1c(%esp), %ecx /* restore EIP */ - -#if !defined(BOOST_USE_TSX) - ldmxcsr (%esp) /* restore MMX control- and status-word */ - fldcw 0x4(%esp) /* restore x87 control-word */ -#endif - -#if defined(TLS_STACK_PROTECTOR) - movl 0x8(%esp), %edx /* load stack guard */ - movl %edx, %gs:0x14 /* restore stack guard to TLS record */ -#endif - - movl 0xc(%esp), %edi /* restore EDI */ - movl 0x10(%esp), %esi /* restore ESI */ - movl 0x14(%esp), %ebx /* restore EBX */ - movl 0x18(%esp), %ebp /* restore EBP */ - - leal 0x24(%esp), %esp /* prepare stack */ - - /* jump to context */ - jmp *%ecx -.size jump_fcontext,.-jump_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_i386_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_i386_sysv_macho_gas.S deleted file mode 100644 index bfa3e23ed1..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_i386_sysv_macho_gas.S +++ /dev/null @@ -1,74 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/**************************************************************************************** - * * - * ---------------------------------------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ---------------------------------------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * - * ---------------------------------------------------------------------------------- * - * | fc_mxcsr|fc_x87_cw| EDI | ESI | EBX | EBP | EIP | to | * - * ---------------------------------------------------------------------------------- * - * ---------------------------------------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ---------------------------------------------------------------------------------- * - * | 0x20 | | * - * ---------------------------------------------------------------------------------- * - * | data | | * - * ---------------------------------------------------------------------------------- * - * * - ****************************************************************************************/ - -.text -.globl _jump_fcontext -.align 2 -_jump_fcontext: - leal -0x18(%esp), %esp /* prepare stack */ - -#if !defined(BOOST_USE_TSX) - stmxcsr (%esp) /* save MMX control- and status-word */ - fnstcw 0x4(%esp) /* save x87 control-word */ -#endif - - movl %edi, 0x8(%esp) /* save EDI */ - movl %esi, 0xc(%esp) /* save ESI */ - movl %ebx, 0x10(%esp) /* save EBX */ - movl %ebp, 0x14(%esp) /* save EBP */ - - /* store ESP (pointing to context-data) in ECX */ - movl %esp, %ecx - - /* first arg of jump_fcontext() == fcontext to jump to */ - movl 0x1c(%esp), %eax - - /* second arg of jump_fcontext() == data to be transferred */ - movl 0x20(%esp), %edx - - /* restore ESP (pointing to context-data) from EAX */ - movl %eax, %esp - - /* return parent fcontext_t */ - movl %ecx, %eax - /* returned data is stored in EDX */ - - movl 0x18(%esp), %ecx /* restore EIP */ - -#if !defined(BOOST_USE_TSX) - ldmxcsr (%esp) /* restore MMX control- and status-word */ - fldcw 0x4(%esp) /* restore x87 control-word */ -#endif - - movl 0x8(%esp), %edi /* restore EDI */ - movl 0xc(%esp), %esi /* restore ESI */ - movl 0x10(%esp), %ebx /* restore EBX */ - movl 0x14(%esp), %ebp /* restore EBP */ - - leal 0x1c(%esp), %esp /* prepare stack */ - - /* jump to context */ - jmp *%ecx diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S deleted file mode 100644 index 959ddac16f..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_i386_x86_64_sysv_macho_gas.S +++ /dev/null @@ -1,16 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__i386__) - #include "jump_i386_sysv_macho_gas.S" -#elif defined(__x86_64__) - #include "jump_x86_64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_mips32_o32_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_mips32_o32_elf_gas.S deleted file mode 100644 index a6671d323b..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_mips32_o32_elf_gas.S +++ /dev/null @@ -1,118 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F20 | F22 | F24 | F26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F28 | F30 | S0 | S1 | S2 | S3 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | S4 | S5 | S6 | S7 | FP |hiddn| RA | PC | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | ABI ARGS | GP | FCTX| DATA| | * - * ------------------------------------------------- * - * * - * *****************************************************/ - -.text -.globl jump_fcontext -.align 2 -.type jump_fcontext,@function -.ent jump_fcontext -jump_fcontext: - # reserve space on stack - addiu $sp, $sp, -96 - - sw $s0, 48($sp) # save S0 - sw $s1, 52($sp) # save S1 - sw $s2, 56($sp) # save S2 - sw $s3, 60($sp) # save S3 - sw $s4, 64($sp) # save S4 - sw $s5, 68($sp) # save S5 - sw $s6, 72($sp) # save S6 - sw $s7, 76($sp) # save S7 - sw $fp, 80($sp) # save FP - sw $a0, 84($sp) # save hidden, address of returned transfer_t - sw $ra, 88($sp) # save RA - sw $ra, 92($sp) # save RA as PC - -#if defined(__mips_hard_float) - s.d $f20, ($sp) # save F20 - s.d $f22, 8($sp) # save F22 - s.d $f24, 16($sp) # save F24 - s.d $f26, 24($sp) # save F26 - s.d $f28, 32($sp) # save F28 - s.d $f30, 40($sp) # save F30 -#endif - - # store SP (pointing to context-data) in A0 - move $a0, $sp - - # restore SP (pointing to context-data) from A1 - move $sp, $a1 - -#if defined(__mips_hard_float) - l.d $f20, ($sp) # restore F20 - l.d $f22, 8($sp) # restore F22 - l.d $f24, 16($sp) # restore F24 - l.d $f26, 24($sp) # restore F26 - l.d $f28, 32($sp) # restore F28 - l.d $f30, 40($sp) # restore F30 -#endif - - lw $s0, 48($sp) # restore S0 - lw $s1, 52($sp) # restore S1 - lw $s2, 56($sp) # restore S2 - lw $s3, 60($sp) # restore S3 - lw $s4, 64($sp) # restore S4 - lw $s5, 68($sp) # restore S5 - lw $s6, 72($sp) # restore S6 - lw $s7, 76($sp) # restore S7 - lw $fp, 80($sp) # restore FP - lw $v0, 84($sp) # restore hidden, address of returned transfer_t - lw $ra, 88($sp) # restore RA - - # load PC - lw $t9, 92($sp) - - # adjust stack - addiu $sp, $sp, 96 - - # return transfer_t from jump - sw $a0, ($v0) # fctx of transfer_t - sw $a2, 4($v0) # data of transfer_t - # pass transfer_t as first arg in context function - # A0 == fctx, A1 == data - move $a1, $a2 - - # jump to context - jr $t9 -.end jump_fcontext -.size jump_fcontext, .-jump_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S deleted file mode 100644 index f175e31233..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_ppc64_sysv_macho_gas.S +++ /dev/null @@ -1,16 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__ppc__) - #include "jump_ppc32_sysv_macho_gas.S" -#elif defined(__ppc64__) - #include "jump_ppc64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_elf_gas.S deleted file mode 100644 index 5ade6b1ea7..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_elf_gas.S +++ /dev/null @@ -1,206 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl jump_fcontext -.align 2 -.type jump_fcontext,@function -jump_fcontext: - # reserve space on stack - subi %r1, %r1, 244 - - stfd %f14, 0(%r1) # save F14 - stfd %f15, 8(%r1) # save F15 - stfd %f16, 16(%r1) # save F16 - stfd %f17, 24(%r1) # save F17 - stfd %f18, 32(%r1) # save F18 - stfd %f19, 40(%r1) # save F19 - stfd %f20, 48(%r1) # save F20 - stfd %f21, 56(%r1) # save F21 - stfd %f22, 64(%r1) # save F22 - stfd %f23, 72(%r1) # save F23 - stfd %f24, 80(%r1) # save F24 - stfd %f25, 88(%r1) # save F25 - stfd %f26, 96(%r1) # save F26 - stfd %f27, 104(%r1) # save F27 - stfd %f28, 112(%r1) # save F28 - stfd %f29, 120(%r1) # save F29 - stfd %f30, 128(%r1) # save F30 - stfd %f31, 136(%r1) # save F31 - mffs %f0 # load FPSCR - stfd %f0, 144(%r1) # save FPSCR - - stw %r13, 152(%r1) # save R13 - stw %r14, 156(%r1) # save R14 - stw %r15, 160(%r1) # save R15 - stw %r16, 164(%r1) # save R16 - stw %r17, 168(%r1) # save R17 - stw %r18, 172(%r1) # save R18 - stw %r19, 176(%r1) # save R19 - stw %r20, 180(%r1) # save R20 - stw %r21, 184(%r1) # save R21 - stw %r22, 188(%r1) # save R22 - stw %r23, 192(%r1) # save R23 - stw %r24, 196(%r1) # save R24 - stw %r25, 200(%r1) # save R25 - stw %r26, 204(%r1) # save R26 - stw %r27, 208(%r1) # save R27 - stw %r28, 212(%r1) # save R28 - stw %r29, 216(%r1) # save R29 - stw %r30, 220(%r1) # save R30 - stw %r31, 224(%r1) # save R31 - stw %r3, 228(%r1) # save hidden - - # save CR - mfcr %r0 - stw %r0, 232(%r1) - # save LR - mflr %r0 - stw %r0, 236(%r1) - # save LR as PC - stw %r0, 240(%r1) - - # store RSP (pointing to context-data) in R6 - mr %r6, %r1 - - # restore RSP (pointing to context-data) from R4 - mr %r1, %r4 - - lfd %f14, 0(%r1) # restore F14 - lfd %f15, 8(%r1) # restore F15 - lfd %f16, 16(%r1) # restore F16 - lfd %f17, 24(%r1) # restore F17 - lfd %f18, 32(%r1) # restore F18 - lfd %f19, 40(%r1) # restore F19 - lfd %f20, 48(%r1) # restore F20 - lfd %f21, 56(%r1) # restore F21 - lfd %f22, 64(%r1) # restore F22 - lfd %f23, 72(%r1) # restore F23 - lfd %f24, 80(%r1) # restore F24 - lfd %f25, 88(%r1) # restore F25 - lfd %f26, 96(%r1) # restore F26 - lfd %f27, 104(%r1) # restore F27 - lfd %f28, 112(%r1) # restore F28 - lfd %f29, 120(%r1) # restore F29 - lfd %f30, 128(%r1) # restore F30 - lfd %f31, 136(%r1) # restore F31 - lfd %f0, 144(%r1) # load FPSCR - mtfsf 0xff, %f0 # restore FPSCR - - lwz %r13, 152(%r1) # restore R13 - lwz %r14, 156(%r1) # restore R14 - lwz %r15, 160(%r1) # restore R15 - lwz %r16, 164(%r1) # restore R16 - lwz %r17, 168(%r1) # restore R17 - lwz %r18, 172(%r1) # restore R18 - lwz %r19, 176(%r1) # restore R19 - lwz %r20, 180(%r1) # restore R20 - lwz %r21, 184(%r1) # restore R21 - lwz %r22, 188(%r1) # restore R22 - lwz %r23, 192(%r1) # restore R23 - lwz %r24, 196(%r1) # restore R24 - lwz %r25, 200(%r1) # restore R25 - lwz %r26, 204(%r1) # restore R26 - lwz %r27, 208(%r1) # restore R27 - lwz %r28, 212(%r1) # restore R28 - lwz %r29, 216(%r1) # restore R29 - lwz %r30, 220(%r1) # restore R30 - lwz %r31, 224(%r1) # restore R31 - lwz %r3, 228(%r1) # restore hidden - - # restore CR - lwz %r0, 232(%r1) - mtcr %r0 - # restore LR - lwz %r0, 236(%r1) - mtlr %r0 - # load PC - lwz %r0, 240(%r1) - # restore CTR - mtctr %r0 - - # adjust stack - addi %r1, %r1, 244 - - # return transfer_t - stw %r6, 0(%r3) - stw %r5, 4(%r3) - - # jump to context - bctr -.size jump_fcontext, .-jump_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_macho_gas.S deleted file mode 100644 index c555237afa..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_macho_gas.S +++ /dev/null @@ -1,201 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl _jump_fcontext -.align 2 -_jump_fcontext: - ; reserve space on stack - subi r1, r1, 244 - - stfd f14, 0(r1) # save F14 - stfd f15, 8(r1) # save F15 - stfd f16, 16(r1) # save F16 - stfd f17, 24(r1) # save F17 - stfd f18, 32(r1) # save F18 - stfd f19, 40(r1) # save F19 - stfd f20, 48(r1) # save F20 - stfd f21, 56(r1) # save F21 - stfd f22, 64(r1) # save F22 - stfd f23, 72(r1) # save F23 - stfd f24, 80(r1) # save F24 - stfd f25, 88(r1) # save F25 - stfd f26, 96(r1) # save F26 - stfd f27, 104(r1) # save F27 - stfd f28, 112(r1) # save F28 - stfd f29, 120(r1) # save F29 - stfd f30, 128(r1) # save F30 - stfd f31, 136(r1) # save F31 - mffs f0 # load FPSCR - stfd f0, 144(r1) # save FPSCR - - stw r13, 152(r1) # save R13 - stw r14, 156(r1) # save R14 - stw r15, 160(r1) # save R15 - stw r16, 164(r1) # save R16 - stw r17, 168(r1) # save R17 - stw r18, 172(r1) # save R18 - stw r19, 176(r1) # save R19 - stw r20, 180(r1) # save R20 - stw r21, 184(r1) # save R21 - stw r22, 188(r1) # save R22 - stw r23, 192(r1) # save R23 - stw r24, 196(r1) # save R24 - stw r25, 200(r1) # save R25 - stw r26, 204(r1) # save R26 - stw r27, 208(r1) # save R27 - stw r28, 212(r1) # save R28 - stw r29, 216(r1) # save R29 - stw r30, 220(r1) # save R30 - stw r31, 224(r1) # save R31 - stw r3, 228(r1) # save hidden - - # save CR - mfcr r0 - stw r0, 232(r1) - # save LR - mflr r0 - stw r0, 236(r1) - # save LR as PC - stw r0, 240(r1) - - # store RSP (pointing to context-data) in R6 - mr r6, r1 - - # restore RSP (pointing to context-data) from R4 - mr r1, r4 - - lfd f14, 0(r1) # restore F14 - lfd f15, 8(r1) # restore F15 - lfd f16, 16(r1) # restore F16 - lfd f17, 24(r1) # restore F17 - lfd f18, 32(r1) # restore F18 - lfd f19, 40(r1) # restore F19 - lfd f20, 48(r1) # restore F20 - lfd f21, 56(r1) # restore F21 - lfd f22, 64(r1) # restore F22 - lfd f23, 72(r1) # restore F23 - lfd f24, 80(r1) # restore F24 - lfd f25, 88(r1) # restore F25 - lfd f26, 96(r1) # restore F26 - lfd f27, 104(r1) # restore F27 - lfd f28, 112(r1) # restore F28 - lfd f29, 120(r1) # restore F29 - lfd f30, 128(r1) # restore F30 - lfd f31, 136(r1) # restore F31 - lfd f0, 144(r1) # load FPSCR - mtfsf 0xff, f0 # restore FPSCR - - lwz r13, 152(r1) # restore R13 - lwz r14, 156(r1) # restore R14 - lwz r15, 160(r1) # restore R15 - lwz r16, 164(r1) # restore R16 - lwz r17, 168(r1) # restore R17 - lwz r18, 172(r1) # restore R18 - lwz r19, 176(r1) # restore R19 - lwz r20, 180(r1) # restore R20 - lwz r21, 184(r1) # restore R21 - lwz r22, 188(r1) # restore R22 - lwz r23, 192(r1) # restore R23 - lwz r24, 196(r1) # restore R24 - lwz r25, 200(r1) # restore R25 - lwz r26, 204(r1) # restore R26 - lwz r27, 208(r1) # restore R27 - lwz r28, 212(r1) # restore R28 - lwz r29, 216(r1) # restore R29 - lwz r30, 220(r1) # restore R30 - lwz r31, 224(r1) # restore R31 - lwz r3, 228(r1) # restore hidden - - # restore CR - lwz r0, 232(r1) - mtcr r0 - # restore LR - lwz r0, 236(r1) - mtlr r0 - # load PC - lwz r0, 240(r1) - # restore CTR - mtctr r0 - - # adjust stack - addi r1, r1, 244 - - # return transfer_t - stw r6, 0(r3) - stw r5, 4(r3) - - # jump to context - bctr diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S deleted file mode 100644 index 5a967726ad..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_ppc32_sysv_xcoff_gas.S +++ /dev/null @@ -1,203 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ -.globl .jump_fcontext -.globl jump_fcontext[DS] -.align 2 -.csect jump_fcontext[DS] -jump_fcontext: - .long .jump_fcontext -.jump_fcontext: - # reserve space on stack - subi r1, r1, 244 - - stfd f14, 0(r1) # save F14 - stfd f15, 8(r1) # save F15 - stfd f16, 16(r1) # save F16 - stfd f17, 24(r1) # save F17 - stfd f18, 32(r1) # save F18 - stfd f19, 40(r1) # save F19 - stfd f20, 48(r1) # save F20 - stfd f21, 56(r1) # save F21 - stfd f22, 64(r1) # save F22 - stfd f23, 72(r1) # save F23 - stfd f24, 80(r1) # save F24 - stfd f25, 88(r1) # save F25 - stfd f26, 96(r1) # save F26 - stfd f27, 104(r1) # save F27 - stfd f28, 112(r1) # save F28 - stfd f29, 120(r1) # save F29 - stfd f30, 128(r1) # save F30 - stfd f31, 136(r1) # save F31 - mffs f0 # load FPSCR - stfd f0, 144(r1) # save FPSCR - - stw r13, 152(r1) # save R13 - stw r14, 156(r1) # save R14 - stw r15, 160(r1) # save R15 - stw r16, 164(r1) # save R16 - stw r17, 168(r1) # save R17 - stw r18, 172(r1) # save R18 - stw r19, 176(r1) # save R19 - stw r20, 180(r1) # save R20 - stw r21, 184(r1) # save R21 - stw r22, 188(r1) # save R22 - stw r23, 192(r1) # save R23 - stw r24, 196(r1) # save R24 - stw r25, 200(r1) # save R25 - stw r26, 204(r1) # save R26 - stw r27, 208(r1) # save R27 - stw r28, 212(r1) # save R28 - stw r29, 216(r1) # save R29 - stw r30, 220(r1) # save R30 - stw r31, 224(r1) # save R31 - stw r3, 228(r1) # save hidden - - # save CR - mfcr r0 - stw r0, 232(r1) - # save LR - mflr r0 - stw r0, 236(r1) - # save LR as PC - stw r0, 240(r1) - - # store RSP (pointing to context-data) in R6 - mr r6, r1 - - # restore RSP (pointing to context-data) from R4 - mr r1, r4 - - lfd f14, 0(r1) # restore F14 - lfd f15, 8(r1) # restore F15 - lfd f16, 16(r1) # restore F16 - lfd f17, 24(r1) # restore F17 - lfd f18, 32(r1) # restore F18 - lfd f19, 40(r1) # restore F19 - lfd f20, 48(r1) # restore F20 - lfd f21, 56(r1) # restore F21 - lfd f22, 64(r1) # restore F22 - lfd f23, 72(r1) # restore F23 - lfd f24, 80(r1) # restore F24 - lfd f25, 88(r1) # restore F25 - lfd f26, 96(r1) # restore F26 - lfd f27, 104(r1) # restore F27 - lfd f28, 112(r1) # restore F28 - lfd f29, 120(r1) # restore F29 - lfd f30, 128(r1) # restore F30 - lfd f31, 136(r1) # restore F31 - lfd f0, 144(r1) # load FPSCR - mtfsf 0xff, f0 # restore FPSCR - - lwz r13, 152(r1) # restore R13 - lwz r14, 156(r1) # restore R14 - lwz r15, 160(r1) # restore R15 - lwz r16, 164(r1) # restore R16 - lwz r17, 168(r1) # restore R17 - lwz r18, 172(r1) # restore R18 - lwz r19, 176(r1) # restore R19 - lwz r20, 180(r1) # restore R20 - lwz r21, 184(r1) # restore R21 - lwz r22, 188(r1) # restore R22 - lwz r23, 192(r1) # restore R23 - lwz r24, 196(r1) # restore R24 - lwz r25, 200(r1) # restore R25 - lwz r26, 204(r1) # restore R26 - lwz r27, 208(r1) # restore R27 - lwz r28, 212(r1) # restore R28 - lwz r29, 216(r1) # restore R29 - lwz r30, 220(r1) # restore R30 - lwz r31, 224(r1) # restore R31 - lwz r3, 228(r1) # restore hidden - - # restore CR - lwz r0, 232(r1) - mtcr r0 - # restore LR - lwz r0, 236(r1) - mtlr r0 - # load PC - lwz r0, 240(r1) - # restore CTR - mtctr r0 - - # adjust stack - addi r1, r1, 244 - - # return transfer_t - stw r6, 0(r3) - stw r5, 4(r3) - - # jump to context - bctr diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S deleted file mode 100644 index a27e606e6b..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S +++ /dev/null @@ -1,220 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | TOC | R14 | R15 | R16 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | R17 | R18 | R19 | R20 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | R21 | R22 | R23 | R24 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | R25 | R26 | R27 | R28 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | R29 | R30 | R31 | hidden | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | CR | LR | PC | back-chain| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | cr saved | lr saved | compiler | linker | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | TOC saved | FCTX | DATA | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.globl jump_fcontext -#if _CALL_ELF == 2 - .text - .align 2 -jump_fcontext: - addis %r2, %r12, .TOC.-jump_fcontext@ha - addi %r2, %r2, .TOC.-jump_fcontext@l - .localentry jump_fcontext, . - jump_fcontext -#else - .section ".opd","aw" - .align 3 -jump_fcontext: -# ifdef _CALL_LINUX - .quad .L.jump_fcontext,.TOC.@tocbase,0 - .type jump_fcontext,@function - .text - .align 2 -.L.jump_fcontext: -# else - .hidden .jump_fcontext - .globl .jump_fcontext - .quad .jump_fcontext,.TOC.@tocbase,0 - .size jump_fcontext,24 - .type .jump_fcontext,@function - .text - .align 2 -.jump_fcontext: -# endif -#endif - # reserve space on stack - subi %r1, %r1, 184 - -#if _CALL_ELF != 2 - std %r2, 0(%r1) # save TOC -#endif - std %r14, 8(%r1) # save R14 - std %r15, 16(%r1) # save R15 - std %r16, 24(%r1) # save R16 - std %r17, 32(%r1) # save R17 - std %r18, 40(%r1) # save R18 - std %r19, 48(%r1) # save R19 - std %r20, 56(%r1) # save R20 - std %r21, 64(%r1) # save R21 - std %r22, 72(%r1) # save R22 - std %r23, 80(%r1) # save R23 - std %r24, 88(%r1) # save R24 - std %r25, 96(%r1) # save R25 - std %r26, 104(%r1) # save R26 - std %r27, 112(%r1) # save R27 - std %r28, 120(%r1) # save R28 - std %r29, 128(%r1) # save R29 - std %r30, 136(%r1) # save R30 - std %r31, 144(%r1) # save R31 -#if _CALL_ELF != 2 - std %r3, 152(%r1) # save hidden -#endif - - # save CR - mfcr %r0 - std %r0, 160(%r1) - # save LR - mflr %r0 - std %r0, 168(%r1) - # save LR as PC - std %r0, 176(%r1) - - # store RSP (pointing to context-data) in R6 - mr %r6, %r1 - -#if _CALL_ELF == 2 - # restore RSP (pointing to context-data) from R3 - mr %r1, %r3 -#else - # restore RSP (pointing to context-data) from R4 - mr %r1, %r4 - - ld %r2, 0(%r1) # restore TOC -#endif - ld %r14, 8(%r1) # restore R14 - ld %r15, 16(%r1) # restore R15 - ld %r16, 24(%r1) # restore R16 - ld %r17, 32(%r1) # restore R17 - ld %r18, 40(%r1) # restore R18 - ld %r19, 48(%r1) # restore R19 - ld %r20, 56(%r1) # restore R20 - ld %r21, 64(%r1) # restore R21 - ld %r22, 72(%r1) # restore R22 - ld %r23, 80(%r1) # restore R23 - ld %r24, 88(%r1) # restore R24 - ld %r25, 96(%r1) # restore R25 - ld %r26, 104(%r1) # restore R26 - ld %r27, 112(%r1) # restore R27 - ld %r28, 120(%r1) # restore R28 - ld %r29, 128(%r1) # restore R29 - ld %r30, 136(%r1) # restore R30 - ld %r31, 144(%r1) # restore R31 -#if _CALL_ELF != 2 - ld %r3, 152(%r1) # restore hidden -#endif - - # restore CR - ld %r0, 160(%r1) - mtcr %r0 - # restore LR - ld %r0, 168(%r1) - mtlr %r0 - - # load PC - ld %r12, 176(%r1) - # restore CTR - mtctr %r12 - - # adjust stack - addi %r1, %r1, 184 - -#if _CALL_ELF == 2 - # copy transfer_t into transfer_fn arg registers - mr %r3, %r6 - # arg pointer already in %r4 - - # jump to context - bctr - .size jump_fcontext, .-jump_fcontext -#else - # zero in r3 indicates first jump to context-function - cmpdi %r3, 0 - beq use_entry_arg - - # return transfer_t - std %r6, 0(%r3) - std %r5, 8(%r3) - - # jump to context - bctr - -use_entry_arg: - # copy transfer_t into transfer_fn arg registers - mr %r3, %r6 - mr %r4, %r5 - - # jump to context - bctr -# ifdef _CALL_LINUX - .size .jump_fcontext, .-.L.jump_fcontext -# else - .size .jump_fcontext, .-.jump_fcontext -# endif -#endif - - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_macho_gas.S deleted file mode 100644 index 74fcb2ab35..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_macho_gas.S +++ /dev/null @@ -1,164 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | TOC | R14 | R15 | R16 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | R17 | R18 | R19 | R20 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | R21 | R22 | R23 | R24 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | R25 | R26 | R27 | R28 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | R29 | R30 | R31 | hidden | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | CR | LR | PC | back-chain| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | cr saved | lr saved | compiler | linker | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | TOC saved | FCTX | DATA | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.align 2 -.globl _jump_fcontext - -_jump_fcontext: - ; reserve space on stack - subi r1, r1, 184 - - std r14, 8(r1) ; save R14 - std r15, 16(r1) ; save R15 - std r16, 24(r1) ; save R16 - std r17, 32(r1) ; save R17 - std r18, 40(r1) ; save R18 - std r19, 48(r1) ; save R19 - std r20, 56(r1) ; save R20 - std r21, 64(r1) ; save R21 - std r22, 72(r1) ; save R22 - std r23, 80(r1) ; save R23 - std r24, 88(r1) ; save R24 - std r25, 96(r1) ; save R25 - std r26, 104(r1) ; save R26 - std r27, 112(r1) ; save R27 - std r28, 120(r1) ; save R28 - std r29, 128(r1) ; save R29 - std r30, 136(r1) ; save R30 - std r31, 144(r1) ; save R31 - std r3, 152(r1) ; save hidden - - ; save CR - mfcr r0 - std r0, 160(r1) - ; save LR - mflr r0 - std r0, 168(r1) - ; save LR as PC - std r0, 176(r1) - - ; store RSP (pointing to context-data) in R6 - mr r6, r1 - - ; restore RSP (pointing to context-data) from R4 - mr r1, r4 - - ld r14, 8(r1) ; restore R14 - ld r15, 16(r1) ; restore R15 - ld r16, 24(r1) ; restore R16 - ld r17, 32(r1) ; restore R17 - ld r18, 40(r1) ; restore R18 - ld r19, 48(r1) ; restore R19 - ld r20, 56(r1) ; restore R20 - ld r21, 64(r1) ; restore R21 - ld r22, 72(r1) ; restore R22 - ld r23, 80(r1) ; restore R23 - ld r24, 88(r1) ; restore R24 - ld r25, 96(r1) ; restore R25 - ld r26, 104(r1) ; restore R26 - ld r27, 112(r1) ; restore R27 - ld r28, 120(r1) ; restore R28 - ld r29, 128(r1) ; restore R29 - ld r30, 136(r1) ; restore R30 - ld r31, 144(r1) ; restore R31 - ld r3, 152(r1) ; restore hidden - - ; restore CR - ld r0, 160(r1) - mtcr r0 - ; restore LR - ld r0, 168(r1) - mtlr r0 - - ; load PC - ld r12, 176(r1) - # restore CTR - mtctr r12 - - # adjust stack - addi r1, r1, 184 - - # zero in r3 indicates first jump to context-function - cmpdi r3, 0 - beq use_entry_arg - - # return transfer_t - std r6, 0(r3) - std r5, 8(r3) - - # jump to context - bctr - -use_entry_arg: - # copy transfer_t into transfer_fn arg registers - mr r3, r6 - mr r4, r5 - - # jump to context - bctr diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_xcoff_gas.S b/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_xcoff_gas.S deleted file mode 100644 index 013433f312..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_ppc64_sysv_xcoff_gas.S +++ /dev/null @@ -1,84 +0,0 @@ -.align 2 -.globl .jump_fcontext -.jump_fcontext: - # reserve space on stack - subi 1, 1, 184 - - std 13, 0(1) # save R13 - std 14, 8(1) # save R14 - std 15, 16(1) # save R15 - std 16, 24(1) # save R16 - std 17, 32(1) # save R17 - std 18, 40(1) # save R18 - std 19, 48(1) # save R19 - std 20, 56(1) # save R20 - std 21, 64(1) # save R21 - std 22, 72(1) # save R22 - std 23, 80(1) # save R23 - std 24, 88(1) # save R24 - std 25, 96(1) # save R25 - std 26, 104(1) # save R26 - std 27, 112(1) # save R27 - std 29, 120(1) # save R28 - std 29, 128(1) # save R29 - std 30, 136(1) # save R30 - std 31, 144(1) # save R31 - std 3, 152(1) # save hidden - - # save CR - mfcr 0 - std 0, 160(1) - # save LR - mflr 0 - std 0, 168(1) - # save LR as PC - std 0, 176(1) - - # store RSP (pointing to context-data) in R6 - mr 6, 1 - - # restore RSP (pointing to context-data) from R4 - mr 1, 4 - - ld 13, 0(1) # restore R13 - ld 14, 8(1) # restore R14 - ld 15, 16(1) # restore R15 - ld 16, 24(1) # restore R16 - ld 17, 32(1) # restore R17 - ld 18, 40(1) # restore R18 - ld 19, 48(1) # restore R19 - ld 20, 56(1) # restore R20 - ld 21, 64(1) # restore R21 - ld 22, 72(1) # restore R22 - ld 23, 80(1) # restore R23 - ld 24, 88(1) # restore R24 - ld 25, 96(1) # restore R25 - ld 26, 104(1) # restore R26 - ld 27, 112(1) # restore R27 - ld 28, 120(1) # restore R28 - ld 29, 128(1) # restore R29 - ld 30, 136(1) # restore R30 - ld 31, 144(1) # restore R31 - ld 3, 152(1) # restore hidden - - # restore CR - ld 0, 160(1) - mtcr 0 - # restore LR - ld 0, 168(1) - mtlr 0 - - # load PC - ld 0, 176(1) - # restore CTR - mtctr 0 - - # adjust stack - addi 1, 1, 184 - - # return transfer_t - std 6, 0(3) - std 5, 8(3) - - # jump to context - bctr diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_gas.asm b/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_gas.asm deleted file mode 100644 index ec4ecfe946..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_gas.asm +++ /dev/null @@ -1,209 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Copyright Thomas Sailer 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/************************************************************************************* -* ---------------------------------------------------------------------------------- * -* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -* ---------------------------------------------------------------------------------- * -* | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -* ---------------------------------------------------------------------------------- * -* | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * -* ---------------------------------------------------------------------------------- * -* | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * -* ---------------------------------------------------------------------------------- * -* | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | * -* ---------------------------------------------------------------------------------- * -* | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | * -* ---------------------------------------------------------------------------------- * -* | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | * -* ---------------------------------------------------------------------------------- * -* | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | * -* ---------------------------------------------------------------------------------- * -* | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | * -* ---------------------------------------------------------------------------------- * -* | limit | base | R12 | R13 | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | * -* ---------------------------------------------------------------------------------- * -* | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | * -* ---------------------------------------------------------------------------------- * -* | R14 | R15 | RDI | RSI | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | * -* ---------------------------------------------------------------------------------- * -* | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | * -* ---------------------------------------------------------------------------------- * -* | RBX | RBP | hidden | RIP | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | * -* ---------------------------------------------------------------------------------- * -* | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | * -* ---------------------------------------------------------------------------------- * -* | parameter area | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | * -* ---------------------------------------------------------------------------------- * -* | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | * -* ---------------------------------------------------------------------------------- * -* | FCTX | DATA | | * -* ---------------------------------------------------------------------------------- * -**************************************************************************************/ - -.file "jump_x86_64_ms_pe_gas.asm" -.text -.p2align 4,,15 -.globl jump_fcontext -.def jump_fcontext; .scl 2; .type 32; .endef -.seh_proc jump_fcontext -jump_fcontext: -.seh_endprologue - - leaq -0x118(%rsp), %rsp /* prepare stack */ - -#if !defined(BOOST_USE_TSX) - /* save XMM storage */ - movaps %xmm6, 0x0(%rsp) - movaps %xmm7, 0x10(%rsp) - movaps %xmm8, 0x20(%rsp) - movaps %xmm9, 0x30(%rsp) - movaps %xmm10, 0x40(%rsp) - movaps %xmm11, 0x50(%rsp) - movaps %xmm12, 0x60(%rsp) - movaps %xmm13, 0x70(%rsp) - movaps %xmm14, 0x80(%rsp) - movaps %xmm15, 0x90(%rsp) - stmxcsr 0xa0(%rsp) /* save MMX control- and status-word */ - fnstcw 0xa4(%rsp) /* save x87 control-word */ -#endif - - /* load NT_TIB */ - movq %gs:(0x30), %r10 - /* save fiber local storage */ - movq 0x20(%r10), %rax - movq %rax, 0xb0(%rsp) - /* save current deallocation stack */ - movq 0x1478(%r10), %rax - movq %rax, 0xb8(%rsp) - /* save current stack limit */ - movq 0x10(%r10), %rax - movq %rax, 0xc0(%rsp) - /* save current stack base */ - movq 0x08(%r10), %rax - movq %rax, 0xc8(%rsp) - - movq %r12, 0xd0(%rsp) /* save R12 */ - movq %r13, 0xd8(%rsp) /* save R13 */ - movq %r14, 0xe0(%rsp) /* save R14 */ - movq %r15, 0xe8(%rsp) /* save R15 */ - movq %rdi, 0xf0(%rsp) /* save RDI */ - movq %rsi, 0xf8(%rsp) /* save RSI */ - movq %rbx, 0x100(%rsp) /* save RBX */ - movq %rbp, 0x108(%rsp) /* save RBP */ - - movq %rcx, 0x110(%rsp) /* save hidden address of transport_t */ - - /* preserve RSP (pointing to context-data) in R9 */ - movq %rsp, %r9 - - /* restore RSP (pointing to context-data) from RDX */ - movq %rdx, %rsp - -#if !defined(BOOST_USE_TSX) - /* restore XMM storage */ - movaps 0x0(%rsp), %xmm6 - movaps 0x10(%rsp), %xmm7 - movaps 0x20(%rsp), %xmm8 - movaps 0x30(%rsp), %xmm9 - movaps 0x40(%rsp), %xmm10 - movaps 0x50(%rsp), %xmm11 - movaps 0x60(%rsp), %xmm12 - movaps 0x70(%rsp), %xmm13 - movaps 0x80(%rsp), %xmm14 - movaps 0x90(%rsp), %xmm15 - ldmxcsr 0xa0(%rsp) /* restore MMX control- and status-word */ - fldcw 0xa4(%rsp) /* restore x87 control-word */ -#endif - - /* load NT_TIB */ - movq %gs:(0x30), %r10 - /* restore fiber local storage */ - movq 0xb0(%rsp), %rax - movq %rax, 0x20(%r10) - /* restore current deallocation stack */ - movq 0xb8(%rsp), %rax - movq %rax, 0x1478(%r10) - /* restore current stack limit */ - movq 0xc0(%rsp), %rax - movq %rax, 0x10(%r10) - /* restore current stack base */ - movq 0xc8(%rsp), %rax - movq %rax, 0x08(%r10) - - movq 0xd0(%rsp), %r12 /* restore R12 */ - movq 0xd8(%rsp), %r13 /* restore R13 */ - movq 0xe0(%rsp), %r14 /* restore R14 */ - movq 0xe8(%rsp), %r15 /* restore R15 */ - movq 0xf0(%rsp), %rdi /* restore RDI */ - movq 0xf8(%rsp), %rsi /* restore RSI */ - movq 0x100(%rsp), %rbx /* restore RBX */ - movq 0x108(%rsp), %rbp /* restore RBP */ - - movq 0x110(%rsp), %rax /* restore hidden address of transport_t */ - - leaq 0x118(%rsp), %rsp /* prepare stack */ - - /* restore return-address */ - popq %r10 - - /* transport_t returned in RAX */ - /* return parent fcontext_t */ - movq %r9, 0x0(%rax) - /* return data */ - movq %r8, 0x8(%rax) - - /* transport_t as 1.arg of context-function */ - movq %rax, %rcx - - /* indirect jump to context */ - jmp *%r10 -.seh_endproc - -.section .drectve -.ascii " -export:\"jump_fcontext\"" diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_masm.asm b/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_masm.asm deleted file mode 100644 index c8a28a558e..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_masm.asm +++ /dev/null @@ -1,205 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; ---------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; ---------------------------------------------------------------------------------- -; | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; ---------------------------------------------------------------------------------- -; | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -; ---------------------------------------------------------------------------------- -; | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -; ---------------------------------------------------------------------------------- -; | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -; ---------------------------------------------------------------------------------- -; | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -; ---------------------------------------------------------------------------------- -; | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | -; ---------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -; ---------------------------------------------------------------------------------- -; | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | -; ---------------------------------------------------------------------------------- -; | limit | base | R12 | R13 | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -; ---------------------------------------------------------------------------------- -; | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | -; ---------------------------------------------------------------------------------- -; | R14 | R15 | RDI | RSI | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -; ---------------------------------------------------------------------------------- -; | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | -; ---------------------------------------------------------------------------------- -; | RBX | RBP | hidden | RIP | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -; ---------------------------------------------------------------------------------- -; | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | -; ---------------------------------------------------------------------------------- -; | parameter area | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -; ---------------------------------------------------------------------------------- -; | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | -; ---------------------------------------------------------------------------------- -; | FCTX | DATA | | -; ---------------------------------------------------------------------------------- - -.code - -jump_fcontext PROC BOOST_CONTEXT_EXPORT FRAME - .endprolog - - ; prepare stack - lea rsp, [rsp-0118h] - -IFNDEF BOOST_USE_TSX - ; save XMM storage - movaps [rsp], xmm6 - movaps [rsp+010h], xmm7 - movaps [rsp+020h], xmm8 - movaps [rsp+030h], xmm9 - movaps [rsp+040h], xmm10 - movaps [rsp+050h], xmm11 - movaps [rsp+060h], xmm12 - movaps [rsp+070h], xmm13 - movaps [rsp+080h], xmm14 - movaps [rsp+090h], xmm15 - ; save MMX control- and status-word - stmxcsr [rsp+0a0h] - ; save x87 control-word - fnstcw [rsp+0a4h] -ENDIF - - ; load NT_TIB - mov r10, gs:[030h] - ; save fiber local storage - mov rax, [r10+020h] - mov [rsp+0b0h], rax - ; save current deallocation stack - mov rax, [r10+01478h] - mov [rsp+0b8h], rax - ; save current stack limit - mov rax, [r10+010h] - mov [rsp+0c0h], rax - ; save current stack base - mov rax, [r10+08h] - mov [rsp+0c8h], rax - - mov [rsp+0d0h], r12 ; save R12 - mov [rsp+0d8h], r13 ; save R13 - mov [rsp+0e0h], r14 ; save R14 - mov [rsp+0e8h], r15 ; save R15 - mov [rsp+0f0h], rdi ; save RDI - mov [rsp+0f8h], rsi ; save RSI - mov [rsp+0100h], rbx ; save RBX - mov [rsp+0108h], rbp ; save RBP - - mov [rsp+0110h], rcx ; save hidden address of transport_t - - ; preserve RSP (pointing to context-data) in R9 - mov r9, rsp - - ; restore RSP (pointing to context-data) from RDX - mov rsp, rdx - -IFNDEF BOOST_USE_TSX - ; restore XMM storage - movaps xmm6, [rsp] - movaps xmm7, [rsp+010h] - movaps xmm8, [rsp+020h] - movaps xmm9, [rsp+030h] - movaps xmm10, [rsp+040h] - movaps xmm11, [rsp+050h] - movaps xmm12, [rsp+060h] - movaps xmm13, [rsp+070h] - movaps xmm14, [rsp+080h] - movaps xmm15, [rsp+090h] - ; restore MMX control- and status-word - ldmxcsr [rsp+0a0h] - ; save x87 control-word - fldcw [rsp+0a4h] -ENDIF - - ; load NT_TIB - mov r10, gs:[030h] - ; restore fiber local storage - mov rax, [rsp+0b0h] - mov [r10+020h], rax - ; restore current deallocation stack - mov rax, [rsp+0b8h] - mov [r10+01478h], rax - ; restore current stack limit - mov rax, [rsp+0c0h] - mov [r10+010h], rax - ; restore current stack base - mov rax, [rsp+0c8h] - mov [r10+08h], rax - - mov r12, [rsp+0d0h] ; restore R12 - mov r13, [rsp+0d8h] ; restore R13 - mov r14, [rsp+0e0h] ; restore R14 - mov r15, [rsp+0e8h] ; restore R15 - mov rdi, [rsp+0f0h] ; restore RDI - mov rsi, [rsp+0f8h] ; restore RSI - mov rbx, [rsp+0100h] ; restore RBX - mov rbp, [rsp+0108h] ; restore RBP - - mov rax, [rsp+0110h] ; restore hidden address of transport_t - - ; prepare stack - lea rsp, [rsp+0118h] - - ; load return-address - pop r10 - - ; transport_t returned in RAX - ; return parent fcontext_t - mov [rax], r9 - ; return data - mov [rax+08h], r8 - - ; transport_t as 1.arg of context-function - mov rcx, rax - - ; indirect jump to context - jmp r10 -jump_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_masm.masm b/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_masm.masm deleted file mode 100644 index c8a28a558e..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/jump_x86_64_ms_pe_masm.masm +++ /dev/null @@ -1,205 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; ---------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; ---------------------------------------------------------------------------------- -; | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; ---------------------------------------------------------------------------------- -; | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -; ---------------------------------------------------------------------------------- -; | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -; ---------------------------------------------------------------------------------- -; | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -; ---------------------------------------------------------------------------------- -; | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -; ---------------------------------------------------------------------------------- -; | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | -; ---------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -; ---------------------------------------------------------------------------------- -; | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | -; ---------------------------------------------------------------------------------- -; | limit | base | R12 | R13 | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -; ---------------------------------------------------------------------------------- -; | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | -; ---------------------------------------------------------------------------------- -; | R14 | R15 | RDI | RSI | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -; ---------------------------------------------------------------------------------- -; | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | -; ---------------------------------------------------------------------------------- -; | RBX | RBP | hidden | RIP | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -; ---------------------------------------------------------------------------------- -; | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | -; ---------------------------------------------------------------------------------- -; | parameter area | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -; ---------------------------------------------------------------------------------- -; | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | -; ---------------------------------------------------------------------------------- -; | FCTX | DATA | | -; ---------------------------------------------------------------------------------- - -.code - -jump_fcontext PROC BOOST_CONTEXT_EXPORT FRAME - .endprolog - - ; prepare stack - lea rsp, [rsp-0118h] - -IFNDEF BOOST_USE_TSX - ; save XMM storage - movaps [rsp], xmm6 - movaps [rsp+010h], xmm7 - movaps [rsp+020h], xmm8 - movaps [rsp+030h], xmm9 - movaps [rsp+040h], xmm10 - movaps [rsp+050h], xmm11 - movaps [rsp+060h], xmm12 - movaps [rsp+070h], xmm13 - movaps [rsp+080h], xmm14 - movaps [rsp+090h], xmm15 - ; save MMX control- and status-word - stmxcsr [rsp+0a0h] - ; save x87 control-word - fnstcw [rsp+0a4h] -ENDIF - - ; load NT_TIB - mov r10, gs:[030h] - ; save fiber local storage - mov rax, [r10+020h] - mov [rsp+0b0h], rax - ; save current deallocation stack - mov rax, [r10+01478h] - mov [rsp+0b8h], rax - ; save current stack limit - mov rax, [r10+010h] - mov [rsp+0c0h], rax - ; save current stack base - mov rax, [r10+08h] - mov [rsp+0c8h], rax - - mov [rsp+0d0h], r12 ; save R12 - mov [rsp+0d8h], r13 ; save R13 - mov [rsp+0e0h], r14 ; save R14 - mov [rsp+0e8h], r15 ; save R15 - mov [rsp+0f0h], rdi ; save RDI - mov [rsp+0f8h], rsi ; save RSI - mov [rsp+0100h], rbx ; save RBX - mov [rsp+0108h], rbp ; save RBP - - mov [rsp+0110h], rcx ; save hidden address of transport_t - - ; preserve RSP (pointing to context-data) in R9 - mov r9, rsp - - ; restore RSP (pointing to context-data) from RDX - mov rsp, rdx - -IFNDEF BOOST_USE_TSX - ; restore XMM storage - movaps xmm6, [rsp] - movaps xmm7, [rsp+010h] - movaps xmm8, [rsp+020h] - movaps xmm9, [rsp+030h] - movaps xmm10, [rsp+040h] - movaps xmm11, [rsp+050h] - movaps xmm12, [rsp+060h] - movaps xmm13, [rsp+070h] - movaps xmm14, [rsp+080h] - movaps xmm15, [rsp+090h] - ; restore MMX control- and status-word - ldmxcsr [rsp+0a0h] - ; save x87 control-word - fldcw [rsp+0a4h] -ENDIF - - ; load NT_TIB - mov r10, gs:[030h] - ; restore fiber local storage - mov rax, [rsp+0b0h] - mov [r10+020h], rax - ; restore current deallocation stack - mov rax, [rsp+0b8h] - mov [r10+01478h], rax - ; restore current stack limit - mov rax, [rsp+0c0h] - mov [r10+010h], rax - ; restore current stack base - mov rax, [rsp+0c8h] - mov [r10+08h], rax - - mov r12, [rsp+0d0h] ; restore R12 - mov r13, [rsp+0d8h] ; restore R13 - mov r14, [rsp+0e0h] ; restore R14 - mov r15, [rsp+0e8h] ; restore R15 - mov rdi, [rsp+0f0h] ; restore RDI - mov rsi, [rsp+0f8h] ; restore RSI - mov rbx, [rsp+0100h] ; restore RBX - mov rbp, [rsp+0108h] ; restore RBP - - mov rax, [rsp+0110h] ; restore hidden address of transport_t - - ; prepare stack - lea rsp, [rsp+0118h] - - ; load return-address - pop r10 - - ; transport_t returned in RAX - ; return parent fcontext_t - mov [rax], r9 - ; return data - mov [rax+08h], r8 - - ; transport_t as 1.arg of context-function - mov rcx, rax - - ; indirect jump to context - jmp r10 -jump_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/make_arm64_aapcs_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_arm64_aapcs_elf_gas.S deleted file mode 100644 index c1fa84387d..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_arm64_aapcs_elf_gas.S +++ /dev/null @@ -1,84 +0,0 @@ -/* - Copyright Edward Nevill + Oliver Kowalke 2015 - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | d8 | d9 | d10 | d11 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | d12 | d13 | d14 | d15 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * | x19 | x20 | x21 | x22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | x23 | x24 | x25 | x26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * - * ------------------------------------------------- * - * | x27 | x28 | FP | LR | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | | | * - * ------------------------------------------------- * - * | 0xa0| 0xa4| 0xa8| 0xac| | | * - * ------------------------------------------------- * - * | PC | align | | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.align 2 -.global make_fcontext -.type make_fcontext, %function -make_fcontext: - # shift address in x0 (allocated stack) to lower 16 byte boundary - and x0, x0, ~0xF - - # reserve space for context-data on context-stack - sub x0, x0, #0xb0 - - # third arg of make_fcontext() == address of context-function - # store address as a PC to jump in - str x2, [x0, #0xa0] - - # save address of finish as return-address for context-function - # will be entered after context-function returns (LR register) - adr x1, finish - str x1, [x0, #0x98] - - ret x30 // return pointer to context-data (x0) - -finish: - # exit code is zero - mov x0, #0 - # exit application - bl _exit - -.size make_fcontext,.-make_fcontext -# Mark that we don't need executable stack. -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/make_arm64_aapcs_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_arm64_aapcs_macho_gas.S deleted file mode 100644 index a3716ff085..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_arm64_aapcs_macho_gas.S +++ /dev/null @@ -1,88 +0,0 @@ -/* - Copyright Edward Nevill + Oliver Kowalke 2015 - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | d8 | d9 | d10 | d11 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | d12 | d13 | d14 | d15 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * | x19 | x20 | x21 | x22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | x23 | x24 | x25 | x26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * - * ------------------------------------------------- * - * | x27 | x28 | FP | LR | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | | | * - * ------------------------------------------------- * - * | 0xa0| 0xa4| 0xa8| 0xac| | | * - * ------------------------------------------------- * - * | PC | align | | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl _make_fcontext -.balign 16 - -_make_fcontext: - ; shift address in x0 (allocated stack) to lower 16 byte boundary - and x0, x0, ~0xF - - ; reserve space for context-data on context-stack - sub x0, x0, #0xb0 - - ; third arg of make_fcontext() == address of context-function - ; store address as a PC to jump in - str x2, [x0, #0xa0] - - ; compute abs address of label finish - ; 0x0c = 3 instructions * size (4) before label 'finish' - - ; TODO: Numeric offset since llvm still does not support labels in ADR. Fix: - ; http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20140407/212336.html - adr x1, 0x0c - - ; save address of finish as return-address for context-function - ; will be entered after context-function returns (LR register) - str x1, [x0, #0x98] - - ret lr ; return pointer to context-data (x0) - -finish: - ; exit code is zero - mov x0, #0 - ; exit application - bl __exit - - diff --git a/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_elf_gas.S deleted file mode 100644 index 98819a2a5f..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_elf_gas.S +++ /dev/null @@ -1,79 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | s16 | s17 | s18 | s19 | s20 | s21 | s22 | s23 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | s24 | s25 | s26 | s27 | s28 | s29 | s30 | s31 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * |hiddn| v1 | v2 | v3 | v4 | v5 | v6 | v7 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | v8 | lr | pc | FCTX| DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl make_fcontext -.align 2 -.type make_fcontext,%function -make_fcontext: - @ shift address in A1 to lower 16 byte boundary - bic a1, a1, #15 - - @ reserve space for context-data on context-stack - sub a1, a1, #124 - - @ third arg of make_fcontext() == address of context-function - str a3, [a1, #104] - - @ compute address of returned transfer_t - add a2, a1, #108 - mov a3, a2 - str a3, [a1, #64] - - @ compute abs address of label finish - adr a2, finish - @ save address of finish as return-address for context-function - @ will be entered after context-function returns - str a2, [a1, #100] - -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) -#endif - - bx lr @ return pointer to context-data - -finish: - @ exit code is zero - mov a1, #0 - @ exit application - bl _exit@PLT -.size make_fcontext,.-make_fcontext - -@ Mark that we don't need executable stack. -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_macho_gas.S deleted file mode 100644 index c909ae9d43..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_macho_gas.S +++ /dev/null @@ -1,71 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | s16 | s17 | s18 | s19 | s20 | s21 | s22 | s23 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | s24 | s25 | s26 | s27 | s28 | s29 | s30 | s31 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | sjlj|hiddn| v1 | v2 | v3 | v4 | v5 | v6 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | v7 | v8 | lr | pc | FCTX| DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl _make_fcontext -.align 2 -_make_fcontext: - @ shift address in A1 to lower 16 byte boundary - bic a1, a1, #15 - - @ reserve space for context-data on context-stack - sub a1, a1, #124 - - @ third arg of make_fcontext() == address of context-function - str a3, [a1, #108] - - @ compute address of returned transfer_t - add a2, a1, #112 - mov a3, a2 - str a3, [a1, #68] - - @ compute abs address of label finish - adr a2, finish - @ save address of finish as return-address for context-function - @ will be entered after context-function returns - str a2, [a1, #104] - - bx lr @ return pointer to context-data - -finish: - @ exit code is zero - mov a1, #0 - @ exit application - bl __exit diff --git a/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_pe_armasm.asm b/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_pe_armasm.asm deleted file mode 100644 index 27cbfb0825..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_pe_armasm.asm +++ /dev/null @@ -1,77 +0,0 @@ -;/* -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) -;*/ - -; ******************************************************* -; * * -; * ------------------------------------------------- * -; * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -; * ------------------------------------------------- * -; * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * -; * ------------------------------------------------- * -; * |deall|limit| base|hiddn| v1 | v2 | v3 | v4 | * -; * ------------------------------------------------- * -; * ------------------------------------------------- * -; * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -; * ------------------------------------------------- * -; * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * -; * ------------------------------------------------- * -; * | v5 | v6 | v7 | v8 | lr | pc | FCTX| DATA| * -; * ------------------------------------------------- * -; * * -; ******************************************************* - - - AREA |.text|, CODE - ALIGN 4 - EXPORT make_fcontext - IMPORT _exit - -make_fcontext PROC - ; first arg of make_fcontext() == top of context-stack - ; save top of context-stack (base) A4 - mov a4, a1 - - ; shift address in A1 to lower 16 byte boundary - bic a1, a1, #0x0f - - ; reserve space for context-data on context-stack - sub a1, a1, #0x48 - - ; save top address of context_stack as 'base' - str a4, [a1, #0x8] - ; second arg of make_fcontext() == size of context-stack - ; compute bottom address of context-stack (limit) - sub a4, a4, a2 - ; save bottom address of context-stack as 'limit' - str a4, [a1, #0x4] - ; save bottom address of context-stack as 'dealloction stack' - str a4, [a1, #0x0] - - ; third arg of make_fcontext() == address of context-function - str a3, [a1, #0x34] - - ; compute address of returned transfer_t - add a2, a1, #0x38 - mov a3, a2 - str a3, [a1, #0xc] - - ; compute abs address of label finish - adr a2, finish - ; save address of finish as return-address for context-function - ; will be entered after context-function returns - str a2, [a1, #0x30] - - bx lr ; return pointer to context-data - -finish - ; exit code is zero - mov a1, #0 - ; exit application - bl _exit - - ENDP - END diff --git a/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_pe_armasm.masm b/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_pe_armasm.masm deleted file mode 100644 index 27cbfb0825..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_arm_aapcs_pe_armasm.masm +++ /dev/null @@ -1,77 +0,0 @@ -;/* -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) -;*/ - -; ******************************************************* -; * * -; * ------------------------------------------------- * -; * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -; * ------------------------------------------------- * -; * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * -; * ------------------------------------------------- * -; * |deall|limit| base|hiddn| v1 | v2 | v3 | v4 | * -; * ------------------------------------------------- * -; * ------------------------------------------------- * -; * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -; * ------------------------------------------------- * -; * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * -; * ------------------------------------------------- * -; * | v5 | v6 | v7 | v8 | lr | pc | FCTX| DATA| * -; * ------------------------------------------------- * -; * * -; ******************************************************* - - - AREA |.text|, CODE - ALIGN 4 - EXPORT make_fcontext - IMPORT _exit - -make_fcontext PROC - ; first arg of make_fcontext() == top of context-stack - ; save top of context-stack (base) A4 - mov a4, a1 - - ; shift address in A1 to lower 16 byte boundary - bic a1, a1, #0x0f - - ; reserve space for context-data on context-stack - sub a1, a1, #0x48 - - ; save top address of context_stack as 'base' - str a4, [a1, #0x8] - ; second arg of make_fcontext() == size of context-stack - ; compute bottom address of context-stack (limit) - sub a4, a4, a2 - ; save bottom address of context-stack as 'limit' - str a4, [a1, #0x4] - ; save bottom address of context-stack as 'dealloction stack' - str a4, [a1, #0x0] - - ; third arg of make_fcontext() == address of context-function - str a3, [a1, #0x34] - - ; compute address of returned transfer_t - add a2, a1, #0x38 - mov a3, a2 - str a3, [a1, #0xc] - - ; compute abs address of label finish - adr a2, finish - ; save address of finish as return-address for context-function - ; will be entered after context-function returns - str a2, [a1, #0x30] - - bx lr ; return pointer to context-data - -finish - ; exit code is zero - mov a1, #0 - ; exit application - bl _exit - - ENDP - END diff --git a/contrib/restricted/boost/libs/context/src/asm/make_combined_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_combined_sysv_macho_gas.S deleted file mode 100644 index 727e9045fc..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_combined_sysv_macho_gas.S +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__i386__) - #include "make_i386_sysv_macho_gas.S" -#elif defined(__x86_64__) - #include "make_x86_64_sysv_macho_gas.S" -#elif defined(__ppc__) - #include "make_ppc32_sysv_macho_gas.S" -#elif defined(__ppc64__) - #include "make_ppc64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_gas.asm b/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_gas.asm deleted file mode 100644 index dcb77000fa..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_gas.asm +++ /dev/null @@ -1,147 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Copyright Thomas Sailer 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/************************************************************************************* -* --------------------------------------------------------------------------------- * -* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -* --------------------------------------------------------------------------------- * -* | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | * -* --------------------------------------------------------------------------------- * -* | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | * -* --------------------------------------------------------------------------------- * -* --------------------------------------------------------------------------------- * -* | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -* --------------------------------------------------------------------------------- * -* | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | * -* --------------------------------------------------------------------------------- * -* | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| * -* --------------------------------------------------------------------------------- * -**************************************************************************************/ - -.file "make_i386_ms_pe_gas.asm" -.text -.p2align 4,,15 -.globl _make_fcontext -.def _make_fcontext; .scl 2; .type 32; .endef -_make_fcontext: - /* first arg of make_fcontext() == top of context-stack */ - movl 0x04(%esp), %eax - - /* reserve space for first argument of context-function */ - /* EAX might already point to a 16byte border */ - leal -0x8(%eax), %eax - - /* shift address in EAX to lower 16 byte boundary */ - andl $-16, %eax - - /* reserve space for context-data on context-stack */ - /* size for fc_mxcsr .. EIP + return-address for context-function */ - /* on context-function entry: (ESP -0x4) % 8 == 0 */ - /* additional space is required for SEH */ - leal -0x40(%eax), %eax - - /* save MMX control- and status-word */ - stmxcsr (%eax) - /* save x87 control-word */ - fnstcw 0x4(%eax) - - /* first arg of make_fcontext() == top of context-stack */ - movl 0x4(%esp), %ecx - /* save top address of context stack as 'base' */ - movl %ecx, 0x14(%eax) - /* second arg of make_fcontext() == size of context-stack */ - movl 0x8(%esp), %edx - /* negate stack size for LEA instruction (== substraction) */ - negl %edx - /* compute bottom address of context stack (limit) */ - leal (%ecx,%edx), %ecx - /* save bottom address of context-stack as 'limit' */ - movl %ecx, 0x10(%eax) - /* save bottom address of context-stack as 'dealloction stack' */ - movl %ecx, 0xc(%eax) - /* set fiber-storage to zero */ - xorl %ecx, %ecx - movl %ecx, 0x8(%eax) - - /* third arg of make_fcontext() == address of context-function */ - /* stored in EBX */ - movl 0xc(%esp), %ecx - movl %ecx, 0x24(%eax) - - /* compute abs address of label trampoline */ - movl $trampoline, %ecx - /* save address of trampoline as return-address for context-function */ - /* will be entered after calling jump_fcontext() first time */ - movl %ecx, 0x2c(%eax) - - /* compute abs address of label finish */ - movl $finish, %ecx - /* save address of finish as return-address for context-function */ - /* will be entered after context-function returns */ - movl %ecx, 0x28(%eax) - - /* traverse current seh chain to get the last exception handler installed by Windows */ - /* note that on Windows Server 2008 and 2008 R2, SEHOP is activated by default */ - /* the exception handler chain is tested for the presence of ntdll.dll!FinalExceptionHandler */ - /* at its end by RaiseException all seh andlers are disregarded if not present and the */ - /* program is aborted */ - /* load NT_TIB into ECX */ - movl %fs:(0x0), %ecx - -walk: - /* load 'next' member of current SEH into EDX */ - movl (%ecx), %edx - /* test if 'next' of current SEH is last (== 0xffffffff) */ - incl %edx - jz found - decl %edx - /* exchange content; ECX contains address of next SEH */ - xchgl %ecx, %edx - /* inspect next SEH */ - jmp walk - -found: - /* load 'handler' member of SEH == address of last SEH handler installed by Windows */ - movl 0x04(%ecx), %ecx - /* save address in ECX as SEH handler for context */ - movl %ecx, 0x3c(%eax) - /* set ECX to -1 */ - movl $0xffffffff, %ecx - /* save ECX as next SEH item */ - movl %ecx, 0x38(%eax) - /* load address of next SEH item */ - leal 0x38(%eax), %ecx - /* save next SEH */ - movl %ecx, 0x18(%eax) - - /* return pointer to context-data */ - ret - -trampoline: - /* move transport_t for entering context-function */ - /* FCTX == EAX, DATA == EDX */ - movl %eax, (%esp) - movl %edx, 0x4(%esp) - /* label finish as return-address */ - pushl %ebp - /* jump to context-function */ - jmp *%ebx - -finish: - /* ESP points to same address as ESP on entry of context function + 0x4 */ - xorl %eax, %eax - /* exit code is zero */ - movl %eax, (%esp) - /* exit application */ - call __exit - hlt - -.def __exit; .scl 2; .type 32; .endef /* standard C library function */ - -.section .drectve -.ascii " -export:\"make_fcontext\"" diff --git a/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_masm.asm b/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_masm.asm deleted file mode 100644 index 5246465cb9..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_masm.asm +++ /dev/null @@ -1,140 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; --------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; --------------------------------------------------------------------------------- -; | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | -; --------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | -; --------------------------------------------------------------------------------- -; --------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; --------------------------------------------------------------------------------- -; | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | -; --------------------------------------------------------------------------------- -; | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| -; --------------------------------------------------------------------------------- - -.386 -.XMM -.model flat, c -; standard C library function -_exit PROTO, value:SDWORD -.code - -make_fcontext PROC BOOST_CONTEXT_EXPORT - ; first arg of make_fcontext() == top of context-stack - mov eax, [esp+04h] - - ; reserve space for first argument of context-function - ; EAX might already point to a 16byte border - lea eax, [eax-08h] - - ; shift address in EAX to lower 16 byte boundary - and eax, -16 - - ; reserve space for context-data on context-stack - ; on context-function entry: (ESP -0x4) % 8 == 0 - ; additional space is required for SEH - lea eax, [eax-040h] - - ; save MMX control- and status-word - stmxcsr [eax] - ; save x87 control-word - fnstcw [eax+04h] - - ; first arg of make_fcontext() == top of context-stack - mov ecx, [esp+04h] - ; save top address of context stack as 'base' - mov [eax+014h], ecx - ; second arg of make_fcontext() == size of context-stack - mov edx, [esp+08h] - ; negate stack size for LEA instruction (== substraction) - neg edx - ; compute bottom address of context stack (limit) - lea ecx, [ecx+edx] - ; save bottom address of context-stack as 'limit' - mov [eax+010h], ecx - ; save bottom address of context-stack as 'dealloction stack' - mov [eax+0ch], ecx - ; set fiber-storage to zero - xor ecx, ecx - mov [eax+08h], ecx - - ; third arg of make_fcontext() == address of context-function - ; stored in EBX - mov ecx, [esp+0ch] - mov [eax+024h], ecx - - ; compute abs address of label trampoline - mov ecx, trampoline - ; save address of trampoline as return-address for context-function - ; will be entered after calling jump_fcontext() first time - mov [eax+02ch], ecx - - ; compute abs address of label finish - mov ecx, finish - ; save address of finish as return-address for context-function in EBP - ; will be entered after context-function returns - mov [eax+028h], ecx - - ; traverse current seh chain to get the last exception handler installed by Windows - ; note that on Windows Server 2008 and 2008 R2, SEHOP is activated by default - ; the exception handler chain is tested for the presence of ntdll.dll!FinalExceptionHandler - ; at its end by RaiseException all seh-handlers are disregarded if not present and the - ; program is aborted - assume fs:nothing - ; load NT_TIB into ECX - mov ecx, fs:[0h] - assume fs:error - -walk: - ; load 'next' member of current SEH into EDX - mov edx, [ecx] - ; test if 'next' of current SEH is last (== 0xffffffff) - inc edx - jz found - dec edx - ; exchange content; ECX contains address of next SEH - xchg edx, ecx - ; inspect next SEH - jmp walk - -found: - ; load 'handler' member of SEH == address of last SEH handler installed by Windows - mov ecx, [ecx+04h] - ; save address in ECX as SEH handler for context - mov [eax+03ch], ecx - ; set ECX to -1 - mov ecx, 0ffffffffh - ; save ECX as next SEH item - mov [eax+038h], ecx - ; load address of next SEH item - lea ecx, [eax+038h] - ; save next SEH - mov [eax+018h], ecx - - ret ; return pointer to context-data - -trampoline: - ; move transport_t for entering context-function - ; FCTX == EAX, DATA == EDX - mov [esp], eax - mov [esp+04h], edx - push ebp - ; jump to context-function - jmp ebx - -finish: - ; exit code is zero - xor eax, eax - mov [esp], eax - ; exit application - call _exit - hlt -make_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_masm.masm b/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_masm.masm deleted file mode 100644 index 5246465cb9..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_i386_ms_pe_masm.masm +++ /dev/null @@ -1,140 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; --------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; --------------------------------------------------------------------------------- -; | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | -; --------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | -; --------------------------------------------------------------------------------- -; --------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; --------------------------------------------------------------------------------- -; | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | -; --------------------------------------------------------------------------------- -; | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| -; --------------------------------------------------------------------------------- - -.386 -.XMM -.model flat, c -; standard C library function -_exit PROTO, value:SDWORD -.code - -make_fcontext PROC BOOST_CONTEXT_EXPORT - ; first arg of make_fcontext() == top of context-stack - mov eax, [esp+04h] - - ; reserve space for first argument of context-function - ; EAX might already point to a 16byte border - lea eax, [eax-08h] - - ; shift address in EAX to lower 16 byte boundary - and eax, -16 - - ; reserve space for context-data on context-stack - ; on context-function entry: (ESP -0x4) % 8 == 0 - ; additional space is required for SEH - lea eax, [eax-040h] - - ; save MMX control- and status-word - stmxcsr [eax] - ; save x87 control-word - fnstcw [eax+04h] - - ; first arg of make_fcontext() == top of context-stack - mov ecx, [esp+04h] - ; save top address of context stack as 'base' - mov [eax+014h], ecx - ; second arg of make_fcontext() == size of context-stack - mov edx, [esp+08h] - ; negate stack size for LEA instruction (== substraction) - neg edx - ; compute bottom address of context stack (limit) - lea ecx, [ecx+edx] - ; save bottom address of context-stack as 'limit' - mov [eax+010h], ecx - ; save bottom address of context-stack as 'dealloction stack' - mov [eax+0ch], ecx - ; set fiber-storage to zero - xor ecx, ecx - mov [eax+08h], ecx - - ; third arg of make_fcontext() == address of context-function - ; stored in EBX - mov ecx, [esp+0ch] - mov [eax+024h], ecx - - ; compute abs address of label trampoline - mov ecx, trampoline - ; save address of trampoline as return-address for context-function - ; will be entered after calling jump_fcontext() first time - mov [eax+02ch], ecx - - ; compute abs address of label finish - mov ecx, finish - ; save address of finish as return-address for context-function in EBP - ; will be entered after context-function returns - mov [eax+028h], ecx - - ; traverse current seh chain to get the last exception handler installed by Windows - ; note that on Windows Server 2008 and 2008 R2, SEHOP is activated by default - ; the exception handler chain is tested for the presence of ntdll.dll!FinalExceptionHandler - ; at its end by RaiseException all seh-handlers are disregarded if not present and the - ; program is aborted - assume fs:nothing - ; load NT_TIB into ECX - mov ecx, fs:[0h] - assume fs:error - -walk: - ; load 'next' member of current SEH into EDX - mov edx, [ecx] - ; test if 'next' of current SEH is last (== 0xffffffff) - inc edx - jz found - dec edx - ; exchange content; ECX contains address of next SEH - xchg edx, ecx - ; inspect next SEH - jmp walk - -found: - ; load 'handler' member of SEH == address of last SEH handler installed by Windows - mov ecx, [ecx+04h] - ; save address in ECX as SEH handler for context - mov [eax+03ch], ecx - ; set ECX to -1 - mov ecx, 0ffffffffh - ; save ECX as next SEH item - mov [eax+038h], ecx - ; load address of next SEH item - lea ecx, [eax+038h] - ; save next SEH - mov [eax+018h], ecx - - ret ; return pointer to context-data - -trampoline: - ; move transport_t for entering context-function - ; FCTX == EAX, DATA == EDX - mov [esp], eax - mov [esp+04h], edx - push ebp - ; jump to context-function - jmp ebx - -finish: - ; exit code is zero - xor eax, eax - mov [esp], eax - ; exit application - call _exit - hlt -make_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/make_i386_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_i386_sysv_elf_gas.S deleted file mode 100644 index 3ad353cfa2..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_i386_sysv_elf_gas.S +++ /dev/null @@ -1,112 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/**************************************************************************************** - * * - * ---------------------------------------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ---------------------------------------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * - * ---------------------------------------------------------------------------------- * - * | fc_mxcsr|fc_x87_cw| guard | EDI | ESI | EBX | EBP | EIP | * - * ---------------------------------------------------------------------------------- * - * ---------------------------------------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ---------------------------------------------------------------------------------- * - * | 0x20 | 0x24 | 0x28 | | * - * ---------------------------------------------------------------------------------- * - * | hidden | to | data | | * - * ---------------------------------------------------------------------------------- * - * * - ****************************************************************************************/ - -.text -.globl make_fcontext -.align 2 -.type make_fcontext,@function -make_fcontext: - /* first arg of make_fcontext() == top of context-stack */ - movl 0x4(%esp), %eax - - /* reserve space for first argument of context-function - eax might already point to a 16byte border */ - leal -0x8(%eax), %eax - - /* shift address in EAX to lower 16 byte boundary */ - andl $-16, %eax - - /* reserve space for context-data on context-stack */ - leal -0x2c(%eax), %eax - - /* third arg of make_fcontext() == address of context-function */ - /* stored in EBX */ - movl 0xc(%esp), %ecx - movl %ecx, 0x14(%eax) - - /* save MMX control- and status-word */ - stmxcsr (%eax) - /* save x87 control-word */ - fnstcw 0x4(%eax) - -#if defined(TLS_STACK_PROTECTOR) - /* save stack guard */ - movl %gs:0x14, %ecx /* read stack guard from TLS record */ - movl %ecx, 0x8(%eax) /* save stack guard */ -#endif - - /* return transport_t */ - /* FCTX == EDI, DATA == ESI */ - leal 0xc(%eax), %ecx - movl %ecx, 0x20(%eax) - - /* compute abs address of label trampoline */ - call 1f - /* address of trampoline 1 */ -1: popl %ecx - /* compute abs address of label trampoline */ - addl $trampoline-1b, %ecx - /* save address of trampoline as return address */ - /* will be entered after calling jump_fcontext() first time */ - movl %ecx, 0x1c(%eax) - - /* compute abs address of label finish */ - call 2f - /* address of label 2 */ -2: popl %ecx - /* compute abs address of label finish */ - addl $finish-2b, %ecx - /* save address of finish as return-address for context-function */ - /* will be entered after context-function returns */ - movl %ecx, 0x18(%eax) - - ret /* return pointer to context-data */ - -trampoline: - /* move transport_t for entering context-function */ - movl %edi, (%esp) - movl %esi, 0x4(%esp) - pushl %ebp - /* jump to context-function */ - jmp *%ebx - -finish: - call 3f - /* address of label 3 */ -3: popl %ebx - /* compute address of GOT and store it in EBX */ - addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx - - /* exit code is zero */ - xorl %eax, %eax - movl %eax, (%esp) - /* exit application */ - call _exit@PLT - hlt -.size make_fcontext,.-make_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/make_i386_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_i386_sysv_macho_gas.S deleted file mode 100644 index fdcdb7c80f..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_i386_sysv_macho_gas.S +++ /dev/null @@ -1,90 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/**************************************************************************************** - * * - * ---------------------------------------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ---------------------------------------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * - * ---------------------------------------------------------------------------------- * - * | fc_mxcsr|fc_x87_cw| EDI | ESI | EBX | EBP | EIP | to | * - * ---------------------------------------------------------------------------------- * - * ---------------------------------------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ---------------------------------------------------------------------------------- * - * | 0x20 | | * - * ---------------------------------------------------------------------------------- * - * | data | | * - * ---------------------------------------------------------------------------------- * - * * - ****************************************************************************************/ - -.text -.globl _make_fcontext -.align 2 -_make_fcontext: - /* first arg of make_fcontext() == top of context-stack */ - movl 0x4(%esp), %eax - - /* reserve space for first argument of context-function - eax might already point to a 16byte border */ - leal -0x8(%eax), %eax - - /* shift address in EAX to lower 16 byte boundary */ - andl $-16, %eax - - /* reserve space for context-data on context-stack */ - leal -0x2c(%eax), %eax - - /* third arg of make_fcontext() == address of context-function */ - /* stored in EBX */ - movl 0xc(%esp), %ecx - movl %ecx, 0x10(%eax) - - /* save MMX control- and status-word */ - stmxcsr (%eax) - /* save x87 control-word */ - fnstcw 0x4(%eax) - - /* compute abs address of label trampoline */ - call 1f - /* address of trampoline 1 */ -1: popl %ecx - /* compute abs address of label trampoline */ - addl $trampoline-1b, %ecx - /* save address of trampoline as return address */ - /* will be entered after calling jump_fcontext() first time */ - movl %ecx, 0x18(%eax) - - /* compute abs address of label finish */ - call 2f - /* address of label 2 */ -2: popl %ecx - /* compute abs address of label finish */ - addl $finish-2b, %ecx - /* save address of finish as return-address for context-function */ - /* will be entered after context-function returns */ - movl %ecx, 0x14(%eax) - - ret /* return pointer to context-data */ - -trampoline: - /* move transport_t for entering context-function */ - movl %eax, (%esp) - movl %edx, 0x4(%esp) - pushl %ebp - /* jump to context-function */ - jmp *%ebx - -finish: - /* exit code is zero */ - xorl %eax, %eax - movl %eax, (%esp) - /* exit application */ - call __exit - hlt diff --git a/contrib/restricted/boost/libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S deleted file mode 100644 index e364b2db62..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_i386_x86_64_sysv_macho_gas.S +++ /dev/null @@ -1,16 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__i386__) - #include "make_i386_sysv_macho_gas.S" -#elif defined(__x86_64__) - #include "make_x86_64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/make_mips32_o32_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_mips32_o32_elf_gas.S deleted file mode 100644 index ff4e78488d..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_mips32_o32_elf_gas.S +++ /dev/null @@ -1,96 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F20 | F22 | F24 | F26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F28 | F30 | S0 | S1 | S2 | S3 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | S4 | S5 | S6 | S7 | FP |hiddn| RA | PC | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | ABI ARGS | GP | FCTX| DATA| | * - * ------------------------------------------------- * - * * - * *****************************************************/ - -.text -.globl make_fcontext -.align 2 -.type make_fcontext,@function -.ent make_fcontext -make_fcontext: -#ifdef __PIC__ -.set noreorder -.cpload $t9 -.set reorder -#endif - # shift address in A0 to lower 16 byte boundary - li $v1, -16 # 0xfffffffffffffff0 - and $v0, $v1, $a0 - - # reserve space for context-data on context-stack - # includes an extra 32 bytes for: - # - 16-byte incoming argument area required by mips ABI used when - # jump_context calls the initial function - # - 4 bytes to save our GP register used in finish - # - 8 bytes to as space for transfer_t returned to finish - # - 4 bytes for alignment - addiu $v0, $v0, -128 - - # third arg of make_fcontext() == address of context-function - sw $a2, 92($v0) - # save global pointer in context-data - sw $gp, 112($v0) - - # compute address of returned transfer_t - addiu $t0, $v0, 116 - sw $t0, 84($v0) - - # compute abs address of label finish - la $t9, finish - # save address of finish as return-address for context-function - # will be entered after context-function returns - sw $t9, 88($v0) - - jr $ra # return pointer to context-data - -finish: - # reload our gp register (needed for la) - lw $gp, 16($sp) - - # call _exit(0) - # the previous function should have left the 16 bytes incoming argument - # area on the stack which we reuse for calling _exit - la $t9, _exit - move $a0, $zero - jr $t9 -.end make_fcontext -.size make_fcontext, .-make_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S deleted file mode 100644 index 52e7220933..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_ppc32_ppc64_sysv_macho_gas.S +++ /dev/null @@ -1,16 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__ppc__) - #include "make_ppc32_sysv_macho_gas.S" -#elif defined(__ppc64__) - #include "make_ppc64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_elf_gas.S deleted file mode 100644 index d009036367..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_elf_gas.S +++ /dev/null @@ -1,142 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl make_fcontext -.align 2 -.type make_fcontext,@function -make_fcontext: - # save return address into R6 - mflr %r6 - - # first arg of make_fcontext() == top address of context-function - # shift address in R3 to lower 16 byte boundary - clrrwi %r3, %r3, 4 - - # reserve space for context-data on context-stack - # including 64 byte of linkage + parameter area (R1 % 16 == 0) - subi %r3, %r3, 336 - - # third arg of make_fcontext() == address of context-function - stw %r5, 240(%r3) - - # set back-chain to zero - li %r0, 0 - stw %r0, 244(%r3) - - mffs %f0 # load FPSCR - stfd %f0, 144(%r3) # save FPSCR - - # compute address of returned transfer_t - addi %r0, %r3, 252 - mr %r4, %r0 - stw %r4, 228(%r3) - - # load LR - mflr %r0 - # jump to label 1 - bl 1f -1: - # load LR into R4 - mflr %r4 - # compute abs address of label finish - addi %r4, %r4, finish - 1b - # restore LR - mtlr %r0 - # save address of finish as return-address for context-function - # will be entered after context-function returns - stw %r4, 236(%r3) - - # restore return address from R6 - mtlr %r6 - - blr # return pointer to context-data - -finish: - # save return address into R0 - mflr %r0 - # save return address on stack, set up stack frame - stw %r0, 4(%r1) - # allocate stack space, R1 % 16 == 0 - stwu %r1, -16(%r1) - - # exit code is zero - li %r3, 0 - # exit application - bl _exit@plt -.size make_fcontext, .-make_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_macho_gas.S deleted file mode 100644 index 8f35eff9ab..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_macho_gas.S +++ /dev/null @@ -1,137 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl _make_fcontext -.align 2 -_make_fcontext: - # save return address into R6 - mflr r6 - - # first arg of make_fcontext() == top address of context-function - # shift address in R3 to lower 16 byte boundary - clrrwi r3, r3, 4 - - # reserve space for context-data on context-stack - # including 64 byte of linkage + parameter area (R1 16 == 0) - subi r3, r3, 336 - - # third arg of make_fcontext() == address of context-function - stw r5, 240(r3) - - # set back-chain to zero - li r0, 0 - stw r0, 244(r3) - - mffs f0 # load FPSCR - stfd f0, 144(r3) # save FPSCR - - # compute address of returned transfer_t - addi r0, r3, 252 - mr r4, r0 - stw r4, 228(r3) - - # load LR - mflr r0 - # jump to label 1 - bl 1f -1: - # load LR into R4 - mflr r4 - # compute abs address of label finish - addi r4, r4, finish - 1b - # restore LR - mtlr r0 - # save address of finish as return-address for context-function - # will be entered after context-function returns - stw r4, 236(r3) - - # restore return address from R6 - mtlr r6 - - blr # return pointer to context-data - -finish: - # save return address into R0 - mflr r0 - # save return address on stack, set up stack frame - stw r0, 4(r1) - # allocate stack space, R1 16 == 0 - stwu r1, -16(r1) - - # exit code is zero - li r3, 0 - # exit application - bl _exit@plt diff --git a/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S deleted file mode 100644 index f257258060..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_ppc32_sysv_xcoff_gas.S +++ /dev/null @@ -1,138 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - .globl make_fcontext[DS] - .globl .make_fcontext[PR] - .align 2 - .csect make_fcontext[DS] -make_fcontext: - .long .make_fcontext[PR] - .csect .make_fcontext[PR], 3 -#.make_fcontext: - # save return address into R6 - mflr 6 - - # first arg of make_fcontext() == top address of context-function - # shift address in R3 to lower 16 byte boundary - clrrwi 3, 3, 4 - - # reserve space for context-data on context-stack - # including 64 byte of linkage + parameter area (R1 % 16 == 0) - subi 3, 3, 336 - - # third arg of make_fcontext() == address of context-function - stw 5, 240(3) - - # set back-chain to zero - li 0, 0 - stw 0, 244(3) - - # compute address of returned transfer_t - addi 0, 3, 252 - mr 4, 0 - stw 4, 228(3) - - # load LR - mflr 0 - # jump to label 1 - bl .Label -.Label: - # load LR into R4 - mflr 4 - # compute abs address of label .L_finish - addi 4, 4, .L_finish - .Label - # restore LR - mtlr 0 - # save address of finish as return-address for context-function - # will be entered after context-function returns - stw 4, 236(3) - - # restore return address from R6 - mtlr 6 - - blr # return pointer to context-data - -.L_finish: - # save return address into R0 - mflr 0 - # save return address on stack, set up stack frame - stw 0, 4(1) - # allocate stack space, R1 % 16 == 0 - stwu 1, -16(1) - - # exit code is zero - li 3, 0 - # exit application - bl ._exit - nop diff --git a/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_elf_gas.S deleted file mode 100644 index 28188dfc8c..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_elf_gas.S +++ /dev/null @@ -1,176 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | TOC | R14 | R15 | R16 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | R17 | R18 | R19 | R20 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | R21 | R22 | R23 | R24 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | R25 | R26 | R27 | R28 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | R29 | R30 | R31 | hidden | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | CR | LR | PC | back-chain| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | cr saved | lr saved | compiler | linker | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | TOC saved | FCTX | DATA | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.globl make_fcontext -#if _CALL_ELF == 2 - .text - .align 2 -make_fcontext: - addis %r2, %r12, .TOC.-make_fcontext@ha - addi %r2, %r2, .TOC.-make_fcontext@l - .localentry make_fcontext, . - make_fcontext -#else - .section ".opd","aw" - .align 3 -make_fcontext: -# ifdef _CALL_LINUX - .quad .L.make_fcontext,.TOC.@tocbase,0 - .type make_fcontext,@function - .text - .align 2 -.L.make_fcontext: -# else - .hidden .make_fcontext - .globl .make_fcontext - .quad .make_fcontext,.TOC.@tocbase,0 - .size make_fcontext,24 - .type .make_fcontext,@function - .text - .align 2 -.make_fcontext: -# endif -#endif - # save return address into R6 - mflr %r6 - - # first arg of make_fcontext() == top address of context-stack - # shift address in R3 to lower 16 byte boundary - clrrdi %r3, %r3, 4 - - # reserve space for context-data on context-stack - # including 64 byte of linkage + parameter area (R1 % 16 == 0) - subi %r3, %r3, 248 - - # third arg of make_fcontext() == address of context-function - # entry point (ELFv2) or descriptor (ELFv1) -#if _CALL_ELF == 2 - # save address of context-function entry point - std %r5, 176(%r3) -#else - # save address of context-function entry point - ld %r4, 0(%r5) - std %r4, 176(%r3) - # save TOC of context-function - ld %r4, 8(%r5) - std %r4, 0(%r3) -#endif - - # set back-chain to zero - li %r0, 0 - std %r0, 184(%r3) - -#if _CALL_ELF != 2 - # zero in r3 indicates first jump to context-function - std %r0, 152(%r3) -#endif - - # load LR - mflr %r0 - # jump to label 1 - bl 1f -1: - # load LR into R4 - mflr %r4 - # compute abs address of label finish - addi %r4, %r4, finish - 1b - # restore LR - mtlr %r0 - # save address of finish as return-address for context-function - # will be entered after context-function returns - std %r4, 168(%r3) - - # restore return address from R6 - mtlr %r6 - - blr # return pointer to context-data - -finish: - # save return address into R0 - mflr %r0 - # save return address on stack, set up stack frame - std %r0, 8(%r1) - # allocate stack space, R1 % 16 == 0 - stdu %r1, -32(%r1) - - # exit code is zero - li %r3, 0 - # exit application - bl _exit - nop -#if _CALL_ELF == 2 - .size make_fcontext, .-make_fcontext -#else -# ifdef _CALL_LINUX - .size .make_fcontext, .-.L.make_fcontext -# else - .size .make_fcontext, .-.make_fcontext -# endif -#endif - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_macho_gas.S deleted file mode 100644 index 7b947bb6b0..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_macho_gas.S +++ /dev/null @@ -1,126 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | TOC | R14 | R15 | R16 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | R17 | R18 | R19 | R20 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | R21 | R22 | R23 | R24 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | R25 | R26 | R27 | R28 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | R29 | R30 | R31 | hidden | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | CR | LR | PC | back-chain| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | cr saved | lr saved | compiler | linker | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | TOC saved | FCTX | DATA | | * - * ------------------------------------------------- * - * * - -.text -.globl _make_fcontext -_make_fcontext: - ; save return address into R6 - mflr r6 - - ; first arg of make_fcontext() == top address of context-function - ; shift address in R3 to lower 16 byte boundary - clrrwi r3, r3, 4 - - ; reserve space for context-data on context-stack - ; including 64 byte of linkage + parameter area (R1 16 == 0) - subi r3, r3, 248 - - ; third arg of make_fcontext() == address of context-function - stw r5, 176(r3) - - ; set back-chain to zero - li %r0, 0 - std %r0, 184(%r3) - - ; compute address of returned transfer_t - addi %r0, %r3, 232 - mr %r4, %r0 - std %r4, 152(%r3) - - ; load LR - mflr r0 - ; jump to label 1 - bl l1 -l1: - ; load LR into R4 - mflr r4 - ; compute abs address of label finish - addi r4, r4, lo16((finish - .) + 4) - ; restore LR - mtlr r0 - ; save address of finish as return-address for context-function - ; will be entered after context-function returns - std r4, 168(r3) - - ; restore return address from R6 - mtlr r6 - - blr ; return pointer to context-data - -finish: - ; save return address into R0 - mflr r0 - ; save return address on stack, set up stack frame - stw r0, 8(r1) - ; allocate stack space, R1 16 == 0 - stwu r1, -32(r1) - - ; set return value to zero - li r3, 0 - ; exit application - bl __exit - nop diff --git a/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_xcoff_gas.S b/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_xcoff_gas.S deleted file mode 100644 index b229ab1b36..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_ppc64_sysv_xcoff_gas.S +++ /dev/null @@ -1,62 +0,0 @@ - .globl make_fcontext[DS] - .globl .make_fcontext[PR] - .align 2 - .csect .make_fcontext[PR], 3 - .globl _make_fcontext -#._make_fcontext: - # save return address into R6 - mflr 6 - - # first arg of make_fcontext() == top address of context-function - # shift address in R3 to lower 16 byte boundary - clrrwi 3, 3, 4 - - # reserve space for context-data on context-stack - # including 64 byte of linkage + parameter area (R1 % 16 == 0) - subi 3, 3, 248 - - # third arg of make_fcontext() == address of context-function - stw 5, 176(3) - - # set back-chain to zero - li 0, 0 - std 0, 184(3) - - # compute address of returned transfer_t - addi 0, 3, 232 - mr 4, 0 - std 4, 152(3) - - # load LR - mflr 0 - # jump to label 1 - bl .Label -.Label: - # load LR into R4 - mflr 4 - # compute abs address of label .L_finish - addi 4, 4, .L_finish - .Label - # restore LR - mtlr 0 - # save address of finish as return-address for context-function - # will be entered after context-function returns - stw 4, 168(3) - - # restore return address from R6 - mtlr 6 - - blr # return pointer to context-data - -.L_finish: - # save return address into R0 - mflr 0 - # save return address on stack, set up stack frame - stw 0, 8(1) - # allocate stack space, R1 % 16 == 0 - stwu 1, -32(1) - - # exit code is zero - li 3, 0 - # exit application - bl ._exit - nop diff --git a/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_gas.asm b/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_gas.asm deleted file mode 100644 index 958a2a7b6d..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_gas.asm +++ /dev/null @@ -1,174 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Copyright Thomas Sailer 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/************************************************************************************* -* ---------------------------------------------------------------------------------- * -* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -* ---------------------------------------------------------------------------------- * -* | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -* ---------------------------------------------------------------------------------- * -* | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * -* ---------------------------------------------------------------------------------- * -* | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * -* ---------------------------------------------------------------------------------- * -* | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | * -* ---------------------------------------------------------------------------------- * -* | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | * -* ---------------------------------------------------------------------------------- * -* | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | * -* ---------------------------------------------------------------------------------- * -* | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | * -* ---------------------------------------------------------------------------------- * -* | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | * -* ---------------------------------------------------------------------------------- * -* | limit | base | R12 | R13 | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | * -* ---------------------------------------------------------------------------------- * -* | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | * -* ---------------------------------------------------------------------------------- * -* | R14 | R15 | RDI | RSI | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | * -* ---------------------------------------------------------------------------------- * -* | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | * -* ---------------------------------------------------------------------------------- * -* | RBX | RBP | hidden | RIP | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | * -* ---------------------------------------------------------------------------------- * -* | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | * -* ---------------------------------------------------------------------------------- * -* | parameter area | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | * -* ---------------------------------------------------------------------------------- * -* | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | * -* ---------------------------------------------------------------------------------- * -* | FCTX | DATA | | * -* ---------------------------------------------------------------------------------- * -**************************************************************************************/ - -.file "make_x86_64_ms_pe_gas.asm" -.text -.p2align 4,,15 -.globl make_fcontext -.def make_fcontext; .scl 2; .type 32; .endef -.seh_proc make_fcontext -make_fcontext: -.seh_endprologue - - /* first arg of make_fcontext() == top of context-stack */ - movq %rcx, %rax - - /* shift address in RAX to lower 16 byte boundary */ - /* == pointer to fcontext_t and address of context stack */ - andq $-16, %rax - - /* reserve space for context-data on context-stack */ - /* on context-function entry: (RSP -0x8) % 16 == 0 */ - leaq -0x150(%rax), %rax - - /* third arg of make_fcontext() == address of context-function */ - movq %r8, 0x100(%rax) - - /* first arg of make_fcontext() == top of context-stack */ - /* save top address of context stack as 'base' */ - movq %rcx, 0xc8(%rax) - /* second arg of make_fcontext() == size of context-stack */ - /* negate stack size for LEA instruction (== substraction) */ - negq %rdx - /* compute bottom address of context stack (limit) */ - leaq (%rcx,%rdx), %rcx - /* save bottom address of context stack as 'limit' */ - movq %rcx, 0xc0(%rax) - /* save address of context stack limit as 'dealloction stack' */ - movq %rcx, 0xb8(%rax) - /* set fiber-storage to zero */ - xorq %rcx, %rcx - movq %rcx, 0xb0(%rax) - - /* save MMX control- and status-word */ - stmxcsr 0xa0(%rax) - /* save x87 control-word */ - fnstcw 0xa4(%rax) - - /* compute address of transport_t */ - leaq 0x140(%rax), %rcx - /* store address of transport_t in hidden field */ - movq %rcx, 0x110(%rax) - - /* compute abs address of label trampoline */ - leaq trampoline(%rip), %rcx - /* save address of finish as return-address for context-function */ - /* will be entered after jump_fcontext() first time */ - movq %rcx, 0x118(%rax) - - /* compute abs address of label finish */ - leaq finish(%rip), %rcx - /* save address of finish as return-address for context-function */ - /* will be entered after context-function returns */ - movq %rcx, 0x108(%rax) - - ret /* return pointer to context-data */ - -trampoline: - /* store return address on stack */ - /* fix stack alignment */ - pushq %rbp - /* jump to context-function */ - jmp *%rbx - -finish: - /* 32byte shadow-space for _exit() */ - andq $-32, %rsp - /* 32byte shadow-space for _exit() are */ - /* already reserved by make_fcontext() */ - /* exit code is zero */ - xorq %rcx, %rcx - /* exit application */ - call _exit - hlt -.seh_endproc - -.def _exit; .scl 2; .type 32; .endef /* standard C library function */ - -.section .drectve -.ascii " -export:\"make_fcontext\"" diff --git a/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_masm.asm b/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_masm.asm deleted file mode 100644 index 8f6c959a83..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_masm.asm +++ /dev/null @@ -1,163 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; ---------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; ---------------------------------------------------------------------------------- -; | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; ---------------------------------------------------------------------------------- -; | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -; ---------------------------------------------------------------------------------- -; | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -; ---------------------------------------------------------------------------------- -; | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -; ---------------------------------------------------------------------------------- -; | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -; ---------------------------------------------------------------------------------- -; | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | -; ---------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -; ---------------------------------------------------------------------------------- -; | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | -; ---------------------------------------------------------------------------------- -; | limit | base | R12 | R13 | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -; ---------------------------------------------------------------------------------- -; | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | -; ---------------------------------------------------------------------------------- -; | R14 | R15 | RDI | RSI | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -; ---------------------------------------------------------------------------------- -; | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | -; ---------------------------------------------------------------------------------- -; | RBX | RBP | hidden | RIP | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -; ---------------------------------------------------------------------------------- -; | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | -; ---------------------------------------------------------------------------------- -; | parameter area | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -; ---------------------------------------------------------------------------------- -; | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | -; ---------------------------------------------------------------------------------- -; | FCTX | DATA | | -; ---------------------------------------------------------------------------------- - -; standard C library function -EXTERN _exit:PROC -.code - -; generate function table entry in .pdata and unwind information in -make_fcontext PROC BOOST_CONTEXT_EXPORT FRAME - ; .xdata for a function's structured exception handling unwind behavior - .endprolog - - ; first arg of make_fcontext() == top of context-stack - mov rax, rcx - - ; shift address in RAX to lower 16 byte boundary - ; == pointer to fcontext_t and address of context stack - and rax, -16 - - ; reserve space for context-data on context-stack - ; on context-function entry: (RSP -0x8) % 16 == 0 - sub rax, 0150h - - ; third arg of make_fcontext() == address of context-function - ; stored in RBX - mov [rax+0100h], r8 - - ; first arg of make_fcontext() == top of context-stack - ; save top address of context stack as 'base' - mov [rax+0c8h], rcx - ; second arg of make_fcontext() == size of context-stack - ; negate stack size for LEA instruction (== substraction) - neg rdx - ; compute bottom address of context stack (limit) - lea rcx, [rcx+rdx] - ; save bottom address of context stack as 'limit' - mov [rax+0c0h], rcx - ; save address of context stack limit as 'dealloction stack' - mov [rax+0b8h], rcx - ; set fiber-storage to zero - xor rcx, rcx - mov [rax+0b0h], rcx - - ; save MMX control- and status-word - stmxcsr [rax+0a0h] - ; save x87 control-word - fnstcw [rax+0a4h] - - ; compute address of transport_t - lea rcx, [rax+0140h] - ; store address of transport_t in hidden field - mov [rax+0110h], rcx - - ; compute abs address of label trampoline - lea rcx, trampoline - ; save address of trampoline as return-address for context-function - ; will be entered after calling jump_fcontext() first time - mov [rax+0118h], rcx - - ; compute abs address of label finish - lea rcx, finish - ; save address of finish as return-address for context-function in RBP - ; will be entered after context-function returns - mov [rax+0108h], rcx - - ret ; return pointer to context-data - -trampoline: - ; store return address on stack - ; fix stack alignment - push rbp - ; jump to context-function - jmp rbx - -finish: - ; exit code is zero - xor rcx, rcx - ; exit application - call _exit - hlt -make_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_masm.masm b/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_masm.masm deleted file mode 100644 index 8f6c959a83..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/make_x86_64_ms_pe_masm.masm +++ /dev/null @@ -1,163 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; ---------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; ---------------------------------------------------------------------------------- -; | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; ---------------------------------------------------------------------------------- -; | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -; ---------------------------------------------------------------------------------- -; | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -; ---------------------------------------------------------------------------------- -; | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -; ---------------------------------------------------------------------------------- -; | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -; ---------------------------------------------------------------------------------- -; | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | -; ---------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -; ---------------------------------------------------------------------------------- -; | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | -; ---------------------------------------------------------------------------------- -; | limit | base | R12 | R13 | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -; ---------------------------------------------------------------------------------- -; | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | -; ---------------------------------------------------------------------------------- -; | R14 | R15 | RDI | RSI | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -; ---------------------------------------------------------------------------------- -; | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | -; ---------------------------------------------------------------------------------- -; | RBX | RBP | hidden | RIP | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -; ---------------------------------------------------------------------------------- -; | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | -; ---------------------------------------------------------------------------------- -; | parameter area | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -; ---------------------------------------------------------------------------------- -; | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | -; ---------------------------------------------------------------------------------- -; | FCTX | DATA | | -; ---------------------------------------------------------------------------------- - -; standard C library function -EXTERN _exit:PROC -.code - -; generate function table entry in .pdata and unwind information in -make_fcontext PROC BOOST_CONTEXT_EXPORT FRAME - ; .xdata for a function's structured exception handling unwind behavior - .endprolog - - ; first arg of make_fcontext() == top of context-stack - mov rax, rcx - - ; shift address in RAX to lower 16 byte boundary - ; == pointer to fcontext_t and address of context stack - and rax, -16 - - ; reserve space for context-data on context-stack - ; on context-function entry: (RSP -0x8) % 16 == 0 - sub rax, 0150h - - ; third arg of make_fcontext() == address of context-function - ; stored in RBX - mov [rax+0100h], r8 - - ; first arg of make_fcontext() == top of context-stack - ; save top address of context stack as 'base' - mov [rax+0c8h], rcx - ; second arg of make_fcontext() == size of context-stack - ; negate stack size for LEA instruction (== substraction) - neg rdx - ; compute bottom address of context stack (limit) - lea rcx, [rcx+rdx] - ; save bottom address of context stack as 'limit' - mov [rax+0c0h], rcx - ; save address of context stack limit as 'dealloction stack' - mov [rax+0b8h], rcx - ; set fiber-storage to zero - xor rcx, rcx - mov [rax+0b0h], rcx - - ; save MMX control- and status-word - stmxcsr [rax+0a0h] - ; save x87 control-word - fnstcw [rax+0a4h] - - ; compute address of transport_t - lea rcx, [rax+0140h] - ; store address of transport_t in hidden field - mov [rax+0110h], rcx - - ; compute abs address of label trampoline - lea rcx, trampoline - ; save address of trampoline as return-address for context-function - ; will be entered after calling jump_fcontext() first time - mov [rax+0118h], rcx - - ; compute abs address of label finish - lea rcx, finish - ; save address of finish as return-address for context-function in RBP - ; will be entered after context-function returns - mov [rax+0108h], rcx - - ret ; return pointer to context-data - -trampoline: - ; store return address on stack - ; fix stack alignment - push rbp - ; jump to context-function - jmp rbx - -finish: - ; exit code is zero - xor rcx, rcx - ; exit application - call _exit - hlt -make_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S deleted file mode 100644 index 02a3b07fde..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_arm64_aapcs_elf_gas.S +++ /dev/null @@ -1,112 +0,0 @@ -/* - Copyright Edward Nevill + Oliver Kowalke 2015 - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | d8 | d9 | d10 | d11 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | d12 | d13 | d14 | d15 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * | x19 | x20 | x21 | x22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | x23 | x24 | x25 | x26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * - * ------------------------------------------------- * - * | x27 | x28 | FP | LR | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | | | * - * ------------------------------------------------- * - * | 0xa0| 0xa4| 0xa8| 0xac| | | * - * ------------------------------------------------- * - * | PC | align | | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.align 2 -.global ontop_fcontext -.type ontop_fcontext, %function -ontop_fcontext: - # prepare stack for GP + FPU - sub sp, sp, #0xb0 - - # save d8 - d15 - stp d8, d9, [sp, #0x00] - stp d10, d11, [sp, #0x10] - stp d12, d13, [sp, #0x20] - stp d14, d15, [sp, #0x30] - - # save x19-x30 - stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70] - stp x27, x28, [sp, #0x80] - stp x29, x30, [sp, #0x90] - - # save LR as PC - str x30, [sp, #0xa0] - - # store RSP (pointing to context-data) in X5 - mov x4, sp - - # restore RSP (pointing to context-data) from X1 - mov sp, x0 - - # load d8 - d15 - ldp d8, d9, [sp, #0x00] - ldp d10, d11, [sp, #0x10] - ldp d12, d13, [sp, #0x20] - ldp d14, d15, [sp, #0x30] - - # load x19-x30 - ldp x19, x20, [sp, #0x40] - ldp x21, x22, [sp, #0x50] - ldp x23, x24, [sp, #0x60] - ldp x25, x26, [sp, #0x70] - ldp x27, x28, [sp, #0x80] - ldp x29, x30, [sp, #0x90] - - # return transfer_t from jump - # pass transfer_t as first arg in context function - # X0 == FCTX, X1 == DATA - mov x0, x4 - - # skip pc - # restore stack from GP + FPU - add sp, sp, #0xb0 - - # jump to ontop-function - ret x2 -.size ontop_fcontext,.-ontop_fcontext -# Mark that we don't need executable stack. -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S deleted file mode 100644 index a387d06dd2..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_arm64_aapcs_macho_gas.S +++ /dev/null @@ -1,108 +0,0 @@ -/* - Copyright Edward Nevill + Oliver Kowalke 2015 - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | d8 | d9 | d10 | d11 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | d12 | d13 | d14 | d15 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * | x19 | x20 | x21 | x22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | x23 | x24 | x25 | x26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * - * ------------------------------------------------- * - * | x27 | x28 | FP | LR | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | | | * - * ------------------------------------------------- * - * | 0xa0| 0xa4| 0xa8| 0xac| | | * - * ------------------------------------------------- * - * | PC | align | | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.global _ontop_fcontext -.balign 16 -_ontop_fcontext: - ; prepare stack for GP + FPU - sub sp, sp, #0xb0 - - ; save d8 - d15 - stp d8, d9, [sp, #0x00] - stp d10, d11, [sp, #0x10] - stp d12, d13, [sp, #0x20] - stp d14, d15, [sp, #0x30] - - ; save x19-x30 - stp x19, x20, [sp, #0x40] - stp x21, x22, [sp, #0x50] - stp x23, x24, [sp, #0x60] - stp x25, x26, [sp, #0x70] - stp x27, x28, [sp, #0x80] - stp x29, x30, [sp, #0x90] - - ; save LR as PC - str x30, [sp, #0xa0] - - ; store RSP (pointing to context-data) in X5 - mov x4, sp - - ; restore RSP (pointing to context-data) from X1 - mov sp, x0 - - ; load d8 - d15 - ldp d8, d9, [sp, #0x00] - ldp d10, d11, [sp, #0x10] - ldp d12, d13, [sp, #0x20] - ldp d14, d15, [sp, #0x30] - - ; load x19-x30 - ldp x19, x20, [sp, #0x40] - ldp x21, x22, [sp, #0x50] - ldp x23, x24, [sp, #0x60] - ldp x25, x26, [sp, #0x70] - ldp x27, x28, [sp, #0x80] - ldp x29, x30, [sp, #0x90] - - ; return transfer_t from jump - ; pass transfer_t as first arg in context function - ; X0 == FCTX, X1 == DATA - mov x0, x4 - - ; skip pc - ; restore stack from GP + FPU - add sp, sp, #0xb0 - - ; jump to ontop-function - ret x2 diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_elf_gas.S deleted file mode 100644 index 9d9198fc55..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_elf_gas.S +++ /dev/null @@ -1,91 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | s16 | s17 | s18 | s19 | s20 | s21 | s22 | s23 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | s24 | s25 | s26 | s27 | s28 | s29 | s30 | s31 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * - * ------------------------------------------------- * - * |hiddn| v1 | v2 | v3 | v4 | v5 | v6 | v7 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * - * ------------------------------------------------- * - * | v8 | lr | pc | FCTX| DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl ontop_fcontext -.align 2 -.type ontop_fcontext,%function -ontop_fcontext: - @ save LR as PC - push {lr} - @ save hidden,V1-V8,LR - push {a1,v1-v8,lr} - - @ prepare stack for FPU - sub sp, sp, #64 -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) - @ save S16-S31 - vstmia sp, {d8-d15} -#endif - - @ store RSP (pointing to context-data) in A1 - mov a1, sp - - @ restore RSP (pointing to context-data) from A2 - mov sp, a2 - - @ store parent context in A2 - mov a2, a1 - -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) - @ restore S16-S31 - vldmia sp, {d8-d15} -#endif - @ prepare stack for FPU - add sp, sp, #64 - - @ restore hidden,V1-V8,LR - pop {a1,v1-v8,lr} - - @ return transfer_t from jump - str a2, [a1, #0] - str a3, [a1, #4] - @ pass transfer_t as first arg in context function - @ A1 == hidden, A2 == FCTX, A3 == DATA - - @ skip PC - add sp, sp, #4 - - @ jump to ontop-function - bx a4 -.size ontop_fcontext,.-ontop_fcontext - -@ Mark that we don't need executable stack. -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_macho_gas.S deleted file mode 100644 index 3633aca641..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_macho_gas.S +++ /dev/null @@ -1,100 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | s16 | s17 | s18 | s19 | s20 | s21 | s22 | s23 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | s24 | s25 | s26 | s27 | s28 | s29 | s30 | s31 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * - * ------------------------------------------------- * - * | sjlj|hiddn| v1 | v2 | v3 | v4 | v5 | v6 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * - * ------------------------------------------------- * - * | v7 | v8 | lr | pc | FCTX| DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl _ontop_fcontext -.align 2 -_ontop_fcontext: - @ save LR as PC - push {lr} - @ save hidden,V1-V8,LR - push {a1,v1-v8,lr} - - @ locate TLS to save/restore SjLj handler - mrc p15, 0, v2, c13, c0, #3 - bic v2, v2, #3 - - @ load TLS[__PTK_LIBC_DYLD_Unwind_SjLj_Key] - ldr v1, [v2, #72] - @ save SjLj handler - push {v1} - - @ prepare stack for FPU - sub sp, sp, #64 -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) - @ save S16-S31 - vstmia sp, {d8-d15} -#endif - - @ store RSP (pointing to context-data) in A1 - mov a1, sp - - @ restore RSP (pointing to context-data) from A2 - mov sp, a2 - -#if (defined(__VFP_FP__) && !defined(__SOFTFP__)) - @ restore S16-S31 - vldmia sp, {d8-d15} -#endif - @ prepare stack for FPU - add sp, sp, #64 - - @ restore SjLj handler - pop {v1} - @ store SjLj handler in TLS - str v1, [v2, #72] - - @ store parent context in A2 - mov a2, a1 - - @ restore hidden,V1-V8,LR - pop {a1,v1-v8,lr} - - @ return transfer_t from jump - str a2, [a1, #0] - str a3, [a1, #4] - @ pass transfer_t as first arg in context function - @ A1 == hidden, A2 == FCTX, A3 == DATA - - @ skip PC - add sp, sp, #4 - - @ jump to ontop-function - bx a4 diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm b/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm deleted file mode 100644 index f360a8ffca..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_pe_armasm.asm +++ /dev/null @@ -1,86 +0,0 @@ -;/* -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) -;*/ - -; ******************************************************* -; * * -; * ------------------------------------------------- * -; * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -; * ------------------------------------------------- * -; * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * -; * ------------------------------------------------- * -; * |deall|limit| base|hiddn| v1 | v2 | v3 | v4 | * -; * ------------------------------------------------- * -; * ------------------------------------------------- * -; * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -; * ------------------------------------------------- * -; * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * -; * ------------------------------------------------- * -; * | v5 | v6 | v7 | v8 | lr | pc | FCTX| DATA| * -; * ------------------------------------------------- * -; * * -; ******************************************************* - - AREA |.text|, CODE - ALIGN 4 - EXPORT ontop_fcontext - -ontop_fcontext PROC - ; save LR as PC - push {lr} - ; save hidden,V1-V8,LR - push {a1,v1-v8,lr} - - ; load TIB to save/restore thread size and limit. - ; we do not need preserve CPU flag and can use it's arg register - mrc p15, #0, v1, c13, c0, #2 - - ; save current stack base - ldr a1, [v1, #0x04] - push {a1} - ; save current stack limit - ldr a1, [v1, #0x08] - push {a1} - ; save current deallocation stack - ldr a1, [v1, #0xe0c] - push {a1} - - ; store RSP (pointing to context-data) in A1 - mov a1, sp - - ; restore RSP (pointing to context-data) from A2 - mov sp, a2 - - ; restore stack base - pop {a1} - str a1, [v1, #0x04] - ; restore stack limit - pop {a1} - str a1, [v1, #0x08] - ; restore deallocation stack - pop {a1} - str a1, [v1, #0xe0c] - - ; store parent context in A2 - mov a2, a1 - - ; restore hidden,V1-V8,LR - pop {a1,v1-v8,lr} - - ; return transfer_t from jump - str a2, [a1, #0] - str a3, [a1, #4] - ; pass transfer_t as first arg in context function - ; A1 == hidden, A2 == FCTX, A3 == DATA - - ; skip PC - add sp, sp, #4 - - ; jump to ontop-function - bx a4 - - ENDP - END diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm b/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm deleted file mode 100644 index f360a8ffca..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_arm_aapcs_pe_armasm.masm +++ /dev/null @@ -1,86 +0,0 @@ -;/* -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) -;*/ - -; ******************************************************* -; * * -; * ------------------------------------------------- * -; * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -; * ------------------------------------------------- * -; * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * -; * ------------------------------------------------- * -; * |deall|limit| base|hiddn| v1 | v2 | v3 | v4 | * -; * ------------------------------------------------- * -; * ------------------------------------------------- * -; * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -; * ------------------------------------------------- * -; * | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * -; * ------------------------------------------------- * -; * | v5 | v6 | v7 | v8 | lr | pc | FCTX| DATA| * -; * ------------------------------------------------- * -; * * -; ******************************************************* - - AREA |.text|, CODE - ALIGN 4 - EXPORT ontop_fcontext - -ontop_fcontext PROC - ; save LR as PC - push {lr} - ; save hidden,V1-V8,LR - push {a1,v1-v8,lr} - - ; load TIB to save/restore thread size and limit. - ; we do not need preserve CPU flag and can use it's arg register - mrc p15, #0, v1, c13, c0, #2 - - ; save current stack base - ldr a1, [v1, #0x04] - push {a1} - ; save current stack limit - ldr a1, [v1, #0x08] - push {a1} - ; save current deallocation stack - ldr a1, [v1, #0xe0c] - push {a1} - - ; store RSP (pointing to context-data) in A1 - mov a1, sp - - ; restore RSP (pointing to context-data) from A2 - mov sp, a2 - - ; restore stack base - pop {a1} - str a1, [v1, #0x04] - ; restore stack limit - pop {a1} - str a1, [v1, #0x08] - ; restore deallocation stack - pop {a1} - str a1, [v1, #0xe0c] - - ; store parent context in A2 - mov a2, a1 - - ; restore hidden,V1-V8,LR - pop {a1,v1-v8,lr} - - ; return transfer_t from jump - str a2, [a1, #0] - str a3, [a1, #4] - ; pass transfer_t as first arg in context function - ; A1 == hidden, A2 == FCTX, A3 == DATA - - ; skip PC - add sp, sp, #4 - - ; jump to ontop-function - bx a4 - - ENDP - END diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_combined_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_combined_sysv_macho_gas.S deleted file mode 100644 index 20cbeb9f22..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_combined_sysv_macho_gas.S +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__i386__) - #include "ontop_i386_sysv_macho_gas.S" -#elif defined(__x86_64__) - #include "ontop_x86_64_sysv_macho_gas.S" -#elif defined(__ppc__) - #include "ontop_ppc32_sysv_macho_gas.S" -#elif defined(__ppc64__) - #include "ontop_ppc64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_gas.asm b/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_gas.asm deleted file mode 100644 index 41f15f5b02..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_gas.asm +++ /dev/null @@ -1,125 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Copyright Thomas Sailer 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/************************************************************************************* -* --------------------------------------------------------------------------------- * -* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -* --------------------------------------------------------------------------------- * -* | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | * -* --------------------------------------------------------------------------------- * -* | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | * -* --------------------------------------------------------------------------------- * -* --------------------------------------------------------------------------------- * -* | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -* --------------------------------------------------------------------------------- * -* | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | * -* --------------------------------------------------------------------------------- * -* | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| * -* --------------------------------------------------------------------------------- * -**************************************************************************************/ - -.file "ontop_i386_ms_pe_gas.asm" -.text -.p2align 4,,15 -.globl _ontop_fcontext -.def _ontop_fcontext; .scl 2; .type 32; .endef -_ontop_fcontext: - /* prepare stack */ - leal -0x2c(%esp), %esp - -#if !defined(BOOST_USE_TSX) - /* save MMX control- and status-word */ - stmxcsr (%esp) - /* save x87 control-word */ - fnstcw 0x4(%esp) -#endif - - /* load NT_TIB */ - movl %fs:(0x18), %edx - /* load fiber local storage */ - movl 0x10(%edx), %eax - movl %eax, 0x8(%esp) - /* load current dealloction stack */ - movl 0xe0c(%edx), %eax - movl %eax, 0xc(%esp) - /* load current stack limit */ - movl 0x8(%edx), %eax - movl %eax, 0x10(%esp) - /* load current stack base */ - movl 0x4(%edx), %eax - movl %eax, 0x14(%esp) - /* load current SEH exception list */ - movl (%edx), %eax - movl %eax, 0x18(%esp) - - movl %edi, 0x1c(%esp) /* save EDI */ - movl %esi, 0x20(%esp) /* save ESI */ - movl %ebx, 0x24(%esp) /* save EBX */ - movl %ebp, 0x28(%esp) /* save EBP */ - - /* store ESP (pointing to context-data) in ECX */ - movl %esp, %ecx - - /* first arg of ontop_fcontext() == fcontext to jump to */ - movl 0x30(%esp), %eax - - /* pass parent fcontext_t */ - movl %ecx, 0x30(%eax) - - /* second arg of ontop_fcontext() == data to be transferred */ - movl 0x34(%esp), %ecx - - /* pass data */ - movl %ecx, 0x34(%eax) - - /* third arg of ontop_fcontext() == ontop-function */ - movl 0x38(%esp), %ecx - - /* restore ESP (pointing to context-data) from EDX */ - movl %eax, %esp - -#if !defined(BOOST_USE_TSX) - /* restore MMX control- and status-word */ - ldmxcsr (%esp) - /* restore x87 control-word */ - fldcw 0x4(%esp) -#endif - - /* restore NT_TIB into EDX */ - movl %fs:(0x18), %edx - /* restore fiber local storage */ - movl 0x8(%esp), %eax - movl %eax, 0x10(%edx) - /* restore current deallocation stack */ - movl 0xc(%esp), %eax - movl %eax, 0xe0c(%edx) - /* restore current stack limit */ - movl 0x10(%esp), %eax - movl %eax, 0x08(%edx) - /* restore current stack base */ - movl 0x14(%esp), %eax - movl %eax, 0x04(%edx) - /* restore current SEH exception list */ - movl 0x18(%esp), %eax - movl %eax, (%edx) - - movl 0x1c(%esp), %edi /* restore EDI */ - movl 0x20(%esp), %esi /* restore ESI */ - movl 0x24(%esp), %ebx /* restore EBX */ - movl 0x28(%esp), %ebp /* restore EBP */ - - /* prepare stack */ - leal 0x2c(%esp), %esp - - /* keep return-address on stack */ - - /* jump to context */ - jmp *%ecx - -.section .drectve -.ascii " -export:\"ontop_fcontext\"" diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_masm.asm b/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_masm.asm deleted file mode 100644 index 82246a4a2c..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_masm.asm +++ /dev/null @@ -1,124 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; --------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; --------------------------------------------------------------------------------- -; | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | -; --------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | -; --------------------------------------------------------------------------------- -; --------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; --------------------------------------------------------------------------------- -; | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | -; --------------------------------------------------------------------------------- -; | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| -; --------------------------------------------------------------------------------- - -.386 -.XMM -.model flat, c -.code - -ontop_fcontext PROC BOOST_CONTEXT_EXPORT - ; prepare stack - lea esp, [esp-02ch] - -IFNDEF BOOST_USE_TSX - ; save MMX control- and status-word - stmxcsr [esp] - ; save x87 control-word - fnstcw [esp+04h] -ENDIF - - assume fs:nothing - ; load NT_TIB into ECX - mov edx, fs:[018h] - assume fs:error - ; load fiber local storage - mov eax, [edx+010h] - mov [esp+08h], eax - ; load current deallocation stack - mov eax, [edx+0e0ch] - mov [esp+0ch], eax - ; load current stack limit - mov eax, [edx+08h] - mov [esp+010h], eax - ; load current stack base - mov eax, [edx+04h] - mov [esp+014h], eax - ; load current SEH exception list - mov eax, [edx] - mov [esp+018h], eax - - mov [esp+01ch], edi ; save EDI - mov [esp+020h], esi ; save ESI - mov [esp+024h], ebx ; save EBX - mov [esp+028h], ebp ; save EBP - - ; store ESP (pointing to context-data) in ECX - mov ecx, esp - - ; first arg of ontop_fcontext() == fcontext to jump to - mov eax, [esp+030h] - - ; pass parent fcontext_t - mov [eax+030h], ecx - - ; second arg of ontop_fcontext() == data to be transferred - mov ecx, [esp+034h] - - ; pass data - mov [eax+034h], ecx - - ; third arg of ontop_fcontext() == ontop-function - mov ecx, [esp+038h] - - ; restore ESP (pointing to context-data) from EAX - mov esp, eax - -IFNDEF BOOST_USE_TSX - ; restore MMX control- and status-word - ldmxcsr [esp] - ; restore x87 control-word - fldcw [esp+04h] -ENDIF - - assume fs:nothing - ; load NT_TIB into EDX - mov edx, fs:[018h] - assume fs:error - ; restore fiber local storage - mov eax, [esp+08h] - mov [edx+010h], eax - ; restore current deallocation stack - mov eax, [esp+0ch] - mov [edx+0e0ch], eax - ; restore current stack limit - mov eax, [esp+010h] - mov [edx+08h], eax - ; restore current stack base - mov eax, [esp+014h] - mov [edx+04h], eax - ; restore current SEH exception list - mov eax, [esp+018h] - mov [edx], eax - - mov edi, [esp+01ch] ; restore EDI - mov esi, [esp+020h] ; restore ESI - mov ebx, [esp+024h] ; restore EBX - mov ebp, [esp+028h] ; restore EBP - - ; prepare stack - lea esp, [esp+02ch] - - ; keep return-address on stack - - ; jump to context - jmp ecx -ontop_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_masm.masm b/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_masm.masm deleted file mode 100644 index 82246a4a2c..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_ms_pe_masm.masm +++ /dev/null @@ -1,124 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; --------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; --------------------------------------------------------------------------------- -; | 0h | 04h | 08h | 0ch | 010h | 014h | 018h | 01ch | -; --------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| fc_strg |fc_deallo| limit | base | fc_seh | EDI | -; --------------------------------------------------------------------------------- -; --------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; --------------------------------------------------------------------------------- -; | 020h | 024h | 028h | 02ch | 030h | 034h | 038h | 03ch | -; --------------------------------------------------------------------------------- -; | ESI | EBX | EBP | EIP | to | data | EH NXT |SEH HNDLR| -; --------------------------------------------------------------------------------- - -.386 -.XMM -.model flat, c -.code - -ontop_fcontext PROC BOOST_CONTEXT_EXPORT - ; prepare stack - lea esp, [esp-02ch] - -IFNDEF BOOST_USE_TSX - ; save MMX control- and status-word - stmxcsr [esp] - ; save x87 control-word - fnstcw [esp+04h] -ENDIF - - assume fs:nothing - ; load NT_TIB into ECX - mov edx, fs:[018h] - assume fs:error - ; load fiber local storage - mov eax, [edx+010h] - mov [esp+08h], eax - ; load current deallocation stack - mov eax, [edx+0e0ch] - mov [esp+0ch], eax - ; load current stack limit - mov eax, [edx+08h] - mov [esp+010h], eax - ; load current stack base - mov eax, [edx+04h] - mov [esp+014h], eax - ; load current SEH exception list - mov eax, [edx] - mov [esp+018h], eax - - mov [esp+01ch], edi ; save EDI - mov [esp+020h], esi ; save ESI - mov [esp+024h], ebx ; save EBX - mov [esp+028h], ebp ; save EBP - - ; store ESP (pointing to context-data) in ECX - mov ecx, esp - - ; first arg of ontop_fcontext() == fcontext to jump to - mov eax, [esp+030h] - - ; pass parent fcontext_t - mov [eax+030h], ecx - - ; second arg of ontop_fcontext() == data to be transferred - mov ecx, [esp+034h] - - ; pass data - mov [eax+034h], ecx - - ; third arg of ontop_fcontext() == ontop-function - mov ecx, [esp+038h] - - ; restore ESP (pointing to context-data) from EAX - mov esp, eax - -IFNDEF BOOST_USE_TSX - ; restore MMX control- and status-word - ldmxcsr [esp] - ; restore x87 control-word - fldcw [esp+04h] -ENDIF - - assume fs:nothing - ; load NT_TIB into EDX - mov edx, fs:[018h] - assume fs:error - ; restore fiber local storage - mov eax, [esp+08h] - mov [edx+010h], eax - ; restore current deallocation stack - mov eax, [esp+0ch] - mov [edx+0e0ch], eax - ; restore current stack limit - mov eax, [esp+010h] - mov [edx+08h], eax - ; restore current stack base - mov eax, [esp+014h] - mov [edx+04h], eax - ; restore current SEH exception list - mov eax, [esp+018h] - mov [edx], eax - - mov edi, [esp+01ch] ; restore EDI - mov esi, [esp+020h] ; restore ESI - mov ebx, [esp+024h] ; restore EBX - mov ebp, [esp+028h] ; restore EBP - - ; prepare stack - lea esp, [esp+02ch] - - ; keep return-address on stack - - ; jump to context - jmp ecx -ontop_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_i386_sysv_elf_gas.S deleted file mode 100644 index 03eb0f0c09..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_sysv_elf_gas.S +++ /dev/null @@ -1,99 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/**************************************************************************************** - * * - * ---------------------------------------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ---------------------------------------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * - * ---------------------------------------------------------------------------------- * - * | fc_mxcsr|fc_x87_cw| guard | EDI | ESI | EBX | EBP | EIP | * - * ---------------------------------------------------------------------------------- * - * ---------------------------------------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ---------------------------------------------------------------------------------- * - * | 0x20 | 0x24 | 0x28 | | * - * ---------------------------------------------------------------------------------- * - * | hidden | to | data | | * - * ---------------------------------------------------------------------------------- * - * * - ****************************************************************************************/ - -.text -.globl ontop_fcontext -.align 2 -.type ontop_fcontext,@function -ontop_fcontext: - leal -0x1c(%esp), %esp /* prepare stack */ - -#if !defined(BOOST_USE_TSX) - stmxcsr (%esp) /* save MMX control- and status-word */ - fnstcw 0x4(%esp) /* save x87 control-word */ -#endif - -#if defined(TLS_STACK_PROTECTOR) - movl %gs:0x14, %ecx /* read stack guard from TLS record */ - movl %ecx, 0x8(%esp) /* save stack guard */ -#endif - - movl %edi, 0xc(%esp) /* save EDI */ - movl %esi, 0x10(%esp) /* save ESI */ - movl %ebx, 0x14(%esp) /* save EBX */ - movl %ebp, 0x18(%esp) /* save EBP */ - - /* store ESP (pointing to context-data) in ECX */ - movl %esp, %ecx - - /* first arg of ontop_fcontext() == fcontext to jump to */ - movl 0x24(%esp), %eax - - /* pass parent fcontext_t */ - movl %ecx, 0x24(%eax) - - /* second arg of ontop_fcontext() == data to be transferred */ - movl 0x28(%esp), %ecx - - /* pass data */ - movl %ecx, 0x28(%eax) - - /* third arg of ontop_fcontext() == ontop-function */ - movl 0x2c(%esp), %ecx - - /* restore ESP (pointing to context-data) from EAX */ - movl %eax, %esp - - /* address of returned transport_t */ - movl 0x20(%esp), %eax - /* return parent fcontext_t */ - movl %ecx, (%eax) - /* return data */ - movl %edx, 0x4(%eax) - -#if !defined(BOOST_USE_TSX) - ldmxcsr (%esp) /* restore MMX control- and status-word */ - fldcw 0x4(%esp) /* restore x87 control-word */ -#endif - -#if defined(TLS_STACK_PROTECTOR) - movl 0x8(%esp), %edx /* load stack guard */ - movl %edx, %gs:0x14 /* restore stack guard to TLS record */ -#endif - - movl 0xc(%esp), %edi /* restore EDI */ - movl 0x10(%esp), %esi /* restore ESI */ - movl 0x14(%esp), %ebx /* restore EBX */ - movl 0x18(%esp), %ebp /* restore EBP */ - - leal 0x1c(%esp), %esp /* prepare stack */ - - /* jump to context */ - jmp *%ecx -.size ontop_fcontext,.-ontop_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_i386_sysv_macho_gas.S deleted file mode 100644 index 3a88372b3a..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_sysv_macho_gas.S +++ /dev/null @@ -1,81 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/**************************************************************************************** - * * - * ---------------------------------------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ---------------------------------------------------------------------------------- * - * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * - * ---------------------------------------------------------------------------------- * - * | fc_mxcsr|fc_x87_cw| EDI | ESI | EBX | EBP | EIP | to | * - * ---------------------------------------------------------------------------------- * - * ---------------------------------------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ---------------------------------------------------------------------------------- * - * | 0x20 | | * - * ---------------------------------------------------------------------------------- * - * | data | | * - * ---------------------------------------------------------------------------------- * - * * - ****************************************************************************************/ - -.text -.globl _ontop_fcontext -.align 2 -_ontop_fcontext: - leal -0x18(%esp), %esp /* prepare stack */ - -#if !defined(BOOST_USE_TSX) - stmxcsr (%esp) /* save MMX control- and status-word */ - fnstcw 0x4(%esp) /* save x87 control-word */ -#endif - - movl %edi, 0x8(%esp) /* save EDI */ - movl %esi, 0xc(%esp) /* save ESI */ - movl %ebx, 0x10(%esp) /* save EBX */ - movl %ebp, 0x14(%esp) /* save EBP */ - - /* store ESP (pointing to context-data) in ECX */ - movl %esp, %ecx - - /* first arg of ontop_fcontext() == fcontext to jump to */ - movl 0x1c(%esp), %eax - - /* pass parent fcontext_t */ - movl %ecx, 0x1c(%eax) - - /* second arg of ontop_fcontext() == data to be transferred */ - movl 0x20(%esp), %ecx - - /* pass data */ - movl %ecx, 0x20(%eax) - - /* third arg of ontop_fcontext() == ontop-function */ - movl 0x24(%esp), %ecx - - /* restore ESP (pointing to context-data) from EAX */ - movl %eax, %esp - - /* return parent fcontext_t */ - movl %ecx, %eax - /* returned data is stored in EDX */ - -#if !defined(BOOST_USE_TSX) - ldmxcsr (%esp) /* restore MMX control- and status-word */ - fldcw 0x4(%esp) /* restore x87 control-word */ -#endif - - movl 0x8(%esp), %edi /* restore EDI */ - movl 0xc(%esp), %esi /* restore ESI */ - movl 0x10(%esp), %ebx /* restore EBX */ - movl 0x14(%esp), %ebp /* restore EBP */ - - leal 0x18(%esp), %esp /* prepare stack */ - - /* jump to context */ - jmp *%ecx diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S deleted file mode 100644 index 393c5fe43e..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_i386_x86_64_sysv_macho_gas.S +++ /dev/null @@ -1,16 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__i386__) - #include "ontop_i386_sysv_macho_gas.S" -#elif defined(__x86_64__) - #include "ontop_x86_64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_mips32_o32_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_mips32_o32_elf_gas.S deleted file mode 100644 index 238c00ecd7..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_mips32_o32_elf_gas.S +++ /dev/null @@ -1,119 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F20 | F22 | F24 | F26 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F28 | F30 | S0 | S1 | S2 | S3 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | S4 | S5 | S6 | S7 | FP |hiddn| RA | PC | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | ABI ARGS | GP | FCTX| DATA| | * - * ------------------------------------------------- * - * * - * *****************************************************/ - -.text -.globl ontop_fcontext -.align 2 -.type ontop_fcontext,@function -.ent ontop_fcontext -ontop_fcontext: - # reserve space on stack - addiu $sp, $sp, -96 - - sw $s0, 48($sp) # save S0 - sw $s1, 52($sp) # save S1 - sw $s2, 56($sp) # save S2 - sw $s3, 60($sp) # save S3 - sw $s4, 64($sp) # save S4 - sw $s5, 68($sp) # save S5 - sw $s6, 72($sp) # save S6 - sw $s7, 76($sp) # save S7 - sw $fp, 80($sp) # save FP - sw $a0, 84($sp) # save hidden, address of returned transfer_t - sw $ra, 88($sp) # save RA - sw $ra, 92($sp) # save RA as PC - -#if defined(__mips_hard_float) - s.d $f20, ($sp) # save F20 - s.d $f22, 8($sp) # save F22 - s.d $f24, 16($sp) # save F24 - s.d $f26, 24($sp) # save F26 - s.d $f28, 32($sp) # save F28 - s.d $f30, 40($sp) # save F30 -#endif - - # store SP (pointing to context-data) in A0 - move $a0, $sp - - # restore SP (pointing to context-data) from A1 - move $sp, $a1 - -#if defined(__mips_hard_float) - l.d $f20, ($sp) # restore F20 - l.d $f22, 8($sp) # restore F22 - l.d $f24, 16($sp) # restore F24 - l.d $f26, 24($sp) # restore F26 - l.d $f28, 32($sp) # restore F28 - l.d $f30, 40($sp) # restore F30 -#endif - - lw $s0, 48($sp) # restore S0 - lw $s1, 52($sp) # restore S1 - lw $s2, 56($sp) # restore S2 - lw $s3, 60($sp) # restore S3 - lw $s4, 64($sp) # restore S4 - lw $s5, 68($sp) # restore S5 - lw $s6, 72($sp) # restore S6 - lw $s7, 76($sp) # restore S7 - lw $fp, 80($sp) # restore FP - lw $v0, 84($sp) # restore hidden, address of returned transfer_t - lw $ra, 88($sp) # restore RA - - # load PC - move $t9, $a3 - - # adjust stack - addiu $sp, $sp, 96 - - # return transfer_t from jump - sw $a0, ($v0) # fctx of transfer_t - sw $a2, 4($v0) # data of transfer_t - # pass transfer_t as first arg in context function - # A0 == hidden, A1 == fctx, A2 == data - move $a1, $a0 - move $a0, $v0 - - # jump to context - jr $t9 -.end ontop_fcontext -.size ontop_fcontext, .-ontop_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S deleted file mode 100644 index 4632f4cc9e..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_ppc64_sysv_macho_gas.S +++ /dev/null @@ -1,16 +0,0 @@ -/* - Copyright Sergue E. Leontiev 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -// Stub file for universal binary - -#if defined(__ppc__) - #include "ontop_ppc32_sysv_macho_gas.S" -#elif defined(__ppc64__) - #include "ontop_ppc64_sysv_macho_gas.S" -#else - #error "No arch's" -#endif diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S deleted file mode 100644 index 54072694ef..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_elf_gas.S +++ /dev/null @@ -1,206 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl ontop_fcontext -.align 2 -.type ontop_fcontext,@function -ontop_fcontext: - # reserve space on stack - subi %r1, %r1, 244 - - stfd %f14, 0(%r1) # save F14 - stfd %f15, 8(%r1) # save F15 - stfd %f16, 16(%r1) # save F16 - stfd %f17, 24(%r1) # save F17 - stfd %f18, 32(%r1) # save F18 - stfd %f19, 40(%r1) # save F19 - stfd %f20, 48(%r1) # save F20 - stfd %f21, 56(%r1) # save F21 - stfd %f22, 64(%r1) # save F22 - stfd %f23, 72(%r1) # save F23 - stfd %f24, 80(%r1) # save F24 - stfd %f25, 88(%r1) # save F25 - stfd %f26, 96(%r1) # save F26 - stfd %f27, 104(%r1) # save F27 - stfd %f28, 112(%r1) # save F28 - stfd %f29, 120(%r1) # save F29 - stfd %f30, 128(%r1) # save F30 - stfd %f31, 136(%r1) # save F31 - mffs %f0 # load FPSCR - stfd %f0, 144(%r1) # save FPSCR - - stw %r13, 152(%r1) # save R13 - stw %r14, 156(%r1) # save R14 - stw %r15, 160(%r1) # save R15 - stw %r16, 164(%r1) # save R16 - stw %r17, 168(%r1) # save R17 - stw %r18, 172(%r1) # save R18 - stw %r19, 176(%r1) # save R19 - stw %r20, 180(%r1) # save R20 - stw %r21, 184(%r1) # save R21 - stw %r22, 188(%r1) # save R22 - stw %r23, 192(%r1) # save R23 - stw %r24, 196(%r1) # save R24 - stw %r25, 200(%r1) # save R25 - stw %r26, 204(%r1) # save R26 - stw %r27, 208(%r1) # save R27 - stw %r28, 212(%r1) # save R28 - stw %r29, 216(%r1) # save R29 - stw %r30, 220(%r1) # save R30 - stw %r31, 224(%r1) # save R31 - stw %r3, 228(%r1) # save hidden - - # save CR - mfcr %r0 - stw %r0, 232(%r1) - # save LR - mflr %r0 - stw %r0, 236(%r1) - # save LR as PC - stw %r0, 240(%r1) - - # store RSP (pointing to context-data) in R7 - mr %r7, %r1 - - # restore RSP (pointing to context-data) from R4 - mr %r1, %r4 - - lfd %f14, 0(%r1) # restore F14 - lfd %f15, 8(%r1) # restore F15 - lfd %f16, 16(%r1) # restore F16 - lfd %f17, 24(%r1) # restore F17 - lfd %f18, 32(%r1) # restore F18 - lfd %f19, 40(%r1) # restore F19 - lfd %f20, 48(%r1) # restore F20 - lfd %f21, 56(%r1) # restore F21 - lfd %f22, 64(%r1) # restore F22 - lfd %f23, 72(%r1) # restore F23 - lfd %f24, 80(%r1) # restore F24 - lfd %f25, 88(%r1) # restore F25 - lfd %f26, 96(%r1) # restore F26 - lfd %f27, 104(%r1) # restore F27 - lfd %f28, 112(%r1) # restore F28 - lfd %f29, 120(%r1) # restore F29 - lfd %f30, 128(%r1) # restore F30 - lfd %f31, 136(%r1) # restore F31 - lfd %f0, 144(%r1) # load FPSCR - mtfsf 0xff, %f0 # restore FPSCR - - lwz %r13, 152(%r1) # restore R13 - lwz %r14, 156(%r1) # restore R14 - lwz %r15, 160(%r1) # restore R15 - lwz %r16, 164(%r1) # restore R16 - lwz %r17, 168(%r1) # restore R17 - lwz %r18, 172(%r1) # restore R18 - lwz %r19, 176(%r1) # restore R19 - lwz %r20, 180(%r1) # restore R20 - lwz %r21, 184(%r1) # restore R21 - lwz %r22, 188(%r1) # restore R22 - lwz %r23, 192(%r1) # restore R23 - lwz %r24, 196(%r1) # restore R24 - lwz %r25, 200(%r1) # restore R25 - lwz %r26, 204(%r1) # restore R26 - lwz %r27, 208(%r1) # restore R27 - lwz %r28, 212(%r1) # restore R28 - lwz %r29, 216(%r1) # restore R29 - lwz %r30, 220(%r1) # restore R30 - lwz %r31, 224(%r1) # restore R31 - lwz %r4, 228(%r1) # restore hidden - - # restore CR - lwz %r0, 232(%r1) - mtcr %r0 - # restore LR - lwz %r0, 236(%r1) - mtlr %r0 - # ignore PC - - # adjust stack - addi %r1, %r1, 244 - - # return transfer_t - stw %r7, 0(%r4) - stw %r5, 4(%r4) - - # restore CTR - mtctr %r6 - - # jump to ontop-function - bctr -.size ontop_fcontext, .-ontop_fcontext - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S deleted file mode 100644 index 1eb5f9340c..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_macho_gas.S +++ /dev/null @@ -1,201 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.globl _ontop_fcontext -.align 2 -_ontop_fcontext: - # reserve space on stack - subi r1, r1, 244 - - stfd f14, 0(r1) # save F14 - stfd f15, 8(r1) # save F15 - stfd f16, 16(r1) # save F16 - stfd f17, 24(r1) # save F17 - stfd f18, 32(r1) # save F18 - stfd f19, 40(r1) # save F19 - stfd f20, 48(r1) # save F20 - stfd f21, 56(r1) # save F21 - stfd f22, 64(r1) # save F22 - stfd f23, 72(r1) # save F23 - stfd f24, 80(r1) # save F24 - stfd f25, 88(r1) # save F25 - stfd f26, 96(r1) # save F26 - stfd f27, 104(r1) # save F27 - stfd f28, 112(r1) # save F28 - stfd f29, 120(r1) # save F29 - stfd f30, 128(r1) # save F30 - stfd f31, 136(r1) # save F31 - mffs f0 # load FPSCR - stfd f0, 144(r1) # save FPSCR - - stw r13, 152(r1) # save R13 - stw r14, 156(r1) # save R14 - stw r15, 160(r1) # save R15 - stw r16, 164(r1) # save R16 - stw r17, 168(r1) # save R17 - stw r18, 172(r1) # save R18 - stw r19, 176(r1) # save R19 - stw r20, 180(r1) # save R20 - stw r21, 184(r1) # save R21 - stw r22, 188(r1) # save R22 - stw r23, 192(r1) # save R23 - stw r24, 196(r1) # save R24 - stw r25, 200(r1) # save R25 - stw r26, 204(r1) # save R26 - stw r27, 208(r1) # save R27 - stw r28, 212(r1) # save R28 - stw r29, 216(r1) # save R29 - stw r30, 220(r1) # save R30 - stw r31, 224(r1) # save R31 - stw r3, 228(r1) # save hidden - - # save CR - mfcr r0 - stw r0, 232(r1) - # save LR - mflr r0 - stw r0, 236(r1) - # save LR as PC - stw r0, 240(r1) - - # store RSP (pointing to context-data) in R7 - mr r7, r1 - - # restore RSP (pointing to context-data) from R4 - mr r1, r4 - - lfd f14, 0(r1) # restore F14 - lfd f15, 8(r1) # restore F15 - lfd f16, 16(r1) # restore F16 - lfd f17, 24(r1) # restore F17 - lfd f18, 32(r1) # restore F18 - lfd f19, 40(r1) # restore F19 - lfd f20, 48(r1) # restore F20 - lfd f21, 56(r1) # restore F21 - lfd f22, 64(r1) # restore F22 - lfd f23, 72(r1) # restore F23 - lfd f24, 80(r1) # restore F24 - lfd f25, 88(r1) # restore F25 - lfd f26, 96(r1) # restore F26 - lfd f27, 104(r1) # restore F27 - lfd f28, 112(r1) # restore F28 - lfd f29, 120(r1) # restore F29 - lfd f30, 128(r1) # restore F30 - lfd f31, 136(r1) # restore F31 - lfd f0, 144(r1) # load FPSCR - mtfsf 0xff, f0 # restore FPSCR - - lwz r13, 152(r1) # restore R13 - lwz r14, 156(r1) # restore R14 - lwz r15, 160(r1) # restore R15 - lwz r16, 164(r1) # restore R16 - lwz r17, 168(r1) # restore R17 - lwz r18, 172(r1) # restore R18 - lwz r19, 176(r1) # restore R19 - lwz r20, 180(r1) # restore R20 - lwz r21, 184(r1) # restore R21 - lwz r22, 188(r1) # restore R22 - lwz r23, 192(r1) # restore R23 - lwz r24, 196(r1) # restore R24 - lwz r25, 200(r1) # restore R25 - lwz r26, 204(r1) # restore R26 - lwz r27, 208(r1) # restore R27 - lwz r28, 212(r1) # restore R28 - lwz r29, 216(r1) # restore R29 - lwz r30, 220(r1) # restore R30 - lwz r31, 224(r1) # restore R31 - lwz r4, 228(r1) # restore hidden - - # restore CR - lwz r0, 232(r1) - mtcr r0 - # restore LR - lwz r0, 236(r1) - mtlr r0 - # ignore PC - - # adjust stack - addi r1, r1, 244 - - # return transfer_t - stw r7, 0(r4) - stw r5, 4(r4) - - # restore CTR - mtctr r6 - - # jump to ontop-function - bctr diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S deleted file mode 100644 index a3c9fa2336..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc32_sysv_xcoff_gas.S +++ /dev/null @@ -1,203 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/****************************************************** - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | F14 | F15 | F16 | F17 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | F18 | F19 | F20 | F21 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | F22 | F23 | F24 | F25 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | F26 | F27 | F28 | F29 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | F30 | F31 | fpscr | R13 | R14 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | R31 |hiddn| CR | LR | PC |bchai|linkr| FCTX| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 64 | | * - * ------------------------------------------------- * - * | 256 | | * - * ------------------------------------------------- * - * | DATA| | * - * ------------------------------------------------- * - * * - *******************************************************/ -.globl .ontop_fcontext -.globl ontop_fcontext[DS] -.align 2 -.csect ontop_fcontext[DS] -ontop_fcontext: - .long .ontop_fcontext -.ontop_fcontext: - # reserve space on stack - subi r1, r1, 244 - - stfd f14, 0(r1) # save F14 - stfd f15, 8(r1) # save F15 - stfd f16, 16(r1) # save F16 - stfd f17, 24(r1) # save F17 - stfd f18, 32(r1) # save F18 - stfd f19, 40(r1) # save F19 - stfd f20, 48(r1) # save F20 - stfd f21, 56(r1) # save F21 - stfd f22, 64(r1) # save F22 - stfd f23, 72(r1) # save F23 - stfd f24, 80(r1) # save F24 - stfd f25, 88(r1) # save F25 - stfd f26, 96(r1) # save F26 - stfd f27, 104(r1) # save F27 - stfd f28, 112(r1) # save F28 - stfd f29, 120(r1) # save F29 - stfd f30, 128(r1) # save F30 - stfd f31, 136(r1) # save F31 - mffs f0 # load FPSCR - stfd f0, 144(r1) # save FPSCR - - stw r13, 152(r1) # save R13 - stw r14, 156(r1) # save R14 - stw r15, 160(r1) # save R15 - stw r16, 164(r1) # save R16 - stw r17, 168(r1) # save R17 - stw r18, 172(r1) # save R18 - stw r19, 176(r1) # save R19 - stw r20, 180(r1) # save R20 - stw r21, 184(r1) # save R21 - stw r22, 188(r1) # save R22 - stw r23, 192(r1) # save R23 - stw r24, 196(r1) # save R24 - stw r25, 200(r1) # save R25 - stw r26, 204(r1) # save R26 - stw r27, 208(r1) # save R27 - stw r28, 212(r1) # save R28 - stw r29, 216(r1) # save R29 - stw r30, 220(r1) # save R30 - stw r31, 224(r1) # save R31 - stw r3, 228(r1) # save hidden - - # save CR - mfcr r0 - stw r0, 232(r1) - # save LR - mflr r0 - stw r0, 236(r1) - # save LR as PC - stw r0, 240(r1) - - # store RSP (pointing to context-data) in R7 - mr r7, r1 - - # restore RSP (pointing to context-data) from R4 - mr r1, r4 - - lfd f14, 0(r1) # restore F14 - lfd f15, 8(r1) # restore F15 - lfd f16, 16(r1) # restore F16 - lfd f17, 24(r1) # restore F17 - lfd f18, 32(r1) # restore F18 - lfd f19, 40(r1) # restore F19 - lfd f20, 48(r1) # restore F20 - lfd f21, 56(r1) # restore F21 - lfd f22, 64(r1) # restore F22 - lfd f23, 72(r1) # restore F23 - lfd f24, 80(r1) # restore F24 - lfd f25, 88(r1) # restore F25 - lfd f26, 96(r1) # restore F26 - lfd f27, 104(r1) # restore F27 - lfd f28, 112(r1) # restore F28 - lfd f29, 120(r1) # restore F29 - lfd f30, 128(r1) # restore F30 - lfd f31, 136(r1) # restore F31 - lfd f0, 144(r1) # load FPSCR - mtfsf 0xff, f0 # restore FPSCR - - lwz r13, 152(r1) # restore R13 - lwz r14, 156(r1) # restore R14 - lwz r15, 160(r1) # restore R15 - lwz r16, 164(r1) # restore R16 - lwz r17, 168(r1) # restore R17 - lwz r18, 172(r1) # restore R18 - lwz r19, 176(r1) # restore R19 - lwz r20, 180(r1) # restore R20 - lwz r21, 184(r1) # restore R21 - lwz r22, 188(r1) # restore R22 - lwz r23, 192(r1) # restore R23 - lwz r24, 196(r1) # restore R24 - lwz r25, 200(r1) # restore R25 - lwz r26, 204(r1) # restore R26 - lwz r27, 208(r1) # restore R27 - lwz r28, 212(r1) # restore R28 - lwz r29, 216(r1) # restore R29 - lwz r30, 220(r1) # restore R30 - lwz r31, 224(r1) # restore R31 - lwz r4, 228(r1) # restore hidden - - # restore CR - lwz r0, 232(r1) - mtcr r0 - # restore LR - lwz r0, 236(r1) - mtlr r0 - # ignore PC - - # adjust stack - addi r1, r1, 244 - - # return transfer_t - stw r7, 0(r4) - stw r5, 4(r4) - - # restore CTR - mtctr r6 - - # jump to ontop-function - bctr diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S deleted file mode 100644 index 14981c85a0..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_elf_gas.S +++ /dev/null @@ -1,240 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | TOC | R14 | R15 | R16 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | R17 | R18 | R19 | R20 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | R21 | R22 | R23 | R24 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | R25 | R26 | R27 | R28 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | R29 | R30 | R31 | hidden | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | CR | LR | PC | back-chain| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | cr saved | lr saved | compiler | linker | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | TOC saved | FCTX | DATA | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.globl ontop_fcontext -#if _CALL_ELF == 2 - .text - .align 2 -ontop_fcontext: - addis %r2, %r12, .TOC.-ontop_fcontext@ha - addi %r2, %r2, .TOC.-ontop_fcontext@l - .localentry ontop_fcontext, . - ontop_fcontext -#else - .section ".opd","aw" - .align 3 -ontop_fcontext: -# ifdef _CALL_LINUX - .quad .L.ontop_fcontext,.TOC.@tocbase,0 - .type ontop_fcontext,@function - .text - .align 2 -.L.ontop_fcontext: -# else - .hidden .ontop_fcontext - .globl .ontop_fcontext - .quad .ontop_fcontext,.TOC.@tocbase,0 - .size ontop_fcontext,24 - .type .ontop_fcontext,@function - .text - .align 2 -.ontop_fcontext: -# endif -#endif - # reserve space on stack - subi %r1, %r1, 184 - -#if _CALL_ELF != 2 - std %r2, 0(%r1) # save TOC -#endif - std %r14, 8(%r1) # save R14 - std %r15, 16(%r1) # save R15 - std %r16, 24(%r1) # save R16 - std %r17, 32(%r1) # save R17 - std %r18, 40(%r1) # save R18 - std %r19, 48(%r1) # save R19 - std %r20, 56(%r1) # save R20 - std %r21, 64(%r1) # save R21 - std %r22, 72(%r1) # save R22 - std %r23, 80(%r1) # save R23 - std %r24, 88(%r1) # save R24 - std %r25, 96(%r1) # save R25 - std %r26, 104(%r1) # save R26 - std %r27, 112(%r1) # save R27 - std %r28, 120(%r1) # save R28 - std %r29, 128(%r1) # save R29 - std %r30, 136(%r1) # save R30 - std %r31, 144(%r1) # save R31 -#if _CALL_ELF != 2 - std %r3, 152(%r1) # save hidden -#endif - - # save CR - mfcr %r0 - std %r0, 160(%r1) - # save LR - mflr %r0 - std %r0, 168(%r1) - # save LR as PC - std %r0, 176(%r1) - - # store RSP (pointing to context-data) in R7 - mr %r7, %r1 - -#if _CALL_ELF == 2 - # restore RSP (pointing to context-data) from R3 - mr %r1, %r3 -#else - # restore RSP (pointing to context-data) from R4 - mr %r1, %r4 -#endif - - ld %r14, 8(%r1) # restore R14 - ld %r15, 16(%r1) # restore R15 - ld %r16, 24(%r1) # restore R16 - ld %r17, 32(%r1) # restore R17 - ld %r18, 40(%r1) # restore R18 - ld %r19, 48(%r1) # restore R19 - ld %r20, 56(%r1) # restore R20 - ld %r21, 64(%r1) # restore R21 - ld %r22, 72(%r1) # restore R22 - ld %r23, 80(%r1) # restore R23 - ld %r24, 88(%r1) # restore R24 - ld %r25, 96(%r1) # restore R25 - ld %r26, 104(%r1) # restore R26 - ld %r27, 112(%r1) # restore R27 - ld %r28, 120(%r1) # restore R28 - ld %r29, 128(%r1) # restore R29 - ld %r30, 136(%r1) # restore R30 - ld %r31, 144(%r1) # restore R31 -#if _CALL_ELF != 2 - ld %r3, 152(%r1) # restore hidden -#endif - - # restore CR - ld %r0, 160(%r1) - mtcr %r0 - -#if _CALL_ELF == 2 - # restore CTR - mtctr %r5 - - # copy transfer_t into ontop_fn arg registers - mr %r3, %r7 - # arg pointer already in %r4 -#else - # copy transfer_t into ontop_fn arg registers - mr %r4, %r7 - # arg pointer already in %r5 - # hidden arg already in %r3 - - # restore CTR - ld %r7, 0(%r6) - mtctr %r7 - # restore TOC - ld %r2, 8(%r6) - - # zero in r3 indicates first jump to context-function - cmpdi %r3, 0 - beq use_entry_arg -#endif - -return_to_ctx: - # restore LR - ld %r0, 168(%r1) - mtlr %r0 - - # adjust stack - addi %r1, %r1, 184 - - # jump to context - bctr - -#if _CALL_ELF == 2 - .size ontop_fcontext, .-ontop_fcontext -#else -use_entry_arg: - # compute return-value struct address - # (passed has hidden arg to ontop_fn) - addi %r3, %r1, 8 - - # jump to context and update LR - bctrl - - # restore CTR - ld %r7, 176(%r1) - mtctr %r7 -#if _CALL_ELF != 2 - # restore TOC - ld %r2, 0(%r1) -#endif - - # copy returned transfer_t into entry_fn arg registers - ld %r3, 8(%r1) - ld %r4, 16(%r1) - - b return_to_ctx -# ifdef _CALL_LINUX - .size .ontop_fcontext, .-.L.ontop_fcontext -# else - .size .ontop_fcontext, .-.ontop_fcontext -# endif -#endif - - -/* Mark that we don't need executable stack. */ -.section .note.GNU-stack,"",%progbits diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S deleted file mode 100644 index 5de8acd10c..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_macho_gas.S +++ /dev/null @@ -1,151 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/******************************************************* - * * - * ------------------------------------------------- * - * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * - * ------------------------------------------------- * - * | 0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | * - * ------------------------------------------------- * - * | TOC | R14 | R15 | R16 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * - * ------------------------------------------------- * - * | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | * - * ------------------------------------------------- * - * | R17 | R18 | R19 | R20 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * - * ------------------------------------------------- * - * | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | * - * ------------------------------------------------- * - * | R21 | R22 | R23 | R24 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * - * ------------------------------------------------- * - * | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | * - * ------------------------------------------------- * - * | R25 | R26 | R27 | R28 | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * - * ------------------------------------------------- * - * | 128 | 132 | 136 | 140 | 144 | 148 | 152 | 156 | * - * ------------------------------------------------- * - * | R29 | R30 | R31 | hidden | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * - * ------------------------------------------------- * - * | 160 | 164 | 168 | 172 | 176 | 180 | 184 | 188 | * - * ------------------------------------------------- * - * | CR | LR | PC | back-chain| * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | * - * ------------------------------------------------- * - * | 192 | 196 | 200 | 204 | 208 | 212 | 216 | 220 | * - * ------------------------------------------------- * - * | cr saved | lr saved | compiler | linker | * - * ------------------------------------------------- * - * ------------------------------------------------- * - * | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | * - * ------------------------------------------------- * - * | 224 | 228 | 232 | 236 | 240 | 244 | 248 | 252 | * - * ------------------------------------------------- * - * | TOC saved | FCTX | DATA | | * - * ------------------------------------------------- * - * * - *******************************************************/ - -.text -.align 2 -.globl _ontop_fcontext - -_ontop_fcontext: - ; reserve space on stack - subi r1, r1, 184 - - std r14, 8(r1) ; save R14 - std r15, 16(r1) ; save R15 - std r16, 24(r1) ; save R16 - std r17, 32(r1) ; save R17 - std r18, 40(r1) ; save R18 - std r19, 48(r1) ; save R19 - std r20, 56(r1) ; save R20 - std r21, 64(r1) ; save R21 - std r22, 72(r1) ; save R22 - std r23, 80(r1) ; save R23 - std r24, 88(r1) ; save R24 - std r25, 96(r1) ; save R25 - std r26, 104(r1) ; save R26 - std r27, 112(r1) ; save R27 - std r28, 120(r1) ; save R28 - std r29, 128(r1) ; save R29 - std r30, 136(r1) ; save R30 - std r31, 144(r1) ; save R31 - std r3, 152(r1) ; save hidden - - ; save CR - mfcr r0 - std r0, 160(r1) - ; save LR - mflr r0 - std r0, 168(r1) - ; save LR as PC - std r0, 176(r1) - - ; store RSP (pointing to context-data) in R7 - mr r7, r1 - - ; restore RSP (pointing to context-data) from R4 - mr r1, r4 - - ld r14, 8(r1) ; restore R14 - ld r15, 16(r1) ; restore R15 - ld r16, 24(r1) ; restore R16 - ld r17, 32(r1) ; restore R17 - ld r18, 40(r1) ; restore R18 - ld r19, 48(r1) ; restore R19 - ld r20, 56(r1) ; restore R20 - ld r21, 64(r1) ; restore R21 - ld r22, 72(r1) ; restore R22 - ld r23, 80(r1) ; restore R23 - ld r24, 88(r1) ; restore R24 - ld r25, 96(r1) ; restore R25 - ld r26, 104(r1) ; restore R26 - ld r27, 112(r1) ; restore R27 - ld r28, 120(r1) ; restore R28 - ld r29, 128(r1) ; restore R29 - ld r30, 136(r1) ; restore R30 - ld r31, 144(r1) ; restore R31 - ld r4, 152(r1) ; restore hidden - - ; restore CR - ld r0, 160(r1) - mtcr r0 - ; restore LR - ld r0, 168(r1) - mtlr r0 - ; ignore PC - - ; adjust stack - addi r1, r1, 184 - - ; return transfer_t - std r7, 0(r4) - std r5, 8(r4) - - ; restore CTR - mtctr r6 - - ; jump to context - bctr diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_xcoff_gas.S b/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_xcoff_gas.S deleted file mode 100644 index 93f8c23427..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_ppc64_sysv_xcoff_gas.S +++ /dev/null @@ -1,83 +0,0 @@ -.align 2 -.globl .ontop_fcontext -.ontop_fcontext: - # reserve space on stack - subi 1, 1, 184 - - std 13, 0(1) # save R13 - std 14, 8(1) # save R14 - std 15, 16(1) # save R15 - std 16, 24(1) # save R16 - std 17, 32(1) # save R17 - std 18, 40(1) # save R18 - std 19, 48(1) # save R19 - std 20, 56(1) # save R20 - std 21, 64(1) # save R21 - std 22, 72(1) # save R22 - std 23, 80(1) # save R23 - std 24, 88(1) # save R24 - std 25, 96(1) # save R25 - std 26, 104(1) # save R26 - std 27, 112(1) # save R27 - std 29, 120(1) # save R28 - std 29, 128(1) # save R29 - std 30, 136(1) # save R30 - std 31, 144(1) # save R31 - std 3, 152(1) # save hidden - - # save CR - mfcr 0 - std 0, 160(1) - # save LR - mflr 0 - std 0, 168(1) - # save LR as PC - std 0, 176(1) - - # store RSP (pointing to context-data) in R7 - mr 7, 1 - - # restore RSP (pointing to context-data) from R4 - mr 1, 4 - - ld 13, 0(1) # restore R13 - ld 14, 8(1) # restore R14 - ld 15, 16(1) # restore R15 - ld 16, 24(1) # restore R16 - ld 17, 32(1) # restore R17 - ld 18, 40(1) # restore R18 - ld 19, 48(1) # restore R19 - ld 20, 56(1) # restore R20 - ld 21, 64(1) # restore R21 - ld 22, 72(1) # restore R22 - ld 23, 80(1) # restore R23 - ld 24, 88(1) # restore R24 - ld 25, 96(1) # restore R25 - ld 26, 104(1) # restore R26 - ld 27, 112(1) # restore R27 - ld 28, 120(1) # restore R28 - ld 29, 128(1) # restore R29 - ld 30, 136(1) # restore R30 - ld 31, 144(1) # restore R31 - ld 4, 152(1) # restore hidden - - # restore CR - ld 0, 160(1) - mtcr 0 - # restore LR - ld 0, 168(1) - mtlr 0 - # ignore PC - - # adjust stack - addi 1, 1, 184 - - # return transfer_t - std 7, 0(4) - std 5, 8(4) - - # restore CTR - mtctr 6 - - # jump to context - bctr diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm b/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm deleted file mode 100644 index 02e040c9dc..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_gas.asm +++ /dev/null @@ -1,211 +0,0 @@ -/* - Copyright Oliver Kowalke 2009. - Copyright Thomas Sailer 2013. - Distributed under the Boost Software License, Version 1.0. - (See accompanying file LICENSE_1_0.txt or copy at - http://www.boost.org/LICENSE_1_0.txt) -*/ - -/************************************************************************************* -* ---------------------------------------------------------------------------------- * -* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * -* ---------------------------------------------------------------------------------- * -* | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * -* ---------------------------------------------------------------------------------- * -* | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * -* ---------------------------------------------------------------------------------- * -* | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * -* ---------------------------------------------------------------------------------- * -* | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | * -* ---------------------------------------------------------------------------------- * -* | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | * -* ---------------------------------------------------------------------------------- * -* | SEE registers (XMM6-XMM15) | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | * -* ---------------------------------------------------------------------------------- * -* | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | * -* ---------------------------------------------------------------------------------- * -* | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | * -* ---------------------------------------------------------------------------------- * -* | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | * -* ---------------------------------------------------------------------------------- * -* | limit | base | R12 | R13 | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | * -* ---------------------------------------------------------------------------------- * -* | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | * -* ---------------------------------------------------------------------------------- * -* | R14 | R15 | RDI | RSI | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | * -* ---------------------------------------------------------------------------------- * -* | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | * -* ---------------------------------------------------------------------------------- * -* | RBX | RBP | hidden | RIP | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | * -* ---------------------------------------------------------------------------------- * -* | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | * -* ---------------------------------------------------------------------------------- * -* | parameter area | * -* ---------------------------------------------------------------------------------- * -* ---------------------------------------------------------------------------------- * -* | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | * -* ---------------------------------------------------------------------------------- * -* | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | * -* ---------------------------------------------------------------------------------- * -* | FCTX | DATA | | * -* ---------------------------------------------------------------------------------- * -**************************************************************************************/ - -.file "ontop_x86_64_ms_pe_gas.asm" -.text -.p2align 4,,15 -.globl ontop_fcontext -.def ontop_fcontext; .scl 2; .type 32; .endef -.seh_proc ontop_fcontext -ontop_fcontext: -.seh_endprologue - - leaq -0x118(%rsp), %rsp /* prepare stack */ - -#if !defined(BOOST_USE_TSX) - /* save XMM storage */ - movaps %xmm6, 0x0(%rsp) - movaps %xmm7, 0x10(%rsp) - movaps %xmm8, 0x20(%rsp) - movaps %xmm9, 0x30(%rsp) - movaps %xmm10, 0x40(%rsp) - movaps %xmm11, 0x50(%rsp) - movaps %xmm12, 0x60(%rsp) - movaps %xmm13, 0x70(%rsp) - movaps %xmm14, 0x80(%rsp) - movaps %xmm15, 0x90(%rsp) - stmxcsr 0xa0(%rsp) /* save MMX control- and status-word */ - fnstcw 0xa4(%rsp) /* save x87 control-word */ -#endif - - /* load NT_TIB */ - movq %gs:(0x30), %r10 - /* save fiber local storage */ - movq 0x20(%r10), %rax - movq %rax, 0xb0(%rsp) - /* save current deallocation stack */ - movq 0x1478(%r10), %rax - movq %rax, 0xb8(%rsp) - /* save current stack limit */ - movq 0x10(%r10), %rax - movq %rax, 0xc0(%rsp) - /* save current stack base */ - movq 0x08(%r10), %rax - movq %rax, 0xc8(%rsp) - - movq %r12, 0xd0(%rsp) /* save R12 */ - movq %r13, 0xd8(%rsp) /* save R13 */ - movq %r14, 0xe0(%rsp) /* save R14 */ - movq %r15, 0xe8(%rsp) /* save R15 */ - movq %rdi, 0xf0(%rsp) /* save RDI */ - movq %rsi, 0xf8(%rsp) /* save RSI */ - movq %rbx, 0x100(%rsp) /* save RBX */ - movq %rbp, 0x108(%rsp) /* save RBP */ - - movq %rcx, 0x110(%rsp) /* save hidden address of transport_t */ - - /* preserve RSP (pointing to context-data) in RCX */ - movq %rsp, %rcx - - /* restore RSP (pointing to context-data) from RDX */ - movq %rdx, %rsp - -#if !defined(BOOST_USE_TSX) - /* restore XMM storage */ - movaps 0x0(%rsp), %xmm6 - movaps 0x10(%rsp), %xmm7 - movaps 0x20(%rsp), %xmm8 - movaps 0x30(%rsp), %xmm9 - movaps 0x40(%rsp), %xmm10 - movaps 0x50(%rsp), %xmm11 - movaps 0x60(%rsp), %xmm12 - movaps 0x70(%rsp), %xmm13 - movaps 0x80(%rsp), %xmm14 - movaps 0x90(%rsp), %xmm15 - ldmxcsr 0xa0(%rsp) /* restore MMX control- and status-word */ - fldcw 0xa4(%rsp) /* restore x87 control-word */ -#endif - - /* load NT_TIB */ - movq %gs:(0x30), %r10 - /* restore fiber local storage */ - movq 0xb0(%rsp), %rax - movq %rax, 0x20(%r10) - /* restore current deallocation stack */ - movq 0xb8(%rsp), %rax - movq %rax, 0x1478(%r10) - /* restore current stack limit */ - movq 0xc0(%rsp), %rax - movq %rax, 0x10(%r10) - /* restore current stack base */ - movq 0xc8(%rsp), %rax - movq %rax, 0x08(%r10) - - movq 0xd0(%rsp), %r12 /* restore R12 */ - movq 0xd8(%rsp), %r13 /* restore R13 */ - movq 0xe0(%rsp), %r14 /* restore R14 */ - movq 0xe8(%rsp), %r15 /* restore R15 */ - movq 0xf0(%rsp), %rdi /* restore RDI */ - movq 0xf8(%rsp), %rsi /* restore RSI */ - movq 0x100(%rsp), %rbx /* restore RBX */ - movq 0x108(%rsp), %rbp /* restore RBP */ - - movq 0x110(%rsp), %rax /* restore hidden address of transport_t */ - - leaq 0x118(%rsp), %rsp /* prepare stack */ - - /* keep return-address on stack */ - - /* transport_t returned in RAX */ - /* return parent fcontext_t */ - movq %rcx, 0x0(%rax) - /* return data */ - movq %r8, 0x8(%rax) - - /* transport_t as 1.arg of context-function */ - /* RCX contains address of returned (hidden) transfer_t */ - movq %rax, %rcx - /* RDX contains address of passed transfer_t */ - movq %rax, %rdx - - /* indirect jump to context */ - jmp *%r9 -.seh_endproc - -.section .drectve -.ascii " -export:\"ontop_fcontext\"" diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm b/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm deleted file mode 100644 index b57dd15884..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_masm.asm +++ /dev/null @@ -1,207 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; ---------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; ---------------------------------------------------------------------------------- -; | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; ---------------------------------------------------------------------------------- -; | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -; ---------------------------------------------------------------------------------- -; | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -; ---------------------------------------------------------------------------------- -; | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -; ---------------------------------------------------------------------------------- -; | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -; ---------------------------------------------------------------------------------- -; | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | -; ---------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -; ---------------------------------------------------------------------------------- -; | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | -; ---------------------------------------------------------------------------------- -; | limit | base | R12 | R13 | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -; ---------------------------------------------------------------------------------- -; | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | -; ---------------------------------------------------------------------------------- -; | R14 | R15 | RDI | RSI | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -; ---------------------------------------------------------------------------------- -; | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | -; ---------------------------------------------------------------------------------- -; | RBX | RBP | hidden | RIP | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -; ---------------------------------------------------------------------------------- -; | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | -; ---------------------------------------------------------------------------------- -; | parameter area | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -; ---------------------------------------------------------------------------------- -; | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | -; ---------------------------------------------------------------------------------- -; | FCTX | DATA | | -; ---------------------------------------------------------------------------------- - -.code - -ontop_fcontext PROC BOOST_CONTEXT_EXPORT FRAME - .endprolog - - ; prepare stack - lea rsp, [rsp-0118h] - -IFNDEF BOOST_USE_TSX - ; save XMM storage - movaps [rsp], xmm6 - movaps [rsp+010h], xmm7 - movaps [rsp+020h], xmm8 - movaps [rsp+030h], xmm9 - movaps [rsp+040h], xmm10 - movaps [rsp+050h], xmm11 - movaps [rsp+060h], xmm12 - movaps [rsp+070h], xmm13 - movaps [rsp+080h], xmm14 - movaps [rsp+090h], xmm15 - ; save MMX control- and status-word - stmxcsr [rsp+0a0h] - ; save x87 control-word - fnstcw [rsp+0a4h] -ENDIF - - ; load NT_TIB - mov r10, gs:[030h] - ; save fiber local storage - mov rax, [r10+020h] - mov [rsp+0b0h], rax - ; save current deallocation stack - mov rax, [r10+01478h] - mov [rsp+0b8h], rax - ; save current stack limit - mov rax, [r10+010h] - mov [rsp+0c0h], rax - ; save current stack base - mov rax, [r10+08h] - mov [rsp+0c8h], rax - - mov [rsp+0d0h], r12 ; save R12 - mov [rsp+0d8h], r13 ; save R13 - mov [rsp+0e0h], r14 ; save R14 - mov [rsp+0e8h], r15 ; save R15 - mov [rsp+0f0h], rdi ; save RDI - mov [rsp+0f8h], rsi ; save RSI - mov [rsp+0100h], rbx ; save RBX - mov [rsp+0108h], rbp ; save RBP - - mov [rsp+0110h], rcx ; save hidden address of transport_t - - ; preserve RSP (pointing to context-data) in RCX - mov rcx, rsp - - ; restore RSP (pointing to context-data) from RDX - mov rsp, rdx - -IFNDEF BOOST_USE_TSX - ; restore XMM storage - movaps xmm6, [rsp] - movaps xmm7, [rsp+010h] - movaps xmm8, [rsp+020h] - movaps xmm9, [rsp+030h] - movaps xmm10, [rsp+040h] - movaps xmm11, [rsp+050h] - movaps xmm12, [rsp+060h] - movaps xmm13, [rsp+070h] - movaps xmm14, [rsp+080h] - movaps xmm15, [rsp+090h] - ; restore MMX control- and status-word - ldmxcsr [rsp+0a0h] - ; save x87 control-word - fldcw [rsp+0a4h] -ENDIF - - ; load NT_TIB - mov r10, gs:[030h] - ; restore fiber local storage - mov rax, [rsp+0b0h] - mov [r10+020h], rax - ; restore current deallocation stack - mov rax, [rsp+0b8h] - mov [r10+01478h], rax - ; restore current stack limit - mov rax, [rsp+0c0h] - mov [r10+010h], rax - ; restore current stack base - mov rax, [rsp+0c8h] - mov [r10+08h], rax - - mov r12, [rsp+0d0h] ; restore R12 - mov r13, [rsp+0d8h] ; restore R13 - mov r14, [rsp+0e0h] ; restore R14 - mov r15, [rsp+0e8h] ; restore R15 - mov rdi, [rsp+0f0h] ; restore RDI - mov rsi, [rsp+0f8h] ; restore RSI - mov rbx, [rsp+0100h] ; restore RBX - mov rbp, [rsp+0108h] ; restore RBP - - mov rax, [rsp+0110h] ; restore hidden address of transport_t - - ; prepare stack - lea rsp, [rsp+0118h] - - ; keep return-address on stack - - ; transport_t returned in RAX - ; return parent fcontext_t - mov [rax], rcx - ; return data - mov [rax+08h], r8 - - ; transport_t as 1.arg of context-function - ; RCX contains address of returned (hidden) transfer_t - mov rcx, rax - ; RDX contains address of passed transfer_t - mov rdx, rax - - ; indirect jump to context - jmp r9 -ontop_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm b/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm deleted file mode 100644 index b57dd15884..0000000000 --- a/contrib/restricted/boost/libs/context/src/asm/ontop_x86_64_ms_pe_masm.masm +++ /dev/null @@ -1,207 +0,0 @@ - -; Copyright Oliver Kowalke 2009. -; Distributed under the Boost Software License, Version 1.0. -; (See accompanying file LICENSE_1_0.txt or copy at -; http://www.boost.org/LICENSE_1_0.txt) - -; ---------------------------------------------------------------------------------- -; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -; ---------------------------------------------------------------------------------- -; | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -; ---------------------------------------------------------------------------------- -; | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -; ---------------------------------------------------------------------------------- -; | 0xe40 | 0x44 | 0x48 | 0x4c | 0x50 | 0x54 | 0x58 | 0x5c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -; ---------------------------------------------------------------------------------- -; | 0x60 | 0x64 | 0x68 | 0x6c | 0x70 | 0x74 | 0x78 | 0x7c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 32 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -; ---------------------------------------------------------------------------------- -; | 0x80 | 0x84 | 0x88 | 0x8c | 0x90 | 0x94 | 0x98 | 0x9c | -; ---------------------------------------------------------------------------------- -; | SEE registers (XMM6-XMM15) | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -; ---------------------------------------------------------------------------------- -; | 0xa0 | 0xa4 | 0xa8 | 0xac | 0xb0 | 0xb4 | 0xb8 | 0xbc | -; ---------------------------------------------------------------------------------- -; | fc_mxcsr|fc_x87_cw| <alignment> | fbr_strg | fc_dealloc | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -; ---------------------------------------------------------------------------------- -; | 0xc0 | 0xc4 | 0xc8 | 0xcc | 0xd0 | 0xd4 | 0xd8 | 0xdc | -; ---------------------------------------------------------------------------------- -; | limit | base | R12 | R13 | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -; ---------------------------------------------------------------------------------- -; | 0xe0 | 0xe4 | 0xe8 | 0xec | 0xf0 | 0xf4 | 0xf8 | 0xfc | -; ---------------------------------------------------------------------------------- -; | R14 | R15 | RDI | RSI | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -; ---------------------------------------------------------------------------------- -; | 0x100 | 0x104 | 0x108 | 0x10c | 0x110 | 0x114 | 0x118 | 0x11c | -; ---------------------------------------------------------------------------------- -; | RBX | RBP | hidden | RIP | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -; ---------------------------------------------------------------------------------- -; | 0x120 | 0x124 | 0x128 | 0x12c | 0x130 | 0x134 | 0x138 | 0x13c | -; ---------------------------------------------------------------------------------- -; | parameter area | -; ---------------------------------------------------------------------------------- -; ---------------------------------------------------------------------------------- -; | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -; ---------------------------------------------------------------------------------- -; | 0x140 | 0x144 | 0x148 | 0x14c | 0x150 | 0x154 | 0x158 | 0x15c | -; ---------------------------------------------------------------------------------- -; | FCTX | DATA | | -; ---------------------------------------------------------------------------------- - -.code - -ontop_fcontext PROC BOOST_CONTEXT_EXPORT FRAME - .endprolog - - ; prepare stack - lea rsp, [rsp-0118h] - -IFNDEF BOOST_USE_TSX - ; save XMM storage - movaps [rsp], xmm6 - movaps [rsp+010h], xmm7 - movaps [rsp+020h], xmm8 - movaps [rsp+030h], xmm9 - movaps [rsp+040h], xmm10 - movaps [rsp+050h], xmm11 - movaps [rsp+060h], xmm12 - movaps [rsp+070h], xmm13 - movaps [rsp+080h], xmm14 - movaps [rsp+090h], xmm15 - ; save MMX control- and status-word - stmxcsr [rsp+0a0h] - ; save x87 control-word - fnstcw [rsp+0a4h] -ENDIF - - ; load NT_TIB - mov r10, gs:[030h] - ; save fiber local storage - mov rax, [r10+020h] - mov [rsp+0b0h], rax - ; save current deallocation stack - mov rax, [r10+01478h] - mov [rsp+0b8h], rax - ; save current stack limit - mov rax, [r10+010h] - mov [rsp+0c0h], rax - ; save current stack base - mov rax, [r10+08h] - mov [rsp+0c8h], rax - - mov [rsp+0d0h], r12 ; save R12 - mov [rsp+0d8h], r13 ; save R13 - mov [rsp+0e0h], r14 ; save R14 - mov [rsp+0e8h], r15 ; save R15 - mov [rsp+0f0h], rdi ; save RDI - mov [rsp+0f8h], rsi ; save RSI - mov [rsp+0100h], rbx ; save RBX - mov [rsp+0108h], rbp ; save RBP - - mov [rsp+0110h], rcx ; save hidden address of transport_t - - ; preserve RSP (pointing to context-data) in RCX - mov rcx, rsp - - ; restore RSP (pointing to context-data) from RDX - mov rsp, rdx - -IFNDEF BOOST_USE_TSX - ; restore XMM storage - movaps xmm6, [rsp] - movaps xmm7, [rsp+010h] - movaps xmm8, [rsp+020h] - movaps xmm9, [rsp+030h] - movaps xmm10, [rsp+040h] - movaps xmm11, [rsp+050h] - movaps xmm12, [rsp+060h] - movaps xmm13, [rsp+070h] - movaps xmm14, [rsp+080h] - movaps xmm15, [rsp+090h] - ; restore MMX control- and status-word - ldmxcsr [rsp+0a0h] - ; save x87 control-word - fldcw [rsp+0a4h] -ENDIF - - ; load NT_TIB - mov r10, gs:[030h] - ; restore fiber local storage - mov rax, [rsp+0b0h] - mov [r10+020h], rax - ; restore current deallocation stack - mov rax, [rsp+0b8h] - mov [r10+01478h], rax - ; restore current stack limit - mov rax, [rsp+0c0h] - mov [r10+010h], rax - ; restore current stack base - mov rax, [rsp+0c8h] - mov [r10+08h], rax - - mov r12, [rsp+0d0h] ; restore R12 - mov r13, [rsp+0d8h] ; restore R13 - mov r14, [rsp+0e0h] ; restore R14 - mov r15, [rsp+0e8h] ; restore R15 - mov rdi, [rsp+0f0h] ; restore RDI - mov rsi, [rsp+0f8h] ; restore RSI - mov rbx, [rsp+0100h] ; restore RBX - mov rbp, [rsp+0108h] ; restore RBP - - mov rax, [rsp+0110h] ; restore hidden address of transport_t - - ; prepare stack - lea rsp, [rsp+0118h] - - ; keep return-address on stack - - ; transport_t returned in RAX - ; return parent fcontext_t - mov [rax], rcx - ; return data - mov [rax+08h], r8 - - ; transport_t as 1.arg of context-function - ; RCX contains address of returned (hidden) transfer_t - mov rcx, rax - ; RDX contains address of passed transfer_t - mov rdx, rax - - ; indirect jump to context - jmp r9 -ontop_fcontext ENDP -END diff --git a/contrib/restricted/boost/libs/context/src/continuation.cpp b/contrib/restricted/boost/libs/context/src/continuation.cpp deleted file mode 100644 index 0779baaba8..0000000000 --- a/contrib/restricted/boost/libs/context/src/continuation.cpp +++ /dev/null @@ -1,60 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#if defined(BOOST_USE_UCONTEXT) -#include "boost/context/continuation_ucontext.hpp" -#elif defined(BOOST_USE_WINFIB) -#include "boost/context/continuation_winfib.hpp" -#else -#include "boost/context/execution_context.hpp" -#endif - -#include <boost/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace context { -namespace detail { - -// zero-initialization -thread_local activation_record * current_rec; -thread_local static std::size_t counter; - -// schwarz counter -activation_record_initializer::activation_record_initializer() noexcept { - if ( 0 == counter++) { - current_rec = new activation_record(); - } -} - -activation_record_initializer::~activation_record_initializer() { - if ( 0 == --counter) { - BOOST_ASSERT( current_rec->is_main_context() ); - delete current_rec; - } -} - -} - -namespace detail { - -activation_record *& -activation_record::current() noexcept { - // initialized the first time control passes; per thread - thread_local static activation_record_initializer initializer; - return current_rec; -} - -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif diff --git a/contrib/restricted/boost/libs/context/src/dummy.cpp b/contrib/restricted/boost/libs/context/src/dummy.cpp deleted file mode 100644 index e69de29bb2..0000000000 --- a/contrib/restricted/boost/libs/context/src/dummy.cpp +++ /dev/null diff --git a/contrib/restricted/boost/libs/context/src/execution_context.cpp b/contrib/restricted/boost/libs/context/src/execution_context.cpp deleted file mode 100644 index fc593ecb03..0000000000 --- a/contrib/restricted/boost/libs/context/src/execution_context.cpp +++ /dev/null @@ -1,69 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include "boost/context/detail/config.hpp" - -#if ! defined(BOOST_CONTEXT_NO_CXX11) - -#include "boost/context/execution_context.hpp" -#include <boost/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace context { - -#if !defined(BOOST_NO_CXX11_THREAD_LOCAL) - -namespace detail { - -ecv1_activation_record::ptr_t & -ecv1_activation_record::current() noexcept { - thread_local static ptr_t current; - return current; -} - -// zero-initialization -thread_local static std::size_t counter; - -// schwarz counter -ecv1_activation_record_initializer::ecv1_activation_record_initializer() noexcept { - if ( 0 == counter++) { - ecv1_activation_record::current().reset( new ecv1_activation_record() ); - } -} - -ecv1_activation_record_initializer::~ecv1_activation_record_initializer() { - if ( 0 == --counter) { - BOOST_ASSERT( ecv1_activation_record::current()->is_main_context() ); - delete ecv1_activation_record::current().detach(); - } -} - -} - -namespace v1 { - -execution_context -execution_context::current() noexcept { - // initialized the first time control passes; per thread - thread_local static detail::ecv1_activation_record_initializer initializer; - return execution_context(); -} - -} - -#endif - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif diff --git a/contrib/restricted/boost/libs/context/src/fiber.cpp b/contrib/restricted/boost/libs/context/src/fiber.cpp deleted file mode 100644 index 9bb4ba6e03..0000000000 --- a/contrib/restricted/boost/libs/context/src/fiber.cpp +++ /dev/null @@ -1,58 +0,0 @@ - -// Copyright Oliver Kowalke 2017. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#if defined(BOOST_USE_UCONTEXT) -#include "boost/context/fiber_ucontext.hpp" -#elif defined(BOOST_USE_WINFIB) -#include "boost/context/fiber_winfib.hpp" -#endif - -#include <boost/config.hpp> - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace context { -namespace detail { - -// zero-initialization -thread_local fiber_activation_record * current_rec; -thread_local static std::size_t counter; - -// schwarz counter -fiber_activation_record_initializer::fiber_activation_record_initializer() noexcept { - if ( 0 == counter++) { - current_rec = new fiber_activation_record(); - } -} - -fiber_activation_record_initializer::~fiber_activation_record_initializer() { - if ( 0 == --counter) { - BOOST_ASSERT( current_rec->is_main_context() ); - delete current_rec; - } -} - -} - -namespace detail { - -fiber_activation_record *& -fiber_activation_record::current() noexcept { - // initialized the first time control passes; per thread - thread_local static fiber_activation_record_initializer initializer; - return current_rec; -} - -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif diff --git a/contrib/restricted/boost/libs/context/src/untested.cpp b/contrib/restricted/boost/libs/context/src/untested.cpp deleted file mode 100644 index d6e20868c5..0000000000 --- a/contrib/restricted/boost/libs/context/src/untested.cpp +++ /dev/null @@ -1,7 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#error "! code for this platform is untested - please remove this file from build/Jamfile.v2 and report the test-result on boost-track !" diff --git a/contrib/restricted/boost/libs/context/src/windows/stack_traits.cpp b/contrib/restricted/boost/libs/context/src/windows/stack_traits.cpp deleted file mode 100644 index 14016b1b3a..0000000000 --- a/contrib/restricted/boost/libs/context/src/windows/stack_traits.cpp +++ /dev/null @@ -1,116 +0,0 @@ - -// Copyright Oliver Kowalke 2014. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include "boost/context/stack_traits.hpp" - -extern "C" { -#include <windows.h> -} - -//#if defined (BOOST_WINDOWS) || _POSIX_C_SOURCE >= 200112L - -#include <algorithm> -#include <cmath> -#include <cstddef> -#include <cstring> -#include <stdexcept> - -#include <boost/assert.hpp> -#include <boost/context/detail/config.hpp> -#if defined(BOOST_NO_CXX11_HDR_MUTEX) -# include <boost/thread.hpp> -#else -# include <mutex> -#endif - -#include <boost/context/stack_context.hpp> - -// x86_64 -// test x86_64 before i386 because icc might -// define __i686__ for x86_64 too -#if defined(__x86_64__) || defined(__x86_64) \ - || defined(__amd64__) || defined(__amd64) \ - || defined(_M_X64) || defined(_M_AMD64) - -// Windows seams not to provide a constant or function -// telling the minimal stacksize -# define MIN_STACKSIZE 8 * 1024 -#else -# define MIN_STACKSIZE 4 * 1024 -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace { - -void system_info_( SYSTEM_INFO * si) BOOST_NOEXCEPT_OR_NOTHROW { - ::GetSystemInfo( si); -} - -SYSTEM_INFO system_info() BOOST_NOEXCEPT_OR_NOTHROW { - static SYSTEM_INFO si; -#if defined(BOOST_NO_CXX11_HDR_MUTEX) - static boost::once_flag flag = BOOST_ONCE_INIT; - boost::call_once( flag, static_cast< void(*)( SYSTEM_INFO *) >( system_info_), & si); -#else - static std::once_flag flag; - std::call_once( flag, static_cast< void(*)( SYSTEM_INFO *) >( system_info_), & si); -#endif - return si; -} - -std::size_t pagesize() BOOST_NOEXCEPT_OR_NOTHROW { - return static_cast< std::size_t >( system_info().dwPageSize); -} - -} - -namespace boost { -namespace context { - -// Windows seams not to provide a limit for the stacksize -// libcoco uses 32k+4k bytes as minimum -BOOST_CONTEXT_DECL -bool -stack_traits::is_unbounded() BOOST_NOEXCEPT_OR_NOTHROW { - return true; -} - -BOOST_CONTEXT_DECL -std::size_t -stack_traits::page_size() BOOST_NOEXCEPT_OR_NOTHROW { - return pagesize(); -} - -BOOST_CONTEXT_DECL -std::size_t -stack_traits::default_size() BOOST_NOEXCEPT_OR_NOTHROW { - return 128 * 1024; -} - -// because Windows seams not to provide a limit for minimum stacksize -BOOST_CONTEXT_DECL -std::size_t -stack_traits::minimum_size() BOOST_NOEXCEPT_OR_NOTHROW { - return MIN_STACKSIZE; -} - -// because Windows seams not to provide a limit for maximum stacksize -// maximum_size() can never be called (pre-condition ! is_unbounded() ) -BOOST_CONTEXT_DECL -std::size_t -stack_traits::maximum_size() BOOST_NOEXCEPT_OR_NOTHROW { - BOOST_ASSERT( ! is_unbounded() ); - return 1 * 1024 * 1024 * 1024; // 1GB -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif diff --git a/contrib/restricted/boost/libs/coroutine/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/coroutine/.yandex_meta/licenses.list.txt deleted file mode 100644 index e36f8b9042..0000000000 --- a/contrib/restricted/boost/libs/coroutine/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,36 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/coroutine/src/windows/stack_traits.cpp b/contrib/restricted/boost/libs/coroutine/src/windows/stack_traits.cpp deleted file mode 100644 index bdf417a745..0000000000 --- a/contrib/restricted/boost/libs/coroutine/src/windows/stack_traits.cpp +++ /dev/null @@ -1,114 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include "boost/coroutine/stack_traits.hpp" - -extern "C" { -#include <windows.h> -} - -//#if defined (BOOST_WINDOWS) || _POSIX_C_SOURCE >= 200112L - -#include <algorithm> -#include <cmath> -#include <cstddef> -#include <cstring> -#include <stdexcept> - -#include <boost/assert.hpp> -#include <boost/coroutine/detail/config.hpp> -#include <boost/thread.hpp> - -#include <boost/coroutine/stack_context.hpp> - -// x86_64 -// test x86_64 before i386 because icc might -// define __i686__ for x86_64 too -#if defined(__x86_64__) || defined(__x86_64) \ - || defined(__amd64__) || defined(__amd64) \ - || defined(_M_X64) || defined(_M_AMD64) - -// Windows seams not to provide a constant or function -// telling the minimal stacksize -# define MIN_STACKSIZE 8 * 1024 -#else -# define MIN_STACKSIZE 4 * 1024 -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace { - -void system_info_( SYSTEM_INFO * si) -{ ::GetSystemInfo( si); } - -SYSTEM_INFO system_info() -{ - static SYSTEM_INFO si; - static boost::once_flag flag; - boost::call_once( flag, static_cast< void(*)( SYSTEM_INFO *) >( system_info_), & si); - return si; -} - -std::size_t pagesize() -{ return static_cast< std::size_t >( system_info().dwPageSize); } - -std::size_t page_count( std::size_t stacksize) -{ - return static_cast< std::size_t >( - std::floor( - static_cast< float >( stacksize) / pagesize() ) ); -} - -} - -namespace boost { -namespace coroutines { - -// Windows seams not to provide a limit for the stacksize -// libcoco uses 32k+4k bytes as minimum -bool -stack_traits::is_unbounded() BOOST_NOEXCEPT -{ return true; } - -std::size_t -stack_traits::page_size() BOOST_NOEXCEPT -{ return pagesize(); } - -std::size_t -stack_traits::default_size() BOOST_NOEXCEPT -{ - std::size_t size = 64 * 1024; // 64 kB - if ( is_unbounded() ) - return (std::max)( size, minimum_size() ); - - BOOST_ASSERT( maximum_size() >= minimum_size() ); - return maximum_size() == minimum_size() - ? minimum_size() - : ( std::min)( size, maximum_size() ); -} - -// because Windows seams not to provide a limit for minimum stacksize -std::size_t -stack_traits::minimum_size() BOOST_NOEXCEPT -{ return MIN_STACKSIZE; } - -// because Windows seams not to provide a limit for maximum stacksize -// maximum_size() can never be called (pre-condition ! is_unbounded() ) -std::size_t -stack_traits::maximum_size() BOOST_NOEXCEPT -{ - BOOST_ASSERT( ! is_unbounded() ); - return 1 * 1024 * 1024 * 1024; // 1GB -} - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif diff --git a/contrib/restricted/boost/libs/date_time/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/date_time/.yandex_meta/licenses.list.txt deleted file mode 100644 index 06ca92039d..0000000000 --- a/contrib/restricted/boost/libs/date_time/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,50 +0,0 @@ -====================BSL-1.0==================== - * Use, modification and distribution is subject to the - * Boost Software License, Version 1.0. (See accompanying - * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the - * Boost Software License, Version 1.0. (See accompanying - - -====================COPYRIGHT==================== -/* Copyright (c) 2002-2004 CrystalClear Software, Inc. - * Subject to the Boost Software License, Version 1.0. (See accompanying - * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) - * Author: Jeff Garland, Bart Garst - * $Date$ - - -====================COPYRIGHT==================== -/* Copyright (c) 2002-2005 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the - * Boost Software License, Version 1.0. (See accompanying - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/date_time/src/gregorian/gregorian_types.cpp b/contrib/restricted/boost/libs/date_time/src/gregorian/gregorian_types.cpp deleted file mode 100644 index 7dd7f22bfc..0000000000 --- a/contrib/restricted/boost/libs/date_time/src/gregorian/gregorian_types.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (c) 2002,2003 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the - * Boost Software License, Version 1.0. (See accompanying - * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) - * Author: Jeff Garland - * $Date$ - */ - - -/** @defgroup date_basics Date Basics - This page summarizes some of the key user types and functions needed - to write programs using the gregorian date system. This is not a - comprehensive list, but rather some key types to start exploring. - - -**/ - -/** @defgroup date_alg Date Algorithms / Generators - Date algorithms or generators are tools for generating other dates or - schedules of dates. A generator function starts with some part of a - date such as a month and day and is supplied another part to then - generate a final date. - -**/ - -/** @defgroup date_format Date Formatting - The functions on these page are some of the key formatting functions - for dates. -**/ - - -//File doesn't have a current purpose except to generate docs -//and keep it changeable without recompiles -/*! @example days_alive.cpp - Calculate the number of days you have been living using durations and dates. -*/ -/*! @example days_till_new_year.cpp - Calculate the number of days till new years -*/ -/*! @example print_month.cpp - Simple utility to print out days of the month with the days of a month. Demontstrates date iteration (date_time::date_itr). -*/ -/*! @example localization.cpp - An example showing localized stream-based I/O. -*/ -/*! @example dates_as_strings.cpp - Various parsing and output of strings (mostly supported for - compilers that do not support localized streams). -*/ -/*! @example period_calc.cpp - Calculates if a date is in an 'irregular' collection of periods using - period calculation functions. -*/ -/*! @example print_holidays.cpp - This is an example of using functors to define a holiday schedule - */ -/*! @example localization.cpp - Demonstrates the use of facets to localize date output for Gregorian dates. - */ - - - diff --git a/contrib/restricted/boost/libs/date_time/src/posix_time/posix_time_types.cpp b/contrib/restricted/boost/libs/date_time/src/posix_time/posix_time_types.cpp deleted file mode 100644 index 4395301040..0000000000 --- a/contrib/restricted/boost/libs/date_time/src/posix_time/posix_time_types.cpp +++ /dev/null @@ -1,35 +0,0 @@ - -/* Copyright (c) 2002-2004 CrystalClear Software, Inc. - * Use, modification and distribution is subject to the - * Boost Software License, Version 1.0. (See accompanying - * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) - * Author: Jeff Garland - * $Date$ - */ - - -//File doesn't have a current purpose except to generate docs -//and keep it changeable without recompiles - -/** @defgroup time_basics Time Basics - -**/ - -/** @defgroup time_format Time Formatting - -**/ - - - -/*! @example local_utc_conversion.cpp - Demonstrate utc to local and local to utc calculations including dst. -*/ -/*! @example time_periods.cpp Demonstrate some simple uses of time periods. -*/ -/*! @example print_hours.cpp Demonstrate time iteration, clock retrieval, and simple calculation. - */ -/*! @example time_math.cpp Various types of calculations with times and time durations. - */ - - - diff --git a/contrib/restricted/boost/libs/exception/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/exception/.yandex_meta/licenses.list.txt deleted file mode 100644 index ef636c0de3..0000000000 --- a/contrib/restricted/boost/libs/exception/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,33 +0,0 @@ -====================BSL-1.0==================== -//Distributed under the Boost Software License, Version 1.0. (See accompanying -//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/filesystem/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/filesystem/.yandex_meta/licenses.list.txt deleted file mode 100644 index 65af627257..0000000000 --- a/contrib/restricted/boost/libs/filesystem/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,80 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Use, modification, and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy -// at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt -// or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// Copyright 2002-2005 Beman Dawes -// Use, modification, and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy - - -====================COPYRIGHT==================== -// Copyright 2002-2009, 2014 Beman Dawes -// Copyright 2001 Dietmar Kuehl - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2008 -// Copyright Vicente J. Botet Escriba 2009 - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2008, 2009 - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2009 - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2010 - - -====================COPYRIGHT==================== -// Copyright Vladimir Prus 2004. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/iostreams/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/iostreams/.yandex_meta/licenses.list.txt deleted file mode 100644 index 49ffba18e1..0000000000 --- a/contrib/restricted/boost/libs/iostreams/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,67 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - - -====================COPYRIGHT==================== -// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) -// (C) Copyright 2003-2007 Jonathan Turkanis -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - - -====================COPYRIGHT==================== -// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) -// (C) Copyright 2005-2007 Jonathan Turkanis -// (C) Copyright Jonathan Graehl 2004. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - - -====================COPYRIGHT==================== -// (C) Copyright Jorge Lodos 2008. -// (C) Copyright Jonathan Turkanis 2003. -// (C) Copyright Craig Henderson 2002. 'boost/memmap.hpp' from sandbox -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - - -====================COPYRIGHT==================== -// (C) Copyright Milan Svoboda 2008. -// Originally developed under the fusecompress project. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - - -====================COPYRIGHT==================== -// (C) Copyright Thorsten Ottosen 2005 -// (C) Copyright Howard Hinnant 2004 -// (C) Copyright Jonathan Turkanis 2004 -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/iostreams/CMakeLists.txt b/contrib/restricted/boost/libs/iostreams/CMakeLists.txt index e8c98bfd99..c031ddb850 100644 --- a/contrib/restricted/boost/libs/iostreams/CMakeLists.txt +++ b/contrib/restricted/boost/libs/iostreams/CMakeLists.txt @@ -6,6 +6,6 @@ # original buildsystem will not be accepted. -if (UNIX AND NOT APPLE) +if (UNIX) include(CMakeLists.linux.txt) endif() diff --git a/contrib/restricted/boost/libs/iostreams/src/bzip2.cpp b/contrib/restricted/boost/libs/iostreams/src/bzip2.cpp deleted file mode 100644 index af80cd2f94..0000000000 --- a/contrib/restricted/boost/libs/iostreams/src/bzip2.cpp +++ /dev/null @@ -1,168 +0,0 @@ -// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) -// (C) Copyright 2003-2007 Jonathan Turkanis -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// To configure Boost to work with libbz2, see the -// installation instructions here: -// http://boost.org/libs/iostreams/doc/index.html?path=7 - -// Define BOOST_IOSTREAMS_SOURCE so that <boost/iostreams/detail/config.hpp> -// knows that we are building the library (possibly exporting code), rather -// than using it (possibly importing code). -#define BOOST_IOSTREAMS_SOURCE - -#include <boost/throw_exception.hpp> -#include <boost/iostreams/detail/config/dyn_link.hpp> -#include <boost/iostreams/filter/bzip2.hpp> -#include "bzlib.h" // Julian Seward's "bzip.h" header. - // To configure Boost to work with libbz2, see the - // installation instructions here: - // http://boost.org/libs/iostreams/doc/index.html?path=7 - -namespace boost { namespace iostreams { - -namespace bzip2 { - - // Status codes - -const int ok = BZ_OK; -const int run_ok = BZ_RUN_OK; -const int flush_ok = BZ_FLUSH_OK; -const int finish_ok = BZ_FINISH_OK; -const int stream_end = BZ_STREAM_END; -const int sequence_error = BZ_SEQUENCE_ERROR; -const int param_error = BZ_PARAM_ERROR; -const int mem_error = BZ_MEM_ERROR; -const int data_error = BZ_DATA_ERROR; -const int data_error_magic = BZ_DATA_ERROR_MAGIC; -const int io_error = BZ_IO_ERROR; -const int unexpected_eof = BZ_UNEXPECTED_EOF; -const int outbuff_full = BZ_OUTBUFF_FULL; -const int config_error = BZ_CONFIG_ERROR; - - // Action codes - -const int finish = BZ_FINISH; -const int run = BZ_RUN; - -} // End namespace bzip2. - -//------------------Implementation of bzip2_error-----------------------------// - -bzip2_error::bzip2_error(int error) - : BOOST_IOSTREAMS_FAILURE("bzip2 error"), error_(error) - { } - -void bzip2_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(int error) -{ - switch (error) { - case BZ_OK: - case BZ_RUN_OK: - case BZ_FLUSH_OK: - case BZ_FINISH_OK: - case BZ_STREAM_END: - return; - case BZ_MEM_ERROR: - boost::throw_exception(std::bad_alloc()); - default: - boost::throw_exception(bzip2_error(error)); - } -} - -//------------------Implementation of bzip2_base------------------------------// - -namespace detail { - -bzip2_base::bzip2_base(const bzip2_params& params) - : params_(params), stream_(new bz_stream), ready_(false) - { } - -bzip2_base::~bzip2_base() { delete static_cast<bz_stream*>(stream_); } - -void bzip2_base::before( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end ) -{ - bz_stream* s = static_cast<bz_stream*>(stream_); - s->next_in = const_cast<char*>(src_begin); - s->avail_in = static_cast<unsigned>(src_end - src_begin); - s->next_out = reinterpret_cast<char*>(dest_begin); - s->avail_out= static_cast<unsigned>(dest_end - dest_begin); -} - -void bzip2_base::after(const char*& src_begin, char*& dest_begin) -{ - bz_stream* s = static_cast<bz_stream*>(stream_); - src_begin = const_cast<char*>(s->next_in); - dest_begin = s->next_out; -} - -int bzip2_base::check_end(const char* src_begin, const char* dest_begin) -{ - bz_stream* s = static_cast<bz_stream*>(stream_); - if( src_begin == s->next_in && - s->avail_in == 0 && - dest_begin == s->next_out) { - return bzip2::unexpected_eof; - } else { - return bzip2::ok; - } -} - -void bzip2_base::end(bool compress) -{ - if(!ready_) return; - ready_ = false; - bz_stream* s = static_cast<bz_stream*>(stream_); - bzip2_error::check BOOST_PREVENT_MACRO_SUBSTITUTION( - compress ? - BZ2_bzCompressEnd(s) : - BZ2_bzDecompressEnd(s) - ); -} - -int bzip2_base::compress(int action) -{ - return BZ2_bzCompress(static_cast<bz_stream*>(stream_), action); -} - -int bzip2_base::decompress() -{ - return BZ2_bzDecompress(static_cast<bz_stream*>(stream_)); -} - -void bzip2_base::do_init - ( bool compress, - bzip2::alloc_func /* alloc */, - bzip2::free_func /* free */, - void* derived ) -{ - bz_stream* s = static_cast<bz_stream*>(stream_); - - // Current interface for customizing memory management - // is non-conforming and has been disabled: - // s->bzalloc = alloc; - // s->bzfree = free; - s->bzalloc = 0; - s->bzfree = 0; - s->opaque = derived; - bzip2_error::check BOOST_PREVENT_MACRO_SUBSTITUTION( - compress ? - BZ2_bzCompressInit( s, - params_.block_size, - 0, - params_.work_factor ) : - BZ2_bzDecompressInit( s, - 0, - params_.small ) - ); - ready_ = true; -} - -} // End namespace detail. - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. diff --git a/contrib/restricted/boost/libs/iostreams/src/lzma.cpp b/contrib/restricted/boost/libs/iostreams/src/lzma.cpp deleted file mode 100644 index 5d7bb3cfbd..0000000000 --- a/contrib/restricted/boost/libs/iostreams/src/lzma.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// (C) Copyright Milan Svoboda 2008. -// Originally developed under the fusecompress project. -// Based on bzip2.cpp by: -// (C) Copyright Jonathan Turkanis 2003. -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) - -// See http://www.boost.org/libs/iostreams for documentation. - -// Define BOOST_IOSTREAMS_SOURCE so that <boost/iostreams/detail/config.hpp> -// knows that we are building the library (possibly exporting code), rather -// than using it (possibly importing code). -#define BOOST_IOSTREAMS_SOURCE - -#include <lzma.h> - -#include <boost/throw_exception.hpp> -#include <boost/iostreams/detail/config/dyn_link.hpp> -#include <boost/iostreams/filter/lzma.hpp> - -namespace boost { namespace iostreams { - -namespace lzma { - - // Compression levels - -const uint32_t no_compression = 0; -const uint32_t best_speed = 1; -const uint32_t best_compression = 9; -const uint32_t default_compression = 2; - - // Status codes - -const int okay = LZMA_OK; -const int stream_end = LZMA_STREAM_END; -const int unsupported_check = LZMA_UNSUPPORTED_CHECK; -const int mem_error = LZMA_MEM_ERROR; -const int options_error = LZMA_OPTIONS_ERROR; -const int data_error = LZMA_DATA_ERROR; -const int buf_error = LZMA_BUF_ERROR; -const int prog_error = LZMA_PROG_ERROR; - - // Flush codes - -const int finish = LZMA_FINISH; -const int full_flush = LZMA_FULL_FLUSH; -const int sync_flush = LZMA_SYNC_FLUSH; -const int run = LZMA_RUN; - - // Code for current OS - -} // End namespace lzma. - -//------------------Implementation of lzma_error------------------------------// - -lzma_error::lzma_error(int error) - : BOOST_IOSTREAMS_FAILURE("lzma error"), error_(error) - { } - -void lzma_error::check BOOST_PREVENT_MACRO_SUBSTITUTION(int error) -{ - switch (error) { - case LZMA_OK: - case LZMA_STREAM_END: - return; - case LZMA_MEM_ERROR: - boost::throw_exception(std::bad_alloc()); - default: - boost::throw_exception(lzma_error(error)); - } -} - -//------------------Implementation of lzma_base-------------------------------// - -namespace detail { - -lzma_base::lzma_base() - : stream_(new lzma_stream) - { } - -lzma_base::~lzma_base() { delete static_cast<lzma_stream*>(stream_); } - -void lzma_base::before( const char*& src_begin, const char* src_end, - char*& dest_begin, char* dest_end ) -{ - lzma_stream* s = static_cast<lzma_stream*>(stream_); - s->next_in = reinterpret_cast<uint8_t*>(const_cast<char*>(src_begin)); - s->avail_in = static_cast<size_t>(src_end - src_begin); - s->next_out = reinterpret_cast<uint8_t*>(dest_begin); - s->avail_out= static_cast<size_t>(dest_end - dest_begin); -} - -void lzma_base::after(const char*& src_begin, char*& dest_begin, bool) -{ - lzma_stream* s = static_cast<lzma_stream*>(stream_); - src_begin = const_cast<const char*>(reinterpret_cast<const char*>(s->next_in)); - dest_begin = reinterpret_cast<char*>(s->next_out); -} - -int lzma_base::deflate(int action) -{ - return lzma_code(static_cast<lzma_stream*>(stream_), static_cast<lzma_action>(action)); -} - -int lzma_base::inflate(int action) -{ - return lzma_code(static_cast<lzma_stream*>(stream_), static_cast<lzma_action>(action)); -} - -void lzma_base::reset(bool compress, bool realloc) -{ - lzma_stream* s = static_cast<lzma_stream*>(stream_); - lzma_end(s); - if (realloc) - { - memset(s, 0, sizeof(*s)); - - lzma_error::check BOOST_PREVENT_MACRO_SUBSTITUTION( - compress ? - lzma_easy_encoder(s, level, LZMA_CHECK_CRC32) : - lzma_stream_decoder(s, 100 * 1024 * 1024, LZMA_CONCATENATED) - ); - } -} - -void lzma_base::do_init - ( const lzma_params& p, bool compress, - lzma::alloc_func, lzma::free_func, - void* ) -{ - lzma_stream* s = static_cast<lzma_stream*>(stream_); - - memset(s, 0, sizeof(*s)); - - level = p.level; - lzma_error::check BOOST_PREVENT_MACRO_SUBSTITUTION( - compress ? - lzma_easy_encoder(s, p.level, LZMA_CHECK_CRC32) : - lzma_stream_decoder(s, 100 * 1024 * 1024, LZMA_CONCATENATED) - ); -} - -} // End namespace detail. - -//----------------------------------------------------------------------------// - -} } // End namespaces iostreams, boost. diff --git a/contrib/restricted/boost/libs/locale/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/locale/.yandex_meta/licenses.list.txt deleted file mode 100644 index 43e19a74a4..0000000000 --- a/contrib/restricted/boost/libs/locale/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,38 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) - - -====================COPYRIGHT==================== -// Copyright (c) 2009-2015 Artyom Beilis (Tonkikh) - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/locale/src/win32/all_generator.hpp b/contrib/restricted/boost/libs/locale/src/win32/all_generator.hpp deleted file mode 100644 index 083d056272..0000000000 --- a/contrib/restricted/boost/libs/locale/src/win32/all_generator.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// -// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -#ifndef BOOST_LOCALE_IMPL_WIN32_ALL_GENERATOR_HPP -#define BOOST_LOCALE_IMPL_WIN32_ALL_GENERATOR_HPP - -#include <boost/locale/generator.hpp> -#include <vector> -#include <locale.h> - -namespace boost { - namespace locale { - namespace impl_win { - - class winlocale; - - std::locale create_convert( std::locale const &in, - winlocale const &lc, - character_facet_type type); - - std::locale create_collate( std::locale const &in, - winlocale const &lc, - character_facet_type type); - - std::locale create_formatting( std::locale const &in, - winlocale const &lc, - character_facet_type type); - - std::locale create_parsing( std::locale const &in, - winlocale const &lc, - character_facet_type type); - - std::locale create_codecvt( std::locale const &in, - character_facet_type type); - - } - } -} - -#endif -// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/contrib/restricted/boost/libs/locale/src/win32/api.hpp b/contrib/restricted/boost/libs/locale/src/win32/api.hpp deleted file mode 100644 index a41fbde5e6..0000000000 --- a/contrib/restricted/boost/libs/locale/src/win32/api.hpp +++ /dev/null @@ -1,357 +0,0 @@ -// -// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -#ifndef BOOST_LOCALE_IMPL_WIN32_API_HPP -#define BOOST_LOCALE_IMPL_WIN32_API_HPP - -#include <string> -#include <vector> -#include <sstream> -#include <iomanip> -#include <limits> -#include <ctime> - -#include "lcid.hpp" - -#ifndef NOMINMAX -#define NOMINMAX -#endif -#ifndef UNICODE -#define UNICODE -#endif -#include <windows.h> - -#include <boost/locale/conversion.hpp> -#include <boost/locale/collator.hpp> - -#define BOOST_LOCALE_WINDOWS_2000_API - -#if defined(_WIN32_NT) && _WIN32_NT >= 0x600 && !defined(BOOST_LOCALE_WINDOWS_2000_API) -#define BOOST_LOCALE_WINDOWS_VISTA_API -#else -#define BOOST_LOCALE_WINDOWS_2000_API -#endif - -namespace boost { -namespace locale { -namespace impl_win { - - struct numeric_info { - std::wstring thousands_sep; - std::wstring decimal_point; - std::string grouping; - }; - - inline DWORD collation_level_to_flag(collator_base::level_type level) - { - DWORD flags; - switch(level) { - case collator_base::primary: - flags = NORM_IGNORESYMBOLS | NORM_IGNORECASE | NORM_IGNORENONSPACE; - break; - case collator_base::secondary: - flags = NORM_IGNORESYMBOLS | NORM_IGNORECASE; - break; - case collator_base::tertiary: - flags = NORM_IGNORESYMBOLS; - break; - default: - flags = 0; - } - return flags; - } - - - - #ifdef BOOST_LOCALE_WINDOWS_2000_API - - class winlocale{ - public: - winlocale() : - lcid(0) - { - } - - winlocale(std::string const &name) - { - lcid = locale_to_lcid(name); - } - - unsigned lcid; - - bool is_c() const - { - return lcid == 0; - } - }; - - - //////////////////////////////////////////////////////////////////////// - /// - /// Number Format - /// - //////////////////////////////////////////////////////////////////////// - - inline numeric_info wcsnumformat_l(winlocale const &l) - { - numeric_info res; - res.decimal_point = L'.'; - unsigned lcid = l.lcid; - - if(lcid == 0) - return res; - - // limits according to MSDN - static const int th_size = 4; - static const int de_size = 4; - static const int gr_size = 10; - - wchar_t th[th_size]={0}; - wchar_t de[de_size]={0}; - wchar_t gr[gr_size]={0}; - - if( GetLocaleInfoW(lcid,LOCALE_STHOUSAND,th,th_size)==0 - || GetLocaleInfoW(lcid,LOCALE_SDECIMAL ,de,de_size)==0 - || GetLocaleInfoW(lcid,LOCALE_SGROUPING,gr,gr_size)==0) - { - return res; - } - res.decimal_point = de; - res.thousands_sep = th; - bool inf_group = false; - for(unsigned i=0;gr[i];i++) { - if(gr[i]==L';') - continue; - if(L'1'<= gr[i] && gr[i]<=L'9') { - res.grouping += char(gr[i]-L'0'); - } - else if(gr[i]==L'0') - inf_group = true; - } - if(!inf_group) { - if(std::numeric_limits<char>::is_signed) { - res.grouping+=std::numeric_limits<char>::min(); - } - else { - res.grouping+=std::numeric_limits<char>::max(); - } - } - return res; - } - - inline std::wstring win_map_string_l(unsigned flags,wchar_t const *begin,wchar_t const *end,winlocale const &l) - { - std::wstring res; - int len = LCMapStringW(l.lcid,flags,begin,end-begin,0,0); - if(len == 0) - return res; - std::vector<wchar_t> buf(len+1); - int l2 = LCMapStringW(l.lcid,flags,begin,end-begin,&buf.front(),buf.size()); - res.assign(&buf.front(),l2); - return res; - } - - //////////////////////////////////////////////////////////////////////// - /// - /// Collation - /// - //////////////////////////////////////////////////////////////////////// - - - inline int wcscoll_l( collator_base::level_type level, - wchar_t const *lb,wchar_t const *le, - wchar_t const *rb,wchar_t const *re, - winlocale const &l) - { - return CompareStringW(l.lcid,collation_level_to_flag(level),lb,le-lb,rb,re-rb) - 2; - } - - - //////////////////////////////////////////////////////////////////////// - /// - /// Money Format - /// - //////////////////////////////////////////////////////////////////////// - - inline std::wstring wcsfmon_l(double value,winlocale const &l) - { - std::wostringstream ss; - ss.imbue(std::locale::classic()); - - ss << std::setprecision(std::numeric_limits<double>::digits10+1) << value; - std::wstring sval = ss.str(); - int len = GetCurrencyFormatW(l.lcid,0,sval.c_str(),0,0,0); - std::vector<wchar_t> buf(len+1); - GetCurrencyFormatW(l.lcid,0,sval.c_str(),0,&buf.front(),len); - return &buf.front(); - } - - //////////////////////////////////////////////////////////////////////// - /// - /// Time Format - /// - //////////////////////////////////////////////////////////////////////// - - - inline std::wstring wcs_format_date_l(wchar_t const *format,SYSTEMTIME const *tm,winlocale const &l) - { - int len = GetDateFormatW(l.lcid,0,tm,format,0,0); - std::vector<wchar_t> buf(len+1); - GetDateFormatW(l.lcid,0,tm,format,&buf.front(),len); - return &buf.front(); - } - - inline std::wstring wcs_format_time_l(wchar_t const *format,SYSTEMTIME const *tm,winlocale const &l) - { - int len = GetTimeFormatW(l.lcid,0,tm,format,0,0); - std::vector<wchar_t> buf(len+1); - GetTimeFormatW(l.lcid,0,tm,format,&buf.front(),len); - return &buf.front(); - } - - inline std::wstring wcsfold(wchar_t const *begin,wchar_t const *end) - { - winlocale l; - l.lcid = 0x0409; // en-US - return win_map_string_l(LCMAP_LOWERCASE,begin,end,l); - } - - inline std::wstring wcsnormalize(norm_type norm,wchar_t const *begin,wchar_t const *end) - { - // We use FoldString, under Vista it actually does normalization; - // under XP and below it does something similar, half job, better then nothing - unsigned flags = 0; - switch(norm) { - case norm_nfd: - flags = MAP_COMPOSITE; - break; - case norm_nfc: - flags = MAP_PRECOMPOSED; - break; - case norm_nfkd: - flags = MAP_FOLDCZONE; - break; - case norm_nfkc: - flags = MAP_FOLDCZONE | MAP_COMPOSITE; - break; - default: - flags = MAP_PRECOMPOSED; - } - - int len = FoldStringW(flags,begin,end-begin,0,0); - if(len == 0) - return std::wstring(); - std::vector<wchar_t> v(len+1); - len = FoldStringW(flags,begin,end-begin,&v.front(),len+1); - return std::wstring(&v.front(),len); - } - - - #endif - - inline std::wstring wcsxfrm_l(collator_base::level_type level,wchar_t const *begin,wchar_t const *end,winlocale const &l) - { - int flag = LCMAP_SORTKEY | collation_level_to_flag(level); - - return win_map_string_l(flag,begin,end,l); - } - - inline std::wstring towupper_l(wchar_t const *begin,wchar_t const *end,winlocale const &l) - { - return win_map_string_l(LCMAP_UPPERCASE | LCMAP_LINGUISTIC_CASING,begin,end,l); - } - - inline std::wstring towlower_l(wchar_t const *begin,wchar_t const *end,winlocale const &l) - { - return win_map_string_l(LCMAP_LOWERCASE | LCMAP_LINGUISTIC_CASING,begin,end,l); - } - - inline std::wstring wcsftime_l(char c,std::tm const *tm,winlocale const &l) - { - SYSTEMTIME wtm=SYSTEMTIME(); - wtm.wYear = tm->tm_year + 1900; - wtm.wMonth = tm->tm_mon+1; - wtm.wDayOfWeek = tm->tm_wday; - wtm.wDay = tm->tm_mday; - wtm.wHour = tm->tm_hour; - wtm.wMinute = tm->tm_min; - wtm.wSecond = tm->tm_sec; - switch(c) { - case 'a': // Abbr Weekday - return wcs_format_date_l(L"ddd",&wtm,l); - case 'A': // Full Weekday - return wcs_format_date_l(L"dddd",&wtm,l); - case 'b': // Abbr Month - return wcs_format_date_l(L"MMM",&wtm,l); - case 'B': // Full Month - return wcs_format_date_l(L"MMMM",&wtm,l); - case 'c': // DateTile Full - return wcs_format_date_l(0,&wtm,l) + L" " + wcs_format_time_l(0,&wtm,l); - // not supported by WIN ;( - // case 'C': // Century -> 1980 -> 19 - // retur - case 'd': // Day of Month [01,31] - return wcs_format_date_l(L"dd",&wtm,l); - case 'D': // %m/%d/%y - return wcs_format_date_l(L"MM/dd/yy",&wtm,l); - case 'e': // Day of Month [1,31] - return wcs_format_date_l(L"d",&wtm,l); - case 'h': // == b - return wcs_format_date_l(L"MMM",&wtm,l); - case 'H': // 24 clock hour 00,23 - return wcs_format_time_l(L"HH",&wtm,l); - case 'I': // 12 clock hour 01,12 - return wcs_format_time_l(L"hh",&wtm,l); - /* - case 'j': // day of year 001,366 - return "D";*/ - case 'm': // month as [01,12] - return wcs_format_date_l(L"MM",&wtm,l); - case 'M': // minute [00,59] - return wcs_format_time_l(L"mm",&wtm,l); - case 'n': // \n - return L"\n"; - case 'p': // am-pm - return wcs_format_time_l(L"tt",&wtm,l); - case 'r': // time with AM/PM %I:%M:%S %p - return wcs_format_time_l(L"hh:mm:ss tt",&wtm,l); - case 'R': // %H:%M - return wcs_format_time_l(L"HH:mm",&wtm,l); - case 'S': // second [00,61] - return wcs_format_time_l(L"ss",&wtm,l); - case 't': // \t - return L"\t"; - case 'T': // %H:%M:%S - return wcs_format_time_l(L"HH:mm:ss",&wtm,l); -/* case 'u': // weekday 1,7 1=Monday - case 'U': // week number of year [00,53] Sunday first - case 'V': // week number of year [01,53] Moday first - case 'w': // weekday 0,7 0=Sunday - case 'W': // week number of year [00,53] Moday first, */ - case 'x': // Date - return wcs_format_date_l(0,&wtm,l); - case 'X': // Time - return wcs_format_time_l(0,&wtm,l); - case 'y': // Year [00-99] - return wcs_format_date_l(L"yy",&wtm,l); - case 'Y': // Year 1998 - return wcs_format_date_l(L"yyyy",&wtm,l); - case '%': // % - return L"%"; - default: - return L""; - } - } - - - -} // win -} // locale -} // boost -#endif -// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 - diff --git a/contrib/restricted/boost/libs/locale/src/win32/collate.cpp b/contrib/restricted/boost/libs/locale/src/win32/collate.cpp deleted file mode 100644 index 40e8c3d217..0000000000 --- a/contrib/restricted/boost/libs/locale/src/win32/collate.cpp +++ /dev/null @@ -1,127 +0,0 @@ -// -// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -#define BOOST_LOCALE_SOURCE -#include <locale> -#include <string> -#include <ios> -#include <boost/locale/encoding.hpp> -#include <boost/locale/generator.hpp> -#include "api.hpp" -#include "../shared/mo_hash.hpp" - -namespace boost { -namespace locale { -namespace impl_win { - -class utf8_collator : public collator<char> { -public: - utf8_collator(winlocale lc,size_t refs = 0) : - collator<char>(refs), - lc_(lc) - { - } - virtual int do_compare(collator_base::level_type level,char const *lb,char const *le,char const *rb,char const *re) const - { - std::wstring l=conv::to_utf<wchar_t>(lb,le,"UTF-8"); - std::wstring r=conv::to_utf<wchar_t>(rb,re,"UTF-8"); - return wcscoll_l(level,l.c_str(),l.c_str()+l.size(),r.c_str(),r.c_str()+r.size(),lc_); - } - virtual long do_hash(collator_base::level_type level,char const *b,char const *e) const - { - std::string key = do_transform(level,b,e); - return gnu_gettext::pj_winberger_hash_function(key.c_str(),key.c_str() + key.size()); - } - virtual std::string do_transform(collator_base::level_type level,char const *b,char const *e) const - { - std::wstring tmp=conv::to_utf<wchar_t>(b,e,"UTF-8"); - std::wstring wkey = wcsxfrm_l(level,tmp.c_str(),tmp.c_str()+tmp.size(),lc_); - std::string key; - if(sizeof(wchar_t)==2) - key.reserve(wkey.size()*2); - else - key.reserve(wkey.size()*3); - for(unsigned i=0;i<wkey.size();i++) { - if(sizeof(wchar_t)==2) { - uint16_t tv = static_cast<uint16_t>(wkey[i]); - key += char(tv >> 8); - key += char(tv & 0xFF); - } - else { // 4 - uint32_t tv = static_cast<uint32_t>(wkey[i]); - // 21 bit - key += char((tv >> 16) & 0xFF); - key += char((tv >> 8) & 0xFF); - key += char(tv & 0xFF); - } - } - return key; - } -private: - winlocale lc_; -}; - - -class utf16_collator : public collator<wchar_t> { -public: - typedef std::collate<wchar_t> wfacet; - utf16_collator(winlocale lc,size_t refs = 0) : - collator<wchar_t>(refs), - lc_(lc) - { - } - virtual int do_compare(collator_base::level_type level,wchar_t const *lb,wchar_t const *le,wchar_t const *rb,wchar_t const *re) const - { - return wcscoll_l(level,lb,le,rb,re,lc_); - } - virtual long do_hash(collator_base::level_type level,wchar_t const *b,wchar_t const *e) const - { - std::wstring key = do_transform(level,b,e); - char const *begin = reinterpret_cast<char const *>(key.c_str()); - char const *end = begin + key.size()*sizeof(wchar_t); - return gnu_gettext::pj_winberger_hash_function(begin,end); - } - virtual std::wstring do_transform(collator_base::level_type level,wchar_t const *b,wchar_t const *e) const - { - return wcsxfrm_l(level,b,e,lc_); - } -private: - winlocale lc_; -}; - - -std::locale create_collate( std::locale const &in, - winlocale const &lc, - character_facet_type type) -{ - if(lc.is_c()) { - switch(type) { - case char_facet: - return std::locale(in,new std::collate_byname<char>("C")); - case wchar_t_facet: - return std::locale(in,new std::collate_byname<wchar_t>("C")); - } - } - else { - switch(type) { - case char_facet: - return std::locale(in,new utf8_collator(lc)); - case wchar_t_facet: - return std::locale(in,new utf16_collator(lc)); - } - } - return in; -} - - -} // impl_std -} // locale -} //boost - - - -// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/contrib/restricted/boost/libs/locale/src/win32/converter.cpp b/contrib/restricted/boost/libs/locale/src/win32/converter.cpp deleted file mode 100644 index fffb0c7b8a..0000000000 --- a/contrib/restricted/boost/libs/locale/src/win32/converter.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -#define BOOST_LOCALE_SOURCE - -#include <locale> -#include <stdexcept> -#include <boost/locale/generator.hpp> -#include <boost/locale/conversion.hpp> -#include <boost/locale/encoding.hpp> -#include <vector> -#include <string.h> -#include "api.hpp" -#include "all_generator.hpp" - -namespace boost { -namespace locale { -namespace impl_win { - -class utf16_converter : public converter<wchar_t> -{ -public: - utf16_converter(winlocale const &lc,size_t refs = 0) : - converter<wchar_t>(refs), - lc_(lc) - { - } - virtual std::wstring convert(converter_base::conversion_type how,wchar_t const *begin,wchar_t const *end,int flags = 0) const - { - switch(how) { - case converter_base::upper_case: - return towupper_l(begin,end,lc_); - case converter_base::lower_case: - return towlower_l(begin,end,lc_); - case converter_base::case_folding: - return wcsfold(begin,end); - case converter_base::normalization: - return wcsnormalize(static_cast<norm_type>(flags),begin,end); - default: - return std::wstring(begin,end-begin); - } - } -private: - winlocale lc_; -}; - -class utf8_converter : public converter<char> { -public: - utf8_converter(winlocale const &lc,size_t refs = 0) : - converter<char>(refs), - lc_(lc) - { - } - virtual std::string convert(converter_base::conversion_type how,char const *begin,char const *end,int flags = 0) const - { - std::wstring tmp = conv::to_utf<wchar_t>(begin,end,"UTF-8"); - wchar_t const *wb=tmp.c_str(); - wchar_t const *we=wb+tmp.size(); - - std::wstring res; - - switch(how) { - case upper_case: - res = towupper_l(wb,we,lc_); - break; - case lower_case: - res = towlower_l(wb,we,lc_); - break; - case case_folding: - res = wcsfold(wb,we); - break; - case normalization: - res = wcsnormalize(static_cast<norm_type>(flags),wb,we); - break; - default: - res = tmp; // make gcc happy - } - return conv::from_utf(res,"UTF-8"); - } -private: - winlocale lc_; -}; - -std::locale create_convert( std::locale const &in, - winlocale const &lc, - character_facet_type type) -{ - switch(type) { - case char_facet: - return std::locale(in,new utf8_converter(lc)); - case wchar_t_facet: - return std::locale(in,new utf16_converter(lc)); - default: - return in; - } -} - - -} // namespace impl_win32 -} // locale -} // boost -// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/contrib/restricted/boost/libs/locale/src/win32/lcid.cpp b/contrib/restricted/boost/libs/locale/src/win32/lcid.cpp deleted file mode 100644 index 67542e6c6b..0000000000 --- a/contrib/restricted/boost/libs/locale/src/win32/lcid.cpp +++ /dev/null @@ -1,127 +0,0 @@ -// -// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -#define BOOST_LOCALE_SOURCE -#include "lcid.hpp" -#include <string.h> -#include <string> -#include <sstream> -#include <map> - -#include "../util/locale_data.hpp" - -#ifndef NOMINMAX -#define NOMINMAX -#endif -#include <windows.h> - -#include <boost/thread/mutex.hpp> - -namespace boost { -namespace locale { -namespace impl_win { - -typedef std::map<std::string,unsigned> table_type; - -static table_type * volatile table = 0; - -boost::mutex &lcid_table_mutex() -{ - static boost::mutex m; - return m; -} - -table_type &real_lcid_table() -{ - static table_type table; - return table; -} - -BOOL CALLBACK proc(char *s) -{ - table_type &tbl = real_lcid_table(); - try { - std::istringstream ss; - ss.str(s); - ss >> std::hex; - - unsigned lcid ; - ss >>lcid; - if(ss.fail() || !ss.eof()) { - return FALSE; - } - - char iso_639_lang[16]; - char iso_3166_country[16]; - if(GetLocaleInfoA(lcid,LOCALE_SISO639LANGNAME,iso_639_lang,sizeof(iso_639_lang))==0) - return FALSE; - std::string lc_name = iso_639_lang; - if(GetLocaleInfoA(lcid,LOCALE_SISO3166CTRYNAME,iso_3166_country,sizeof(iso_3166_country))!=0) { - lc_name += "_"; - lc_name += iso_3166_country; - } - table_type::iterator p = tbl.find(lc_name); - if(p!=tbl.end()) { - if(p->second > lcid) - p->second = lcid; - } - else { - tbl[lc_name]=lcid; - } - } - catch(...) { - tbl.clear(); - return FALSE; - } - return TRUE; -} - - -table_type const &get_ready_lcid_table() -{ - if(table) - return *table; - else { - boost::unique_lock<boost::mutex> lock(lcid_table_mutex()); - if(table) - return *table; - EnumSystemLocalesA(proc,LCID_INSTALLED); - table = &real_lcid_table(); - return *table; - } -} - -unsigned locale_to_lcid(std::string const &locale_name) -{ - if(locale_name.empty()) { - return LOCALE_USER_DEFAULT; - } - boost::locale::util::locale_data d; - d.parse(locale_name); - std::string id = d.language; - - if(!d.country.empty()) { - id+="_"+d.country; - } - if(!d.variant.empty()) { - id+="@" + d.variant; - } - - table_type const &tbl = get_ready_lcid_table(); - table_type::const_iterator p = tbl.find(id); - - unsigned lcid = 0; - if(p!=tbl.end()) - lcid = p->second; - return lcid; -} - - -} // impl_win -} // locale -} // boost -// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/contrib/restricted/boost/libs/locale/src/win32/numeric.cpp b/contrib/restricted/boost/libs/locale/src/win32/numeric.cpp deleted file mode 100644 index 00bc94fd6d..0000000000 --- a/contrib/restricted/boost/libs/locale/src/win32/numeric.cpp +++ /dev/null @@ -1,245 +0,0 @@ -// -// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -#define BOOST_LOCALE_SOURCE -#include <locale> -#include <string> -#include <ios> -#include <boost/locale/formatting.hpp> -#include <boost/locale/generator.hpp> -#include <boost/locale/encoding.hpp> -#include <boost/shared_ptr.hpp> -#include <sstream> -#include <stdlib.h> -#include <time.h> -#include <string.h> -#include <wctype.h> -#include <ctype.h> - -#include "all_generator.hpp" -#include "api.hpp" -#include "../util/numeric.hpp" - -namespace boost { -namespace locale { -namespace impl_win { - namespace { - - std::ostreambuf_iterator<wchar_t> write_it(std::ostreambuf_iterator<wchar_t> out,std::wstring const &s) - { - for(size_t i=0;i<s.size();i++) - *out++ = s[i]; - return out; - } - - std::ostreambuf_iterator<char> write_it(std::ostreambuf_iterator<char> out,std::wstring const &s) - { - std::string tmp = conv::from_utf(s,"UTF-8"); - for(size_t i=0;i<tmp.size();i++) - *out++ = tmp[i]; - return out; - } - } - - -template<typename CharType> -class num_format : public util::base_num_format<CharType> -{ -public: - typedef typename std::num_put<CharType>::iter_type iter_type; - typedef std::basic_string<CharType> string_type; - typedef CharType char_type; - - num_format(winlocale const &lc,size_t refs = 0) : - util::base_num_format<CharType>(refs), - lc_(lc) - { - } -private: - - virtual - iter_type do_format_currency(bool /*intl*/,iter_type out,std::ios_base &ios,char_type fill,long double val) const - { - if(lc_.is_c()) { - std::locale loc = ios.getloc(); - int digits = std::use_facet<std::moneypunct<char_type> >(loc).frac_digits(); - while(digits > 0) { - val*=10; - digits --; - } - std::ios_base::fmtflags f=ios.flags(); - ios.flags(f | std::ios_base::showbase); - out = std::use_facet<std::money_put<char_type> >(loc).put(out,false,ios,fill,val); - ios.flags(f); - return out; - } - else { - std::wstring cur = wcsfmon_l(val,lc_); - return write_it(out,cur); - } - } - -private: - winlocale lc_; - -}; /// num_format - -template<typename CharType> -class time_put_win : public std::time_put<CharType> { -public: - time_put_win(winlocale const &lc, size_t refs = 0) : - std::time_put<CharType>(refs), - lc_(lc) - { - } - virtual ~time_put_win() - { - } - typedef typename std::time_put<CharType>::iter_type iter_type; - typedef CharType char_type; - typedef std::basic_string<char_type> string_type; - - virtual iter_type do_put( iter_type out, - std::ios_base &/*ios*/, - CharType /*fill*/, - std::tm const *tm, - char format, - char /*modifier*/) const - { - return write_it(out,wcsftime_l(format,tm,lc_)); - } - -private: - winlocale lc_; -}; - - -template<typename CharType> -class num_punct_win : public std::numpunct<CharType> { -public: - typedef std::basic_string<CharType> string_type; - num_punct_win(winlocale const &lc,size_t refs = 0) : - std::numpunct<CharType>(refs) - { - numeric_info np = wcsnumformat_l(lc) ; - if(sizeof(CharType) == 1 && np.thousands_sep == L"\xA0") - np.thousands_sep=L" "; - - to_str(np.thousands_sep,thousands_sep_); - to_str(np.decimal_point,decimal_point_); - grouping_ = np.grouping; - if(thousands_sep_.size() > 1) - grouping_ = std::string(); - if(decimal_point_.size() > 1) - decimal_point_ = CharType('.'); - } - - void to_str(std::wstring &s1,std::wstring &s2) - { - s2.swap(s1); - } - - void to_str(std::wstring &s1,std::string &s2) - { - s2=conv::from_utf(s1,"UTF-8"); - } - virtual CharType do_decimal_point() const - { - return *decimal_point_.c_str(); - } - virtual CharType do_thousands_sep() const - { - return *thousands_sep_.c_str(); - } - virtual std::string do_grouping() const - { - return grouping_; - } - virtual string_type do_truename() const - { - static const char t[]="true"; - return string_type(t,t+sizeof(t)-1); - } - virtual string_type do_falsename() const - { - static const char t[]="false"; - return string_type(t,t+sizeof(t)-1); - } -private: - string_type decimal_point_; - string_type thousands_sep_; - std::string grouping_; -}; - -template<typename CharType> -std::locale create_formatting_impl(std::locale const &in,winlocale const &lc) -{ - if(lc.is_c()) { - std::locale tmp(in,new std::numpunct_byname<CharType>("C")); - tmp=std::locale(tmp,new std::time_put_byname<CharType>("C")); - tmp = std::locale(tmp,new num_format<CharType>(lc)); - return tmp; - } - else { - std::locale tmp(in,new num_punct_win<CharType>(lc)); - tmp = std::locale(tmp,new time_put_win<CharType>(lc)); - tmp = std::locale(tmp,new num_format<CharType>(lc)); - return tmp; - } -} - -template<typename CharType> -std::locale create_parsing_impl(std::locale const &in,winlocale const &lc) -{ - std::numpunct<CharType> *np = 0; - if(lc.is_c()) - np = new std::numpunct_byname<CharType>("C"); - else - np = new num_punct_win<CharType>(lc); - std::locale tmp(in,np); - tmp = std::locale(tmp,new util::base_num_parse<CharType>()); - return tmp; -} - - -std::locale create_formatting( std::locale const &in, - winlocale const &lc, - character_facet_type type) -{ - switch(type) { - case char_facet: - return create_formatting_impl<char>(in,lc); - case wchar_t_facet: - return create_formatting_impl<wchar_t>(in,lc); - default: - return in; - } -} - -std::locale create_parsing( std::locale const &in, - winlocale const &lc, - character_facet_type type) -{ - switch(type) { - case char_facet: - return create_parsing_impl<char>(in,lc); - case wchar_t_facet: - return create_parsing_impl<wchar_t>(in,lc); - default: - return in; - } -} - - - -} // impl_std -} // locale -} //boost - - - -// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/contrib/restricted/boost/libs/locale/src/win32/win_backend.cpp b/contrib/restricted/boost/libs/locale/src/win32/win_backend.cpp deleted file mode 100644 index cd9ec8375b..0000000000 --- a/contrib/restricted/boost/libs/locale/src/win32/win_backend.cpp +++ /dev/null @@ -1,153 +0,0 @@ -// -// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -#define BOOST_LOCALE_SOURCE -#include <boost/locale/localization_backend.hpp> -#include <boost/locale/gnu_gettext.hpp> -#include <boost/locale/info.hpp> -#include "all_generator.hpp" -#include "win_backend.hpp" -#include <boost/locale/util.hpp> -#include "../util/gregorian.hpp" -#include "../util/locale_data.hpp" -#include "api.hpp" -#include <algorithm> -#include <iterator> - -namespace boost { -namespace locale { -namespace impl_win { - - class winapi_localization_backend : public localization_backend { - public: - winapi_localization_backend() : - invalid_(true) - { - } - winapi_localization_backend(winapi_localization_backend const &other) : - localization_backend(), - paths_(other.paths_), - domains_(other.domains_), - locale_id_(other.locale_id_), - invalid_(true) - { - } - virtual winapi_localization_backend *clone() const - { - return new winapi_localization_backend(*this); - } - - void set_option(std::string const &name,std::string const &value) - { - invalid_ = true; - if(name=="locale") - locale_id_ = value; - else if(name=="message_path") - paths_.push_back(value); - else if(name=="message_application") - domains_.push_back(value); - - } - void clear_options() - { - invalid_ = true; - locale_id_.clear(); - paths_.clear(); - domains_.clear(); - } - - void prepare_data() - { - if(!invalid_) - return; - invalid_ = false; - if(locale_id_.empty()) { - real_id_ = util::get_system_locale(true); // always UTF-8 - lc_ = winlocale(real_id_); - } - else { - lc_=winlocale(locale_id_); - real_id_ = locale_id_; - } - util::locale_data d; - d.parse(real_id_); - if(!d.utf8) { - lc_ = winlocale(); - // Make it C as non-UTF8 locales are not supported - } - } - - virtual std::locale install(std::locale const &base, - locale_category_type category, - character_facet_type type = nochar_facet) - { - prepare_data(); - - switch(category) { - case convert_facet: - return create_convert(base,lc_,type); - case collation_facet: - return create_collate(base,lc_,type); - case formatting_facet: - return create_formatting(base,lc_,type); - case parsing_facet: - return create_parsing(base,lc_,type); - case calendar_facet: - { - util::locale_data inf; - inf.parse(real_id_); - return util::install_gregorian_calendar(base,inf.country); - } - case message_facet: - { - gnu_gettext::messages_info minf; - std::locale tmp=util::create_info(std::locale::classic(),real_id_); - boost::locale::info const &inf=std::use_facet<boost::locale::info>(tmp); - minf.language = inf.language(); - minf.country = inf.country(); - minf.variant = inf.variant(); - minf.encoding = inf.encoding(); - std::copy(domains_.begin(),domains_.end(),std::back_inserter<gnu_gettext::messages_info::domains_type>(minf.domains)); - minf.paths = paths_; - switch(type) { - case char_facet: - return std::locale(base,gnu_gettext::create_messages_facet<char>(minf)); - case wchar_t_facet: - return std::locale(base,gnu_gettext::create_messages_facet<wchar_t>(minf)); - default: - return base; - } - } - case information_facet: - return util::create_info(base,real_id_); - case codepage_facet: - return util::create_utf8_codecvt(base,type); - default: - return base; - } - } - - private: - - std::vector<std::string> paths_; - std::vector<std::string> domains_; - std::string locale_id_; - std::string real_id_; - - bool invalid_; - winlocale lc_; - }; - - localization_backend *create_localization_backend() - { - return new winapi_localization_backend(); - } - -} // impl win -} // locale -} // boost -// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/contrib/restricted/boost/libs/log/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/log/.yandex_meta/licenses.list.txt deleted file mode 100644 index 977477afbc..0000000000 --- a/contrib/restricted/boost/libs/log/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,66 +0,0 @@ -====================BSL-1.0==================== - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== - Copyright Andrey Semashev 2007 - 2015. - - -====================COPYRIGHT==================== - * Copyright Lingxi Li 2015. - * Copyright Andrey Semashev 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== - * Copyright Lingxi Li 2015. - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== - * Copyright Andrey Semashev 2017. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== - * Copyright Andrey Semashev 2007 - 2018. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/log/config/atomic-int32/atomic_int32.cpp b/contrib/restricted/boost/libs/log/config/atomic-int32/atomic_int32.cpp deleted file mode 100644 index f39bcc8f5b..0000000000 --- a/contrib/restricted/boost/libs/log/config/atomic-int32/atomic_int32.cpp +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#include <boost/atomic.hpp> - -#if !defined(BOOST_ATOMIC_INT32_LOCK_FREE) || (BOOST_ATOMIC_INT32_LOCK_FREE+0) != 2 -#error Boost.Log: Native 32-bit atomic operations are required but not supported by Boost.Atomic on the target platform -#endif - -int main(int, char*[]) -{ - return 0; -} diff --git a/contrib/restricted/boost/libs/log/config/native-syslog/native_syslog.cpp b/contrib/restricted/boost/libs/log/config/native-syslog/native_syslog.cpp deleted file mode 100644 index 25605a682e..0000000000 --- a/contrib/restricted/boost/libs/log/config/native-syslog/native_syslog.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#include <syslog.h> - -int main(int, char*[]) -{ - ::openlog("test", LOG_NDELAY, LOG_USER); - - ::syslog(LOG_USER | LOG_DEBUG, "debug message"); - ::syslog(LOG_USER | LOG_INFO, "info message"); - ::syslog(LOG_USER | LOG_NOTICE, "notice message"); - ::syslog(LOG_USER | LOG_WARNING, "warning message"); - ::syslog(LOG_USER | LOG_ERR, "error message"); - ::syslog(LOG_USER | LOG_CRIT, "critical message"); - ::syslog(LOG_USER | LOG_ALERT, "alert message"); - ::syslog(LOG_USER | LOG_EMERG, "emergency message"); - - ::closelog(); - - return 0; -} diff --git a/contrib/restricted/boost/libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp b/contrib/restricted/boost/libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp deleted file mode 100644 index 36415aca02..0000000000 --- a/contrib/restricted/boost/libs/log/config/pthread-mutex-robust/pthread_mutex_robust.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Andrey Semashev 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#include <errno.h> -#include <pthread.h> - -int main(int, char*[]) -{ - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL); - pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); - pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST); - - pthread_mutex_t m; - pthread_mutex_init(&m, &attr); - pthread_mutexattr_destroy(&attr); - - int err = pthread_mutex_lock(&m); - if (err == EOWNERDEAD) - { - err = pthread_mutex_consistent(&m); - } - - if (err != ENOTRECOVERABLE) - { - pthread_mutex_unlock(&m); - } - - pthread_mutex_destroy(&m); - - return 0; -} diff --git a/contrib/restricted/boost/libs/log/config/visibility/visibility.cpp b/contrib/restricted/boost/libs/log/config/visibility/visibility.cpp deleted file mode 100644 index 30f1a64335..0000000000 --- a/contrib/restricted/boost/libs/log/config/visibility/visibility.cpp +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -// Guess what, MSVC doesn't ever fail on unknown options, even with /WX. Hence this additional check. -#if !defined(__GNUC__) -#error Visibility option is only supported by gcc and compatible compilers -#endif - -int main(int, char*[]) -{ - return 0; -} diff --git a/contrib/restricted/boost/libs/log/config/x86-ext/avx2.cpp b/contrib/restricted/boost/libs/log/config/x86-ext/avx2.cpp deleted file mode 100644 index fcc1b9215e..0000000000 --- a/contrib/restricted/boost/libs/log/config/x86-ext/avx2.cpp +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#include <immintrin.h> - -int main(int, char*[]) -{ - __m256i mm = _mm256_setzero_si256(); - mm = _mm256_shuffle_epi8(_mm256_alignr_epi8(mm, mm, 10), mm); - _mm256_zeroupper(); - return 0; -} diff --git a/contrib/restricted/boost/libs/log/config/x86-ext/ssse3.cpp b/contrib/restricted/boost/libs/log/config/x86-ext/ssse3.cpp deleted file mode 100644 index f7bfb30847..0000000000 --- a/contrib/restricted/boost/libs/log/config/x86-ext/ssse3.cpp +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -#include <tmmintrin.h> - -int main(int, char*[]) -{ - __m128i mm = _mm_setzero_si128(); - mm = _mm_shuffle_epi8(_mm_alignr_epi8(mm, mm, 10), mm); - return 0; -} diff --git a/contrib/restricted/boost/libs/log/config/xopen-source-600/xopen_source_600.cpp b/contrib/restricted/boost/libs/log/config/xopen-source-600/xopen_source_600.cpp deleted file mode 100644 index 1b26467c9b..0000000000 --- a/contrib/restricted/boost/libs/log/config/xopen-source-600/xopen_source_600.cpp +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Andrey Semashev 2017. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ - -// Test if we can include system headers with -D_XOPEN_SOURCE=600 -#undef _XOPEN_SOURCE -#define _XOPEN_SOURCE 600 - -#include <unistd.h> - -int main(int, char*[]) -{ - return 0; -} diff --git a/contrib/restricted/boost/libs/log/src/dump_avx2.cpp b/contrib/restricted/boost/libs/log/src/dump_avx2.cpp deleted file mode 100644 index 4ab12500fa..0000000000 --- a/contrib/restricted/boost/libs/log/src/dump_avx2.cpp +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file dump_avx2.cpp - * \author Andrey Semashev - * \date 05.05.2013 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -// NOTE: You should generally avoid including headers as much as possible here, because this file -// is compiled with special compiler options, and any included header may result in generation of -// unintended code with these options and violation of ODR. -#include <boost/log/detail/config.hpp> -#include <ostream> -#include <immintrin.h> -#include <boost/cstdint.hpp> -#include <boost/log/detail/header.hpp> - -#if defined(__x86_64) || defined(__x86_64__) || \ - defined(__amd64__) || defined(__amd64) || \ - defined(_M_X64) -#define BOOST_LOG_AUX_X86_64 -#endif - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace aux { - -extern const char g_hex_char_table[2][16]; - -template< typename CharT > -extern void dump_data_generic(const void* data, std::size_t size, std::basic_ostream< CharT >& strm); - -BOOST_LOG_ANONYMOUS_NAMESPACE { - -enum -{ - packs_per_stride = 32, - stride = packs_per_stride * 32 -}; - -union ymm_constant -{ - uint8_t as_bytes[32]; - __m256i as_mm; - - BOOST_FORCEINLINE operator __m256i () const { return as_mm; } -}; - -static const ymm_constant mm_shuffle_pattern1 = {{ 0x80, 0, 1, 0x80, 2, 3, 0x80, 4, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 0x80, 0, 1, 0x80, 2, 3, 0x80, 4, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80 }}; -static const ymm_constant mm_shuffle_pattern2 = {{ 0, 1, 0x80, 2, 3, 0x80, 4, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 10, 0, 1, 0x80, 2, 3, 0x80, 4, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 10 }}; -static const ymm_constant mm_shuffle_pattern3 = {{ 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 10, 11, 0x80, 12, 13, 0x80, 14, 15, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 10, 11, 0x80, 12, 13, 0x80, 14, 15 }}; -static const ymm_constant mm_shuffle_pattern13 = {{ 0x80, 0, 1, 0x80, 2, 3, 0x80, 4, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 10, 11, 0x80, 12, 13, 0x80, 14, 15 }}; - -#if defined(BOOST_LOG_AUX_X86_64) - -// x86-64 architecture has more registers which we can utilize to pass constants -#define BOOST_LOG_AUX_MM_CONSTANT_ARGS_DECL __m256i mm_15, __m256i mm_9, __m256i mm_char_0, __m256i mm_char_space, -#define BOOST_LOG_AUX_MM_CONSTANT_ARGS mm_15, mm_9, mm_char_0, mm_char_space, -#define BOOST_LOG_AUX_MM_CONSTANTS \ - const __m256i mm_15 = _mm256_set1_epi32(0x0F0F0F0F);\ - const __m256i mm_9 = _mm256_set1_epi32(0x09090909);\ - const __m256i mm_char_0 = _mm256_set1_epi32(0x30303030);\ - const __m256i mm_char_space = _mm256_set1_epi32(0x20202020); - -#else - -// MSVC in 32-bit mode is not able to pass all constants to dump_pack, and is also not able to align them on the stack, so we have to fetch them from global constants -static const ymm_constant mm_15 = {{ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F }}; -static const ymm_constant mm_9 = {{ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 }}; -static const ymm_constant mm_char_0 = {{ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }}; -static const ymm_constant mm_char_space = {{ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 }}; -#define BOOST_LOG_AUX_MM_CONSTANT_ARGS_DECL -#define BOOST_LOG_AUX_MM_CONSTANT_ARGS -#define BOOST_LOG_AUX_MM_CONSTANTS - -#endif - -/*! - * \brief Dumps a pack of input data into a string of 8 bit ASCII characters. - * - * The composed string is placed as follows (in Intel notation): mm_output1[127:0], mm_output2[127:0], mm_output3[127:0], mm_output1[255:128], mm_output2[255:128], mm_output3[255:128]. - */ -static BOOST_FORCEINLINE void dump_pack -( - BOOST_LOG_AUX_MM_CONSTANT_ARGS_DECL - __m256i mm_char_10_to_a, __m256i mm_input, - __m256i& mm_output1, __m256i& mm_output2, __m256i& mm_output3 -) -{ - // Split half-bytes - __m256i mm_input_hi = _mm256_and_si256(_mm256_srli_epi16(mm_input, 4), mm_15); - __m256i mm_input_lo = _mm256_and_si256(mm_input, mm_15); - - // Stringize each of the halves - __m256i mm_addend_hi = _mm256_cmpgt_epi8(mm_input_hi, mm_9); - __m256i mm_addend_lo = _mm256_cmpgt_epi8(mm_input_lo, mm_9); - mm_addend_hi = _mm256_and_si256(mm_char_10_to_a, mm_addend_hi); - mm_addend_lo = _mm256_and_si256(mm_char_10_to_a, mm_addend_lo); - - mm_input_hi = _mm256_add_epi8(mm_input_hi, mm_char_0); - mm_input_lo = _mm256_add_epi8(mm_input_lo, mm_char_0); - - mm_input_hi = _mm256_add_epi8(mm_input_hi, mm_addend_hi); - mm_input_lo = _mm256_add_epi8(mm_input_lo, mm_addend_lo); - - // Join them back together - __m256i mm_1 = _mm256_unpacklo_epi8(mm_input_hi, mm_input_lo); - __m256i mm_2 = _mm256_unpackhi_epi8(mm_input_hi, mm_input_lo); - - // Insert spaces between stringized bytes: - // |0123456789abcdef|0123456789abcdef| - // | 01 23 45 67 89 |ab cd ef 01 23 4|5 67 89 ab cd ef| - __m256i mm_out1 = _mm256_shuffle_epi8(mm_1, mm_shuffle_pattern1.as_mm); - __m256i mm_out3 = _mm256_shuffle_epi8(mm_2, mm_shuffle_pattern3.as_mm); - __m256i mm_out2 = _mm256_shuffle_epi8(_mm256_alignr_epi8(mm_2, mm_1, 10), mm_shuffle_pattern2.as_mm); - - mm_output1 = _mm256_max_epu8(mm_out1, mm_char_space); - mm_output2 = _mm256_max_epu8(mm_out2, mm_char_space); - mm_output3 = _mm256_max_epu8(mm_out3, mm_char_space); -} - -//! Dumps a pack of input data into a string of 8 bit ASCII characters -static BOOST_FORCEINLINE void dump_pack -( - BOOST_LOG_AUX_MM_CONSTANT_ARGS_DECL - __m256i mm_char_10_to_a, __m128i mm_input, - __m128i& mm_output1, __m128i& mm_output2, __m128i& mm_output3 -) -{ - // Split half-bytes - __m128i mm_input_hi = _mm_srli_epi16(mm_input, 4); - __m256i mm = _mm256_inserti128_si256(_mm256_castsi128_si256(_mm_unpacklo_epi8(mm_input_hi, mm_input)), _mm_unpackhi_epi8(mm_input_hi, mm_input), 1); - mm = _mm256_and_si256(mm, mm_15); - - // Stringize the halves - __m256i mm_addend = _mm256_cmpgt_epi8(mm, mm_9); - mm_addend = _mm256_and_si256(mm_char_10_to_a, mm_addend); - - mm = _mm256_add_epi8(mm, mm_char_0); - mm = _mm256_add_epi8(mm, mm_addend); - - // Insert spaces between stringized bytes: - __m256i mm_out13 = _mm256_shuffle_epi8(mm, mm_shuffle_pattern13.as_mm); - __m128i mm_out2 = _mm_shuffle_epi8(_mm_alignr_epi8(_mm256_extracti128_si256(mm, 1), _mm256_castsi256_si128(mm), 10), _mm256_castsi256_si128(mm_shuffle_pattern2.as_mm)); - - mm_out13 = _mm256_max_epu8(mm_out13, mm_char_space); - mm_output2 = _mm_max_epu8(mm_out2, _mm256_castsi256_si128(mm_char_space)); - mm_output1 = _mm256_castsi256_si128(mm_out13); - mm_output3 = _mm256_extracti128_si256(mm_out13, 1); -} - -template< typename CharT > -BOOST_FORCEINLINE void store_characters(__m128i mm_chars, CharT* buf) -{ - switch (sizeof(CharT)) - { - case 1: - _mm_store_si128(reinterpret_cast< __m128i* >(buf), mm_chars); - break; - - case 2: - _mm256_store_si256(reinterpret_cast< __m256i* >(buf), _mm256_cvtepu8_epi16(mm_chars)); - break; - - case 4: - { - __m128i mm = _mm_unpackhi_epi64(mm_chars, mm_chars); - _mm256_store_si256(reinterpret_cast< __m256i* >(buf), _mm256_cvtepu8_epi32(mm_chars)); - _mm256_store_si256(reinterpret_cast< __m256i* >(buf) + 1, _mm256_cvtepu8_epi32(mm)); - } - break; - } -} - -template< typename CharT > -BOOST_FORCEINLINE void store_characters_x3(__m256i mm_chars1, __m256i mm_chars2, __m256i mm_chars3, CharT* buf) -{ - store_characters(_mm256_castsi256_si128(mm_chars1), buf); - store_characters(_mm256_castsi256_si128(mm_chars2), buf + 16); - store_characters(_mm256_castsi256_si128(mm_chars3), buf + 32); - store_characters(_mm256_extracti128_si256(mm_chars1, 1), buf + 48); - store_characters(_mm256_extracti128_si256(mm_chars2, 1), buf + 64); - store_characters(_mm256_extracti128_si256(mm_chars3, 1), buf + 80); -} - -template< typename CharT > -BOOST_FORCEINLINE void dump_data_avx2(const void* data, std::size_t size, std::basic_ostream< CharT >& strm) -{ - typedef CharT char_type; - - char_type buf_storage[stride * 3u + 32u]; - // Align the temporary buffer at 32 bytes - char_type* const buf = reinterpret_cast< char_type* >((uint8_t*)buf_storage + (32u - (((uintptr_t)(char_type*)buf_storage) & 31u))); - char_type* buf_begin = buf + 1u; // skip the first space of the first chunk - char_type* buf_end = buf + stride * 3u; - - __m256i mm_char_10_to_a; - if (strm.flags() & std::ios_base::uppercase) - mm_char_10_to_a = _mm256_set1_epi32(0x07070707); // '9' is 0x39 and 'A' is 0x41 in ASCII, so we have to add 0x07 to 0x3A to get uppercase letters - else - mm_char_10_to_a = _mm256_set1_epi32(0x27272727); // ...and 'a' is 0x61, which means we have to add 0x27 to 0x3A to get lowercase letters - - // First, check the input alignment. Also, if we can dump the whole data in one go, do it right away. It turns out to be faster than splitting - // the work between prealign and tail part. It is also a fairly common case since on most platforms memory is not aligned to 32 bytes (i.e. prealign is often needed). - const uint8_t* p = static_cast< const uint8_t* >(data); - const std::size_t prealign_size = size == 32u ? static_cast< std::size_t >(32u) : static_cast< std::size_t >((32u - ((uintptr_t)p & 31u)) & 31u); - if (prealign_size) - { - __m256i mm_input = _mm256_lddqu_si256(reinterpret_cast< const __m256i* >(p)); - BOOST_LOG_AUX_MM_CONSTANTS - - __m256i mm_output1, mm_output2, mm_output3; - dump_pack(BOOST_LOG_AUX_MM_CONSTANT_ARGS mm_char_10_to_a, mm_input, mm_output1, mm_output2, mm_output3); - - store_characters_x3(mm_output1, mm_output2, mm_output3, buf); - - _mm256_zeroall(); // need to zero all ymm registers to avoid register spills/restores the compler generates around the function call - strm.write(buf_begin, prealign_size * 3u - 1u); - - buf_begin = buf; - size -= prealign_size; - p += prealign_size; - } - - const std::size_t stride_count = size / stride; - std::size_t tail_size = size % stride; - for (std::size_t i = 0; i < stride_count; ++i) - { - char_type* b = buf; - BOOST_LOG_AUX_MM_CONSTANTS - - for (unsigned int j = 0; j < packs_per_stride; ++j, b += 3u * 32u, p += 32u) - { - __m256i mm_input = _mm256_load_si256(reinterpret_cast< const __m256i* >(p)); - __m256i mm_output1, mm_output2, mm_output3; - dump_pack(BOOST_LOG_AUX_MM_CONSTANT_ARGS mm_char_10_to_a, mm_input, mm_output1, mm_output2, mm_output3); - - store_characters_x3(mm_output1, mm_output2, mm_output3, b); - } - - _mm256_zeroall(); // need to zero all ymm registers to avoid register spills/restores the compler generates around the function call - strm.write(buf_begin, buf_end - buf_begin); - buf_begin = buf; - } - - if (BOOST_UNLIKELY(tail_size > 0)) - { - char_type* b = buf; - while (tail_size >= 16u) - { - __m128i mm_input = _mm_load_si128(reinterpret_cast< const __m128i* >(p)); - BOOST_LOG_AUX_MM_CONSTANTS - - __m128i mm_output1, mm_output2, mm_output3; - dump_pack(BOOST_LOG_AUX_MM_CONSTANT_ARGS mm_char_10_to_a, mm_input, mm_output1, mm_output2, mm_output3); - - store_characters(mm_output1, b); - store_characters(mm_output2, b + 16u); - store_characters(mm_output3, b + 32u); - - b += 3u * 16u; - p += 16u; - tail_size -= 16u; - } - - _mm256_zeroall(); // need to zero all ymm registers to avoid register spills/restores the compler generates around the function call - const char* const char_table = g_hex_char_table[(strm.flags() & std::ios_base::uppercase) != 0]; - for (unsigned int i = 0; i < tail_size; ++i, ++p, b += 3u) - { - uint32_t n = *p; - b[0] = static_cast< char_type >(' '); - b[1] = static_cast< char_type >(char_table[n >> 4]); - b[2] = static_cast< char_type >(char_table[n & 0x0F]); - } - - strm.write(buf_begin, b - buf_begin); - } -} - -} // namespace - -void dump_data_char_avx2(const void* data, std::size_t size, std::basic_ostream< char >& strm) -{ - if (size >= 32) - { - dump_data_avx2(data, size, strm); - } - else - { - dump_data_generic(data, size, strm); - } -} - -void dump_data_wchar_avx2(const void* data, std::size_t size, std::basic_ostream< wchar_t >& strm) -{ - if (size >= 32) - { - dump_data_avx2(data, size, strm); - } - else - { - dump_data_generic(data, size, strm); - } -} - -#if !defined(BOOST_NO_CXX11_CHAR16_T) -void dump_data_char16_avx2(const void* data, std::size_t size, std::basic_ostream< char16_t >& strm) -{ - if (size >= 32) - { - dump_data_avx2(data, size, strm); - } - else - { - dump_data_generic(data, size, strm); - } -} -#endif - -#if !defined(BOOST_NO_CXX11_CHAR32_T) -void dump_data_char32_avx2(const void* data, std::size_t size, std::basic_ostream< char32_t >& strm) -{ - if (size >= 32) - { - dump_data_avx2(data, size, strm); - } - else - { - dump_data_generic(data, size, strm); - } -} -#endif - -} // namespace aux - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> diff --git a/contrib/restricted/boost/libs/log/src/dump_ssse3.cpp b/contrib/restricted/boost/libs/log/src/dump_ssse3.cpp deleted file mode 100644 index 1325b49c04..0000000000 --- a/contrib/restricted/boost/libs/log/src/dump_ssse3.cpp +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file dump_ssse3.cpp - * \author Andrey Semashev - * \date 05.05.2013 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -// NOTE: You should generally avoid including headers as much as possible here, because this file -// is compiled with special compiler options, and any included header may result in generation of -// unintended code with these options and violation of ODR. -#include <boost/log/detail/config.hpp> -#include <ostream> -#include <tmmintrin.h> -#include <boost/cstdint.hpp> -#include <boost/log/detail/header.hpp> - -#if defined(__x86_64) || defined(__x86_64__) || \ - defined(__amd64__) || defined(__amd64) || \ - defined(_M_X64) -#define BOOST_LOG_AUX_X86_64 -#endif - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace aux { - -extern const char g_hex_char_table[2][16]; - -template< typename CharT > -extern void dump_data_generic(const void* data, std::size_t size, std::basic_ostream< CharT >& strm); - -BOOST_LOG_ANONYMOUS_NAMESPACE { - -enum -{ - packs_per_stride = 32, - stride = packs_per_stride * 16 -}; - -union xmm_constant -{ - uint8_t as_bytes[16]; - __m128i as_mm; - - BOOST_FORCEINLINE operator __m128i () const { return as_mm; } -}; - -static const xmm_constant mm_shuffle_pattern1 = {{ 0x80, 0, 1, 0x80, 2, 3, 0x80, 4, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80 }}; -static const xmm_constant mm_shuffle_pattern2 = {{ 0, 1, 0x80, 2, 3, 0x80, 4, 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 10 }}; -static const xmm_constant mm_shuffle_pattern3 = {{ 5, 0x80, 6, 7, 0x80, 8, 9, 0x80, 10, 11, 0x80, 12, 13, 0x80, 14, 15 }}; - -#if defined(BOOST_LOG_AUX_X86_64) - -// x86-64 architecture has more registers which we can utilize to pass constants -#define BOOST_LOG_AUX_MM_CONSTANT_ARGS_DECL __m128i mm_15, __m128i mm_9, __m128i mm_char_0, __m128i mm_char_space, -#define BOOST_LOG_AUX_MM_CONSTANT_ARGS mm_15, mm_9, mm_char_0, mm_char_space, -#define BOOST_LOG_AUX_MM_CONSTANTS \ - const __m128i mm_15 = _mm_set1_epi32(0x0F0F0F0F);\ - const __m128i mm_9 = _mm_set1_epi32(0x09090909);\ - const __m128i mm_char_0 = _mm_set1_epi32(0x30303030);\ - const __m128i mm_char_space = _mm_set1_epi32(0x20202020); - -#else - -// MSVC in 32-bit mode is not able to pass all constants to dump_pack, and is also not able to align them on the stack, so we have to fetch them from global constants -static const xmm_constant mm_15 = {{ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F }}; -static const xmm_constant mm_9 = {{ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 }}; -static const xmm_constant mm_char_0 = {{ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }}; -static const xmm_constant mm_char_space = {{ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 }}; -#define BOOST_LOG_AUX_MM_CONSTANT_ARGS_DECL -#define BOOST_LOG_AUX_MM_CONSTANT_ARGS -#define BOOST_LOG_AUX_MM_CONSTANTS - -#endif - -//! Dumps a pack of input data into a string of 8 bit ASCII characters -static BOOST_FORCEINLINE void dump_pack -( - BOOST_LOG_AUX_MM_CONSTANT_ARGS_DECL - __m128i mm_char_10_to_a, __m128i mm_input, - __m128i& mm_output1, __m128i& mm_output2, __m128i& mm_output3 -) -{ - // Split half-bytes - __m128i mm_input_hi = _mm_and_si128(_mm_srli_epi16(mm_input, 4), mm_15); - __m128i mm_input_lo = _mm_and_si128(mm_input, mm_15); - - // Stringize each of the halves - __m128i mm_addend_hi = _mm_cmpgt_epi8(mm_input_hi, mm_9); - __m128i mm_addend_lo = _mm_cmpgt_epi8(mm_input_lo, mm_9); - mm_addend_hi = _mm_and_si128(mm_char_10_to_a, mm_addend_hi); - mm_addend_lo = _mm_and_si128(mm_char_10_to_a, mm_addend_lo); - - mm_input_hi = _mm_add_epi8(mm_input_hi, mm_char_0); - mm_input_lo = _mm_add_epi8(mm_input_lo, mm_char_0); - - mm_input_hi = _mm_add_epi8(mm_input_hi, mm_addend_hi); - mm_input_lo = _mm_add_epi8(mm_input_lo, mm_addend_lo); - - // Join them back together - __m128i mm_1 = _mm_unpacklo_epi8(mm_input_hi, mm_input_lo); - __m128i mm_2 = _mm_unpackhi_epi8(mm_input_hi, mm_input_lo); - - // Insert spaces between stringized bytes: - // |0123456789abcdef|0123456789abcdef| - // | 01 23 45 67 89 |ab cd ef 01 23 4|5 67 89 ab cd ef| - mm_output1 = _mm_shuffle_epi8(mm_1, mm_shuffle_pattern1.as_mm); - mm_output2 = _mm_shuffle_epi8(_mm_alignr_epi8(mm_2, mm_1, 10), mm_shuffle_pattern2.as_mm); - mm_output3 = _mm_shuffle_epi8(mm_2, mm_shuffle_pattern3.as_mm); - - mm_output1 = _mm_max_epu8(mm_output1, mm_char_space); - mm_output2 = _mm_max_epu8(mm_output2, mm_char_space); - mm_output3 = _mm_max_epu8(mm_output3, mm_char_space); -} - -template< typename CharT > -BOOST_FORCEINLINE void store_characters(__m128i mm_chars, CharT* buf) -{ - switch (sizeof(CharT)) - { - case 1: - _mm_store_si128(reinterpret_cast< __m128i* >(buf), mm_chars); - break; - - case 2: - { - __m128i mm_0 = _mm_setzero_si128(); - _mm_store_si128(reinterpret_cast< __m128i* >(buf), _mm_unpacklo_epi8(mm_chars, mm_0)); - _mm_store_si128(reinterpret_cast< __m128i* >(buf) + 1, _mm_unpackhi_epi8(mm_chars, mm_0)); - } - break; - - case 4: - { - __m128i mm_0 = _mm_setzero_si128(); - __m128i mm = _mm_unpacklo_epi8(mm_chars, mm_0); - _mm_store_si128(reinterpret_cast< __m128i* >(buf), _mm_unpacklo_epi16(mm, mm_0)); - _mm_store_si128(reinterpret_cast< __m128i* >(buf) + 1, _mm_unpackhi_epi16(mm, mm_0)); - mm = _mm_unpackhi_epi8(mm_chars, mm_0); - _mm_store_si128(reinterpret_cast< __m128i* >(buf) + 2, _mm_unpacklo_epi16(mm, mm_0)); - _mm_store_si128(reinterpret_cast< __m128i* >(buf) + 3, _mm_unpackhi_epi16(mm, mm_0)); - } - break; - } -} - -template< typename CharT > -BOOST_FORCEINLINE void dump_data_ssse3(const void* data, std::size_t size, std::basic_ostream< CharT >& strm) -{ - typedef CharT char_type; - - char_type buf_storage[stride * 3u + 16u]; - // Align the temporary buffer at 16 bytes - char_type* const buf = reinterpret_cast< char_type* >((uint8_t*)buf_storage + (16u - (((uintptr_t)(char_type*)buf_storage) & 15u))); - char_type* buf_begin = buf + 1u; // skip the first space of the first chunk - char_type* buf_end = buf + stride * 3u; - - __m128i mm_char_10_to_a; - if (strm.flags() & std::ios_base::uppercase) - mm_char_10_to_a = _mm_set1_epi32(0x07070707); // '9' is 0x39 and 'A' is 0x41 in ASCII, so we have to add 0x07 to 0x3A to get uppercase letters - else - mm_char_10_to_a = _mm_set1_epi32(0x27272727); // ...and 'a' is 0x61, which means we have to add 0x27 to 0x3A to get lowercase letters - - // First, check the input alignment - const uint8_t* p = static_cast< const uint8_t* >(data); - const std::size_t prealign_size = ((16u - ((uintptr_t)p & 15u)) & 15u); - if (BOOST_UNLIKELY(prealign_size > 0)) - { - __m128i mm_input = _mm_lddqu_si128(reinterpret_cast< const __m128i* >(p)); - BOOST_LOG_AUX_MM_CONSTANTS - - __m128i mm_output1, mm_output2, mm_output3; - dump_pack(BOOST_LOG_AUX_MM_CONSTANT_ARGS mm_char_10_to_a, mm_input, mm_output1, mm_output2, mm_output3); - - store_characters(mm_output1, buf); - store_characters(mm_output2, buf + 16u); - store_characters(mm_output3, buf + 32u); - - strm.write(buf_begin, prealign_size * 3u - 1u); - - buf_begin = buf; - size -= prealign_size; - p += prealign_size; - } - - const std::size_t stride_count = size / stride; - std::size_t tail_size = size % stride; - for (std::size_t i = 0; i < stride_count; ++i) - { - char_type* b = buf; - BOOST_LOG_AUX_MM_CONSTANTS - - for (unsigned int j = 0; j < packs_per_stride; ++j, b += 3u * 16u, p += 16u) - { - __m128i mm_input = _mm_load_si128(reinterpret_cast< const __m128i* >(p)); - __m128i mm_output1, mm_output2, mm_output3; - dump_pack(BOOST_LOG_AUX_MM_CONSTANT_ARGS mm_char_10_to_a, mm_input, mm_output1, mm_output2, mm_output3); - - store_characters(mm_output1, b); - store_characters(mm_output2, b + 16u); - store_characters(mm_output3, b + 32u); - } - - strm.write(buf_begin, buf_end - buf_begin); - buf_begin = buf; - } - - if (BOOST_UNLIKELY(tail_size > 0)) - { - char_type* b = buf; - while (tail_size >= 16u) - { - __m128i mm_input = _mm_load_si128(reinterpret_cast< const __m128i* >(p)); - BOOST_LOG_AUX_MM_CONSTANTS - - __m128i mm_output1, mm_output2, mm_output3; - dump_pack(BOOST_LOG_AUX_MM_CONSTANT_ARGS mm_char_10_to_a, mm_input, mm_output1, mm_output2, mm_output3); - - store_characters(mm_output1, b); - store_characters(mm_output2, b + 16u); - store_characters(mm_output3, b + 32u); - - b += 3u * 16u; - p += 16u; - tail_size -= 16u; - } - - const char* const char_table = g_hex_char_table[(strm.flags() & std::ios_base::uppercase) != 0]; - for (unsigned int i = 0; i < tail_size; ++i, ++p, b += 3u) - { - uint32_t n = *p; - b[0] = static_cast< char_type >(' '); - b[1] = static_cast< char_type >(char_table[n >> 4]); - b[2] = static_cast< char_type >(char_table[n & 0x0F]); - } - - strm.write(buf_begin, b - buf_begin); - } -} - -} // namespace - -void dump_data_char_ssse3(const void* data, std::size_t size, std::basic_ostream< char >& strm) -{ - if (size >= 16) - { - dump_data_ssse3(data, size, strm); - } - else - { - dump_data_generic(data, size, strm); - } -} - -void dump_data_wchar_ssse3(const void* data, std::size_t size, std::basic_ostream< wchar_t >& strm) -{ - if (size >= 16) - { - dump_data_ssse3(data, size, strm); - } - else - { - dump_data_generic(data, size, strm); - } -} - -#if !defined(BOOST_NO_CXX11_CHAR16_T) -void dump_data_char16_ssse3(const void* data, std::size_t size, std::basic_ostream< char16_t >& strm) -{ - if (size >= 16) - { - dump_data_ssse3(data, size, strm); - } - else - { - dump_data_generic(data, size, strm); - } -} -#endif - -#if !defined(BOOST_NO_CXX11_CHAR32_T) -void dump_data_char32_ssse3(const void* data, std::size_t size, std::basic_ostream< char32_t >& strm) -{ - if (size >= 16) - { - dump_data_ssse3(data, size, strm); - } - else - { - dump_data_generic(data, size, strm); - } -} -#endif - -} // namespace aux - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> diff --git a/contrib/restricted/boost/libs/log/src/windows/auto_handle.hpp b/contrib/restricted/boost/libs/log/src/windows/auto_handle.hpp deleted file mode 100644 index ebd01babd7..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/auto_handle.hpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file windows/auto_handle.hpp - * \author Andrey Semashev - * \date 07.03.2016 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#ifndef BOOST_LOG_WINDOWS_AUTO_HANDLE_HPP_INCLUDED_ -#define BOOST_LOG_WINDOWS_AUTO_HANDLE_HPP_INCLUDED_ - -#include <boost/log/detail/config.hpp> -#include <boost/assert.hpp> -#include <boost/winapi/handles.hpp> -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace ipc { - -namespace aux { - -//! A wrapper around a kernel object handle. Automatically closes the handle on destruction. -class auto_handle -{ -private: - boost::winapi::HANDLE_ m_handle; - -public: - explicit auto_handle(boost::winapi::HANDLE_ h = NULL) BOOST_NOEXCEPT : m_handle(h) - { - } - - ~auto_handle() BOOST_NOEXCEPT - { - if (m_handle) - BOOST_VERIFY(boost::winapi::CloseHandle(m_handle) != 0); - } - - void init(boost::winapi::HANDLE_ h) BOOST_NOEXCEPT - { - BOOST_ASSERT(m_handle == NULL); - m_handle = h; - } - - boost::winapi::HANDLE_ get() const BOOST_NOEXCEPT { return m_handle; } - boost::winapi::HANDLE_* get_ptr() BOOST_NOEXCEPT { return &m_handle; } - - void swap(auto_handle& that) BOOST_NOEXCEPT - { - boost::winapi::HANDLE_ h = m_handle; - m_handle = that.m_handle; - that.m_handle = h; - } - - BOOST_DELETED_FUNCTION(auto_handle(auto_handle const&)) - BOOST_DELETED_FUNCTION(auto_handle& operator=(auto_handle const&)) -}; - -} // namespace aux - -} // namespace ipc - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> - -#endif // BOOST_LOG_WINDOWS_AUTO_HANDLE_HPP_INCLUDED_ diff --git a/contrib/restricted/boost/libs/log/src/windows/debug_output_backend.cpp b/contrib/restricted/boost/libs/log/src/windows/debug_output_backend.cpp deleted file mode 100644 index 105dd68f4c..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/debug_output_backend.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file debug_output_backend.cpp - * \author Andrey Semashev - * \date 08.11.2008 - * - * \brief A logging sink backend that uses debugger output - */ - -#ifndef BOOST_LOG_WITHOUT_DEBUG_OUTPUT - -#include <boost/log/detail/config.hpp> -#include <string> -#include <boost/log/sinks/debug_output_backend.hpp> -#include <windows.h> -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace sinks { - -BOOST_LOG_ANONYMOUS_NAMESPACE { - -#if defined(BOOST_LOG_USE_CHAR) - inline void output_debug_string(const char* str) - { - OutputDebugStringA(str); - } -#endif // defined(BOOST_LOG_USE_CHAR) -#if defined(BOOST_LOG_USE_WCHAR_T) - inline void output_debug_string(const wchar_t* str) - { - OutputDebugStringW(str); - } -#endif // defined(BOOST_LOG_USE_WCHAR_T) - -} // namespace - -template< typename CharT > -BOOST_LOG_API basic_debug_output_backend< CharT >::basic_debug_output_backend() -{ -} - -template< typename CharT > -BOOST_LOG_API basic_debug_output_backend< CharT >::~basic_debug_output_backend() -{ -} - -//! The method puts the formatted message to the event log -template< typename CharT > -BOOST_LOG_API void basic_debug_output_backend< CharT >::consume(record_view const&, string_type const& formatted_message) -{ - output_debug_string(formatted_message.c_str()); -} - -#ifdef BOOST_LOG_USE_CHAR -template class basic_debug_output_backend< char >; -#endif -#ifdef BOOST_LOG_USE_WCHAR_T -template class basic_debug_output_backend< wchar_t >; -#endif - -} // namespace sinks - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> - -#endif // !defined(BOOST_LOG_WITHOUT_DEBUG_OUTPUT) diff --git a/contrib/restricted/boost/libs/log/src/windows/event_log_backend.cpp b/contrib/restricted/boost/libs/log/src/windows/event_log_backend.cpp deleted file mode 100644 index a3382c8c51..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/event_log_backend.cpp +++ /dev/null @@ -1,635 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file event_log_backend.cpp - * \author Andrey Semashev - * \date 07.11.2008 - * - * \brief A logging sink backend that uses Windows NT event log API - * for signalling application events. - */ - -#ifndef BOOST_LOG_WITHOUT_EVENT_LOG - -#include <boost/log/detail/config.hpp> -#include <string> -#include <vector> -#include <ostream> -#include <stdexcept> -#include <boost/scoped_array.hpp> -#include <boost/system/windows_error.hpp> -#include <boost/log/exceptions.hpp> -#include <boost/log/sinks/event_log_backend.hpp> -#include <boost/log/sinks/event_log_constants.hpp> -#include <boost/log/utility/once_block.hpp> -#include <boost/log/detail/cleanup_scope_guard.hpp> -#include <boost/log/detail/attachable_sstream_buf.hpp> -#include <boost/log/detail/code_conversion.hpp> -#include <boost/log/utility/formatting_ostream.hpp> -#include <windows.h> -#include <psapi.h> -#include "unique_ptr.hpp" -#include "windows/event_log_registry.hpp" -#include "windows/simple_event_log.h" -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace sinks { - -namespace event_log { - - //! The function constructs log record level from an integer - BOOST_LOG_API event_type make_event_type(unsigned short lev) - { - switch (lev) - { - case success: return success; - case warning: return warning; - case error: return error; - default: - BOOST_THROW_EXCEPTION(std::out_of_range("Windows NT event type is out of range")); - BOOST_LOG_UNREACHABLE_RETURN(info); - case info: return info; - } - } - -} // namespace event_log - -BOOST_LOG_ANONYMOUS_NAMESPACE { - -#ifdef BOOST_LOG_USE_CHAR - //! A simple forwarder to the ReportEvent API - inline BOOL report_event( - HANDLE hEventLog, - WORD wType, - WORD wCategory, - DWORD dwEventID, - PSID lpUserSid, - WORD wNumStrings, - DWORD dwDataSize, - const char** lpStrings, - LPVOID lpRawData) - { - return ReportEventA(hEventLog, wType, wCategory, dwEventID, lpUserSid, wNumStrings, dwDataSize, lpStrings, lpRawData); - } - //! A simple forwarder to the GetModuleFileName API - inline DWORD get_module_file_name(HMODULE hModule, char* lpFilename, DWORD nSize) - { - return GetModuleFileNameA(hModule, lpFilename, nSize); - } - //! A simple forwarder to the RegisterEventSource API - inline HANDLE register_event_source(const char* lpUNCServerName, const char* lpSourceName) - { - return RegisterEventSourceA(lpUNCServerName, lpSourceName); - } - //! The function completes default source name for the sink backend - inline void complete_default_simple_event_log_source_name(std::string& name) - { - name += " simple event source"; - } - //! The function completes default source name for the sink backend - inline void complete_default_event_log_source_name(std::string& name) - { - name += " event source"; - } -#endif // BOOST_LOG_USE_CHAR - -#ifdef BOOST_LOG_USE_WCHAR_T - //! A simple forwarder to the ReportEvent API - inline BOOL report_event( - HANDLE hEventLog, - WORD wType, - WORD wCategory, - DWORD dwEventID, - PSID lpUserSid, - WORD wNumStrings, - DWORD dwDataSize, - const wchar_t** lpStrings, - LPVOID lpRawData) - { - return ReportEventW(hEventLog, wType, wCategory, dwEventID, lpUserSid, wNumStrings, dwDataSize, lpStrings, lpRawData); - } - //! A simple forwarder to the GetModuleFileName API - inline DWORD get_module_file_name(HMODULE hModule, wchar_t* lpFilename, DWORD nSize) - { - return GetModuleFileNameW(hModule, lpFilename, nSize); - } - //! A simple forwarder to the RegisterEventSource API - inline HANDLE register_event_source(const wchar_t* lpUNCServerName, const wchar_t* lpSourceName) - { - return RegisterEventSourceW(lpUNCServerName, lpSourceName); - } - //! The function completes default source name for the sink backend - inline void complete_default_simple_event_log_source_name(std::wstring& name) - { - name += L" simple event source"; - } - //! The function completes default source name for the sink backend - inline void complete_default_event_log_source_name(std::wstring& name) - { - name += L" event source"; - } -#endif // BOOST_LOG_USE_WCHAR_T - - //! The function finds the handle for the current module - void init_self_module_handle(HMODULE& handle) - { - // Acquire all modules of the current process - HANDLE hProcess = GetCurrentProcess(); - std::vector< HMODULE > modules; - DWORD module_count = 1024; - do - { - modules.resize(module_count, HMODULE(0)); - BOOL res = EnumProcessModules( - hProcess, - &modules[0], - static_cast< DWORD >(modules.size() * sizeof(HMODULE)), - &module_count); - module_count /= sizeof(HMODULE); - - if (!res) - { - DWORD err = GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not enumerate process modules", (err)); - } - } - while (module_count > modules.size()); - modules.resize(module_count, HMODULE(0)); - - // Now find the current module among them - void* p = (void*)&init_self_module_handle; - for (std::size_t i = 0, n = modules.size(); i < n; ++i) - { - MODULEINFO info; - if (!GetModuleInformation(hProcess, modules[i], &info, sizeof(info))) - { - DWORD err = GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not acquire module information", (err)); - } - - if (info.lpBaseOfDll <= p && (static_cast< unsigned char* >(info.lpBaseOfDll) + info.SizeOfImage) > p) - { - // Found it - handle = modules[i]; - break; - } - } - - if (!handle) - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not find self module information", (boost::system::windows_error::invalid_handle)); - } - - //! Retrieves the full name of the current module (be that dll or exe) - template< typename CharT > - std::basic_string< CharT > get_current_module_name() - { - static HMODULE hSelfModule = 0; - - BOOST_LOG_ONCE_BLOCK() - { - init_self_module_handle(hSelfModule); - } - - // Get the module file name - CharT buf[MAX_PATH]; - DWORD size = get_module_file_name(hSelfModule, buf, sizeof(buf) / sizeof(*buf)); - if (size == 0) - { - DWORD err = GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not get module file name", (err)); - } - - return std::basic_string< CharT >(buf, buf + size); - } - -} // namespace - -////////////////////////////////////////////////////////////////////////// -// Simple event log backend implementation -////////////////////////////////////////////////////////////////////////// -//! Sink backend implementation -template< typename CharT > -struct basic_simple_event_log_backend< CharT >::implementation -{ - //! A handle for the registered event provider - HANDLE m_SourceHandle; - //! A level mapping functor - event_type_mapper_type m_LevelMapper; - - implementation() : m_SourceHandle(0) - { - } -}; - -//! Default constructor. Registers event source Boost.Log <Boost version> in the Application log. -template< typename CharT > -BOOST_LOG_API basic_simple_event_log_backend< CharT >::basic_simple_event_log_backend() -{ - construct(log::aux::empty_arg_list()); -} - -//! Destructor -template< typename CharT > -BOOST_LOG_API basic_simple_event_log_backend< CharT >::~basic_simple_event_log_backend() -{ - DeregisterEventSource(m_pImpl->m_SourceHandle); - delete m_pImpl; -} - -//! Constructs backend implementation -template< typename CharT > -BOOST_LOG_API void basic_simple_event_log_backend< CharT >::construct( - string_type const& target, string_type const& log_name, string_type const& source_name, event_log::registration_mode reg_mode) -{ - if (reg_mode != event_log::never) - { - aux::registry_params< char_type > reg_params; - reg_params.event_message_file = get_current_module_name< char_type >(); - reg_params.types_supported = DWORD( - EVENTLOG_SUCCESS | - EVENTLOG_INFORMATION_TYPE | - EVENTLOG_WARNING_TYPE | - EVENTLOG_ERROR_TYPE); - aux::init_event_log_registry(log_name, source_name, reg_mode == event_log::forced, reg_params); - } - - log::aux::unique_ptr< implementation > p(new implementation()); - - const char_type* target_unc = NULL; - if (!target.empty()) - target_unc = target.c_str(); - - HANDLE hSource = register_event_source(target_unc, source_name.c_str()); - if (!hSource) - { - const DWORD err = GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not register event source", (err)); - } - - p->m_SourceHandle = hSource; - - m_pImpl = p.release(); -} - -//! Returns default log name -template< typename CharT > -BOOST_LOG_API typename basic_simple_event_log_backend< CharT >::string_type -basic_simple_event_log_backend< CharT >::get_default_log_name() -{ - return aux::registry_traits< char_type >::make_default_log_name(); -} - -//! Returns default source name -template< typename CharT > -BOOST_LOG_API typename basic_simple_event_log_backend< CharT >::string_type -basic_simple_event_log_backend< CharT >::get_default_source_name() -{ - string_type source_name = aux::registry_traits< char_type >::make_default_source_name(); - complete_default_simple_event_log_source_name(source_name); - return source_name; -} - -//! The method installs the function object that maps application severity levels to WinAPI event types -template< typename CharT > -BOOST_LOG_API void basic_simple_event_log_backend< CharT >::set_event_type_mapper(event_type_mapper_type const& mapper) -{ - m_pImpl->m_LevelMapper = mapper; -} - -//! The method puts the formatted message to the event log -template< typename CharT > -BOOST_LOG_API void basic_simple_event_log_backend< CharT >::consume(record_view const& rec, string_type const& formatted_message) -{ - const char_type* message = formatted_message.c_str(); - event_log::event_type evt_type = event_log::info; - if (!m_pImpl->m_LevelMapper.empty()) - evt_type = m_pImpl->m_LevelMapper(rec); - - DWORD event_id; - switch (evt_type) - { - case event_log::success: - event_id = BOOST_LOG_MSG_DEBUG; break; - case event_log::warning: - event_id = BOOST_LOG_MSG_WARNING; break; - case event_log::error: - event_id = BOOST_LOG_MSG_ERROR; break; - default: - event_id = BOOST_LOG_MSG_INFO; break; - } - - report_event( - m_pImpl->m_SourceHandle, // Event log handle. - static_cast< WORD >(evt_type), // Event type. - 0, // Event category. - event_id, // Event identifier. - NULL, // No user security identifier. - 1, // Number of substitution strings. - 0, // No data. - &message, // Pointer to strings. - NULL); // No data. -} - -////////////////////////////////////////////////////////////////////////// -// Customizable event log backend implementation -////////////////////////////////////////////////////////////////////////// -namespace event_log { - - template< typename CharT > - class basic_event_composer< CharT >::insertion_composer - { - public: - //! Function object result type - typedef void result_type; - - private: - //! The list of insertion composers (in backward order) - typedef std::vector< formatter_type > formatters; - - private: - //! The insertion string composers - formatters m_Formatters; - - public: - //! Default constructor - insertion_composer() {} - //! Composition operator - void operator() (record_view const& rec, insertion_list& insertions) const - { - std::size_t size = m_Formatters.size(); - insertions.resize(size); - for (std::size_t i = 0; i < size; ++i) - { - typename formatter_type::stream_type strm(insertions[i]); - m_Formatters[i](rec, strm); - strm.flush(); - } - } - //! Adds a new formatter to the list - void add_formatter(formatter_type const& fmt) - { - m_Formatters.push_back(formatter_type(fmt)); - } - }; - - //! Default constructor - template< typename CharT > - basic_event_composer< CharT >::basic_event_composer(event_id_mapper_type const& id_mapper) : - m_EventIDMapper(id_mapper) - { - } - //! Copy constructor - template< typename CharT > - basic_event_composer< CharT >::basic_event_composer(basic_event_composer const& that) : - m_EventIDMapper(that.m_EventIDMapper), - m_EventMap(that.m_EventMap) - { - } - //! Destructor - template< typename CharT > - basic_event_composer< CharT >::~basic_event_composer() - { - } - - //! Assignment - template< typename CharT > - basic_event_composer< CharT >& basic_event_composer< CharT >::operator= (basic_event_composer that) - { - swap(that); - return *this; - } - //! Swapping - template< typename CharT > - void basic_event_composer< CharT >::swap(basic_event_composer& that) - { - m_EventIDMapper.swap(that.m_EventIDMapper); - m_EventMap.swap(that.m_EventMap); - } - //! Creates a new entry for a message - template< typename CharT > - typename basic_event_composer< CharT >::event_map_reference - basic_event_composer< CharT >::operator[] (event_id id) - { - return event_map_reference(id, *this); - } - //! Creates a new entry for a message - template< typename CharT > - typename basic_event_composer< CharT >::event_map_reference - basic_event_composer< CharT >::operator[] (int id) - { - return event_map_reference(make_event_id(id), *this); - } - - //! Event composition operator - template< typename CharT > - event_id basic_event_composer< CharT >::operator() (record_view const& rec, insertion_list& insertions) const - { - event_id id = m_EventIDMapper(rec); - typename event_map::const_iterator it = m_EventMap.find(id); - if (it != m_EventMap.end()) - it->second(rec, insertions); - return id; - } - - //! Adds a formatter to the insertion composers list - template< typename CharT > - typename basic_event_composer< CharT >::insertion_composer* - basic_event_composer< CharT >::add_formatter(event_id id, insertion_composer* composer, formatter_type const& fmt) - { - if (!composer) - composer = &m_EventMap[id]; - composer->add_formatter(fmt); - return composer; - } - -#ifdef BOOST_LOG_USE_CHAR - template class BOOST_LOG_API basic_event_composer< char >; -#endif -#ifdef BOOST_LOG_USE_WCHAR_T - template class BOOST_LOG_API basic_event_composer< wchar_t >; -#endif - -} // namespace event_log - - -//! Backend implementation -template< typename CharT > -struct basic_event_log_backend< CharT >::implementation -{ - // NOTE: This order of data members is critical for MSVC 9.0 in debug mode, - // as it ICEs if boost::functions are not the first members. Doh! - - //! An event category mapper - event_category_mapper_type m_CategoryMapper; - //! A level mapping functor - event_type_mapper_type m_LevelMapper; - - //! A handle for the registered event provider - HANDLE m_SourceHandle; - //! A functor that composes an event - event_composer_type m_EventComposer; - //! An array of formatted insertions - insertion_list m_Insertions; - - implementation() : m_SourceHandle(0) - { - } -}; - -//! Destructor -template< typename CharT > -BOOST_LOG_API basic_event_log_backend< CharT >::~basic_event_log_backend() -{ - DeregisterEventSource(m_pImpl->m_SourceHandle); - delete m_pImpl; -} - -//! Constructs backend implementation -template< typename CharT > -BOOST_LOG_API void basic_event_log_backend< CharT >::construct( - filesystem::path const& message_file_name, - string_type const& target, - string_type const& log_name, - string_type const& source_name, - event_log::registration_mode reg_mode) -{ - if (reg_mode != event_log::never) - { - if (message_file_name.empty()) - BOOST_THROW_EXCEPTION(std::invalid_argument("Message file name not specified.")); - aux::registry_params< char_type > reg_params; - string_type file_name; - log::aux::code_convert(message_file_name.string(), file_name); - reg_params.event_message_file = file_name; - reg_params.types_supported = DWORD( - EVENTLOG_SUCCESS | - EVENTLOG_INFORMATION_TYPE | - EVENTLOG_WARNING_TYPE | - EVENTLOG_ERROR_TYPE); - aux::init_event_log_registry(log_name, source_name, reg_mode == event_log::forced, reg_params); - } - - log::aux::unique_ptr< implementation > p(new implementation()); - - const char_type* target_unc = NULL; - if (!target.empty()) - target_unc = target.c_str(); - - HANDLE hSource = register_event_source(target_unc, source_name.c_str()); - if (!hSource) - { - const DWORD err = GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not register event source", (err)); - } - - p->m_SourceHandle = hSource; - - m_pImpl = p.release(); -} - -//! The method puts the formatted message to the event log -template< typename CharT > -BOOST_LOG_API void basic_event_log_backend< CharT >::consume(record_view const& rec) -{ - if (!m_pImpl->m_EventComposer.empty()) - { - log::aux::cleanup_guard< insertion_list > cleaner(m_pImpl->m_Insertions); - - // Get event ID and construct insertions - DWORD id = m_pImpl->m_EventComposer(rec, m_pImpl->m_Insertions); - WORD string_count = static_cast< WORD >(m_pImpl->m_Insertions.size()); - scoped_array< const char_type* > strings(new const char_type*[string_count]); - for (WORD i = 0; i < string_count; ++i) - strings[i] = m_pImpl->m_Insertions[i].c_str(); - - // Get event type - WORD event_type = EVENTLOG_INFORMATION_TYPE; - if (!m_pImpl->m_LevelMapper.empty()) - event_type = static_cast< WORD >(m_pImpl->m_LevelMapper(rec)); - - WORD event_category = 0; - if (!m_pImpl->m_CategoryMapper.empty()) - event_category = static_cast< WORD >(m_pImpl->m_CategoryMapper(rec)); - - report_event( - m_pImpl->m_SourceHandle, // Event log handle. - event_type, // Event type. - event_category, // Event category. - id, // Event identifier. - NULL, // No user security identifier. - string_count, // Number of substitution strings. - 0, // No data. - strings.get(), // Pointer to strings. - NULL); // No data. - } -} - -//! Returns default log name -template< typename CharT > -BOOST_LOG_API typename basic_event_log_backend< CharT >::string_type -basic_event_log_backend< CharT >::get_default_log_name() -{ - return aux::registry_traits< char_type >::make_default_log_name(); -} - -//! Returns default source name -template< typename CharT > -BOOST_LOG_API typename basic_event_log_backend< CharT >::string_type -basic_event_log_backend< CharT >::get_default_source_name() -{ - string_type source_name = aux::registry_traits< char_type >::make_default_source_name(); - complete_default_event_log_source_name(source_name); - return source_name; -} - -//! The method installs the function object that maps application severity levels to WinAPI event types -template< typename CharT > -BOOST_LOG_API void basic_event_log_backend< CharT >::set_event_type_mapper(event_type_mapper_type const& mapper) -{ - m_pImpl->m_LevelMapper = mapper; -} - -//! The method installs the function object that extracts event category from attribute values -template< typename CharT > -BOOST_LOG_API void basic_event_log_backend< CharT >::set_event_category_mapper(event_category_mapper_type const& mapper) -{ - m_pImpl->m_CategoryMapper = mapper; -} - -/*! - * The method installs the function object that extracts event identifier from the attributes and creates - * insertion strings that will replace placeholders in the event message. - */ -template< typename CharT > -BOOST_LOG_API void basic_event_log_backend< CharT >::set_event_composer(event_composer_type const& composer) -{ - m_pImpl->m_EventComposer = composer; -} - - -#ifdef BOOST_LOG_USE_CHAR -template class basic_simple_event_log_backend< char >; -template class basic_event_log_backend< char >; -#endif -#ifdef BOOST_LOG_USE_WCHAR_T -template class basic_simple_event_log_backend< wchar_t >; -template class basic_event_log_backend< wchar_t >; -#endif - -} // namespace sinks - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> - -#endif // !defined(BOOST_LOG_WITHOUT_EVENT_LOG) diff --git a/contrib/restricted/boost/libs/log/src/windows/event_log_registry.hpp b/contrib/restricted/boost/libs/log/src/windows/event_log_registry.hpp deleted file mode 100644 index 9d1579accb..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/event_log_registry.hpp +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file event_log_registry.hpp - * \author Andrey Semashev - * \date 16.11.2008 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#ifndef BOOST_LOG_WINDOWS_EVENT_LOG_REGISTRY_HPP_INCLUDED_ -#define BOOST_LOG_WINDOWS_EVENT_LOG_REGISTRY_HPP_INCLUDED_ - -#include <boost/log/detail/config.hpp> -#include <cwchar> -#include <cstring> -#include <string> -#include <sstream> -#include <stdexcept> -#include <boost/version.hpp> -#include <boost/optional/optional.hpp> -#include <boost/log/detail/code_conversion.hpp> -#include <boost/log/exceptions.hpp> -#include <windows.h> -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace sinks { - -namespace aux { - -// MSVC versions up to 2008 (or their Platform SDKs, to be more precise) don't define LSTATUS. -// Perhaps, that is also the case for MinGW and Cygwin (untested). -typedef DWORD LSTATUS; - -// Max registry string size, in characters (for security reasons) -const DWORD max_string_size = 64u * 1024u; - -//! Helper traits to integrate with WinAPI -template< typename CharT > -struct registry_traits; - -#ifdef BOOST_LOG_USE_CHAR -template< > -struct registry_traits< char > -{ - static std::string make_event_log_key(std::string const& log_name, std::string const& source_name) - { - return "SYSTEM\\CurrentControlSet\\Services\\EventLog\\" + log_name + "\\" + source_name; - } - - static std::string make_default_log_name() - { - return "Application"; - } - - static std::string make_default_source_name() - { - char buf[MAX_PATH]; - DWORD size = GetModuleFileNameA(NULL, buf, sizeof(buf) / sizeof(*buf)); - - std::string source_name(buf, buf + size); - if (source_name.empty()) - { - // In case of error we provide artificial application name - std::ostringstream strm; - strm << "Boost.Log " - << static_cast< unsigned int >(BOOST_VERSION / 100000) - << "." - << static_cast< unsigned int >(BOOST_VERSION / 100 % 1000) - << "." - << static_cast< unsigned int >(BOOST_VERSION % 100); - source_name = strm.str(); - } - else - { - // Cut off the path and extension - std::size_t backslash_pos = source_name.rfind('\\'); - if (backslash_pos == std::string::npos || backslash_pos >= source_name.size() - 1) - backslash_pos = 0; - else - ++backslash_pos; - std::size_t dot_pos = source_name.rfind('.'); - if (dot_pos == std::string::npos || dot_pos < backslash_pos) - dot_pos = source_name.size(); - source_name = source_name.substr(backslash_pos, dot_pos - backslash_pos); - } - - return source_name; - } - - static LSTATUS create_key( - HKEY hKey, - const char* lpSubKey, - DWORD Reserved, - char* lpClass, - DWORD dwOptions, - REGSAM samDesired, - LPSECURITY_ATTRIBUTES lpSecurityAttributes, - PHKEY phkResult, - LPDWORD lpdwDisposition) - { - return RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition); - } - - static LSTATUS open_key( - HKEY hKey, - const char* lpSubKey, - DWORD dwOptions, - REGSAM samDesired, - PHKEY phkResult) - { - return RegOpenKeyExA(hKey, lpSubKey, dwOptions, samDesired, phkResult); - } - - static LSTATUS set_value( - HKEY hKey, - const char* lpValueName, - DWORD Reserved, - DWORD dwType, - const BYTE* lpData, - DWORD cbData) - { - return RegSetValueExA(hKey, lpValueName, Reserved, dwType, lpData, cbData); - } - - static LSTATUS get_value(HKEY hKey, const char* lpValueName, DWORD& value) - { - DWORD type = REG_NONE, size = sizeof(value); - LSTATUS res = RegQueryValueExA(hKey, lpValueName, NULL, &type, reinterpret_cast< LPBYTE >(&value), &size); - if (res == ERROR_SUCCESS && type != REG_DWORD && type != REG_BINARY) - res = ERROR_INVALID_DATA; - return res; - } - - static LSTATUS get_value(HKEY hKey, const char* lpValueName, std::string& value) - { - DWORD type = REG_NONE, size = 0; - LSTATUS res = RegQueryValueExA(hKey, lpValueName, NULL, &type, NULL, &size); - if (res == ERROR_SUCCESS && ((type != REG_EXPAND_SZ && type != REG_SZ) || size > max_string_size)) - return ERROR_INVALID_DATA; - if (size == 0) - return res; - - value.resize(size); - res = RegQueryValueExA(hKey, lpValueName, NULL, &type, reinterpret_cast< LPBYTE >(&value[0]), &size); - value.resize(std::strlen(value.c_str())); // remove extra terminating zero - - return res; - } - - static const char* get_event_message_file_param_name() { return "EventMessageFile"; } - static const char* get_category_message_file_param_name() { return "CategoryMessageFile"; } - static const char* get_category_count_param_name() { return "CategoryCount"; } - static const char* get_types_supported_param_name() { return "TypesSupported"; } -}; -#endif // BOOST_LOG_USE_CHAR - -#ifdef BOOST_LOG_USE_WCHAR_T -template< > -struct registry_traits< wchar_t > -{ - static std::wstring make_event_log_key(std::wstring const& log_name, std::wstring const& source_name) - { - return L"SYSTEM\\CurrentControlSet\\Services\\EventLog\\" + log_name + L"\\" + source_name; - } - - static std::wstring make_default_log_name() - { - return L"Application"; - } - - static std::wstring make_default_source_name() - { - wchar_t buf[MAX_PATH]; - DWORD size = GetModuleFileNameW(NULL, buf, sizeof(buf) / sizeof(*buf)); - - std::wstring source_name(buf, buf + size); - if (source_name.empty()) - { - // In case of error we provide artificial application name - std::wostringstream strm; - strm << L"Boost.Log " - << static_cast< unsigned int >(BOOST_VERSION / 100000) - << L"." - << static_cast< unsigned int >(BOOST_VERSION / 100 % 1000) - << L"." - << static_cast< unsigned int >(BOOST_VERSION % 100); - source_name = strm.str(); - } - else - { - // Cut off the path and extension - std::size_t backslash_pos = source_name.rfind(L'\\'); - if (backslash_pos == std::wstring::npos || backslash_pos >= source_name.size() - 1) - backslash_pos = 0; - else - ++backslash_pos; - std::size_t dot_pos = source_name.rfind(L'.'); - if (dot_pos == std::wstring::npos || dot_pos < backslash_pos) - dot_pos = source_name.size(); - source_name = source_name.substr(backslash_pos, dot_pos - backslash_pos); - } - - return source_name; - } - - static LSTATUS create_key( - HKEY hKey, - const wchar_t* lpSubKey, - DWORD Reserved, - wchar_t* lpClass, - DWORD dwOptions, - REGSAM samDesired, - LPSECURITY_ATTRIBUTES lpSecurityAttributes, - PHKEY phkResult, - LPDWORD lpdwDisposition) - { - return RegCreateKeyExW(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition); - } - - static LSTATUS open_key( - HKEY hKey, - const wchar_t* lpSubKey, - DWORD dwOptions, - REGSAM samDesired, - PHKEY phkResult) - { - return RegOpenKeyExW(hKey, lpSubKey, dwOptions, samDesired, phkResult); - } - - static LSTATUS set_value( - HKEY hKey, - const wchar_t* lpValueName, - DWORD Reserved, - DWORD dwType, - const BYTE* lpData, - DWORD cbData) - { - return RegSetValueExW(hKey, lpValueName, Reserved, dwType, lpData, cbData); - } - - static LSTATUS get_value(HKEY hKey, const wchar_t* lpValueName, DWORD& value) - { - DWORD type = REG_NONE, size = sizeof(value); - LSTATUS res = RegQueryValueExW(hKey, lpValueName, NULL, &type, reinterpret_cast< LPBYTE >(&value), &size); - if (res == ERROR_SUCCESS && type != REG_DWORD && type != REG_BINARY) - res = ERROR_INVALID_DATA; - return res; - } - - static LSTATUS get_value(HKEY hKey, const wchar_t* lpValueName, std::wstring& value) - { - DWORD type = REG_NONE, size = 0; - LSTATUS res = RegQueryValueExW(hKey, lpValueName, NULL, &type, NULL, &size); - size /= sizeof(wchar_t); - if (res == ERROR_SUCCESS && ((type != REG_EXPAND_SZ && type != REG_SZ) || size > max_string_size)) - return ERROR_INVALID_DATA; - if (size == 0) - return res; - - value.resize(size); - res = RegQueryValueExW(hKey, lpValueName, NULL, &type, reinterpret_cast< LPBYTE >(&value[0]), &size); - value.resize(std::wcslen(value.c_str())); // remove extra terminating zero - - return res; - } - - static const wchar_t* get_event_message_file_param_name() { return L"EventMessageFile"; } - static const wchar_t* get_category_message_file_param_name() { return L"CategoryMessageFile"; } - static const wchar_t* get_category_count_param_name() { return L"CategoryCount"; } - static const wchar_t* get_types_supported_param_name() { return L"TypesSupported"; } - -}; -#endif // BOOST_LOG_USE_WCHAR_T - -//! The structure with parameters that have to be registered in the event log registry key -template< typename CharT > -struct registry_params -{ - typedef std::basic_string< CharT > string_type; - - optional< string_type > event_message_file; - optional< string_type > category_message_file; - optional< DWORD > category_count; - optional< DWORD > types_supported; -}; - -//! A simple guard that closes the registry key on destruction -struct auto_hkey_close -{ - explicit auto_hkey_close(HKEY hk) : hk_(hk) {} - ~auto_hkey_close() { RegCloseKey(hk_); } - -private: - HKEY hk_; -}; - -//! The function checks if the event log is already registered -template< typename CharT > -bool verify_event_log_registry(std::basic_string< CharT > const& reg_key, bool force, registry_params< CharT > const& params) -{ - typedef std::basic_string< CharT > string_type; - typedef registry_traits< CharT > registry; - - // Open the key - HKEY hkey = 0; - LSTATUS res = registry::open_key( - HKEY_LOCAL_MACHINE, - reg_key.c_str(), - REG_OPTION_NON_VOLATILE, - KEY_READ, - &hkey); - if (res != ERROR_SUCCESS) - return false; - - auto_hkey_close hkey_guard(hkey); - - if (force) - { - // Verify key values - if (!!params.event_message_file) - { - string_type module_name; - res = registry::get_value(hkey, registry::get_event_message_file_param_name(), module_name); - if (res != ERROR_SUCCESS || module_name != params.event_message_file.get()) - return false; - } - - if (!!params.category_message_file) - { - string_type module_name; - res = registry::get_value(hkey, registry::get_category_message_file_param_name(), module_name); - if (res != ERROR_SUCCESS || module_name != params.category_message_file.get()) - return false; - } - - if (!!params.category_count) - { - // Set number of categories - DWORD category_count = 0; - res = registry::get_value(hkey, registry::get_category_count_param_name(), category_count); - if (res != ERROR_SUCCESS || category_count != params.category_count.get()) - return false; - } - - if (!!params.types_supported) - { - // Set the supported event types - DWORD event_types = 0; - res = registry::get_value(hkey, registry::get_types_supported_param_name(), event_types); - if (res != ERROR_SUCCESS || event_types != params.types_supported.get()) - return false; - } - } - - return true; -} - -//! The function initializes the event log registry key -template< typename CharT > -void init_event_log_registry( - std::basic_string< CharT > const& log_name, - std::basic_string< CharT > const& source_name, - bool force, - registry_params< CharT > const& params) -{ - typedef std::basic_string< CharT > string_type; - typedef registry_traits< CharT > registry; - // Registry key name that contains log description - string_type reg_key = registry::make_event_log_key(log_name, source_name); - - // First check the registry keys and values in read-only mode. - // This allows to avoid UAC asking for elevated permissions to modify HKLM registry when no modification is actually needed. - if (verify_event_log_registry(reg_key, force, params)) - return; - - // Create or open the key - HKEY hkey = 0; - DWORD disposition = 0; - LSTATUS res = registry::create_key( - HKEY_LOCAL_MACHINE, - reg_key.c_str(), - 0, - NULL, - REG_OPTION_NON_VOLATILE, - KEY_WRITE, - NULL, - &hkey, - &disposition); - if (res != ERROR_SUCCESS) - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not create registry key for the event log", (res)); - - auto_hkey_close hkey_guard(hkey); - - if (disposition != REG_OPENED_EXISTING_KEY || force) - { - // Fill registry values - if (!!params.event_message_file) - { - // Set the module file name that contains event resources - string_type const& module_name = params.event_message_file.get(); - res = registry::set_value( - hkey, - registry::get_event_message_file_param_name(), - 0, - REG_EXPAND_SZ, - reinterpret_cast< LPBYTE >(const_cast< CharT* >(module_name.c_str())), - static_cast< DWORD >((module_name.size() + 1) * sizeof(CharT))); - if (res != ERROR_SUCCESS) - { - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not create registry value " - + log::aux::to_narrow(string_type(registry::get_event_message_file_param_name())), (res)); - } - } - - if (!!params.category_message_file) - { - // Set the module file name that contains event category resources - string_type const& module_name = params.category_message_file.get(); - res = registry::set_value( - hkey, - registry::get_category_message_file_param_name(), - 0, - REG_SZ, - reinterpret_cast< LPBYTE >(const_cast< CharT* >(module_name.c_str())), - static_cast< DWORD >((module_name.size() + 1) * sizeof(CharT))); - if (res != ERROR_SUCCESS) - { - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not create registry value " - + log::aux::to_narrow(string_type(registry::get_category_message_file_param_name())), (res)); - } - } - - if (!!params.category_count) - { - // Set number of categories - DWORD category_count = params.category_count.get(); - res = registry::set_value( - hkey, - registry::get_category_count_param_name(), - 0, - REG_DWORD, - reinterpret_cast< LPBYTE >(&category_count), - static_cast< DWORD >(sizeof(category_count))); - if (res != ERROR_SUCCESS) - { - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not create registry value " - + log::aux::to_narrow(string_type(registry::get_category_count_param_name())), (res)); - } - } - - if (!!params.types_supported) - { - // Set the supported event types - DWORD event_types = params.types_supported.get(); - res = registry::set_value( - hkey, - registry::get_types_supported_param_name(), - 0, - REG_DWORD, - reinterpret_cast< LPBYTE >(&event_types), - static_cast< DWORD >(sizeof(event_types))); - if (res != ERROR_SUCCESS) - { - BOOST_LOG_THROW_DESCR_PARAMS(system_error, "Could not create registry value " - + log::aux::to_narrow(string_type(registry::get_types_supported_param_name())), (res)); - } - } - } -} - -} // namespace aux - -} // namespace sinks - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> - -#endif // BOOST_LOG_WINDOWS_EVENT_LOG_REGISTRY_HPP_INCLUDED_ diff --git a/contrib/restricted/boost/libs/log/src/windows/ipc_reliable_message_queue.cpp b/contrib/restricted/boost/libs/log/src/windows/ipc_reliable_message_queue.cpp deleted file mode 100644 index d99d091d1f..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/ipc_reliable_message_queue.cpp +++ /dev/null @@ -1,818 +0,0 @@ -/* - * Copyright Lingxi Li 2015. - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file ipc_reliable_message_queue_win.hpp - * \author Lingxi Li - * \author Andrey Semashev - * \date 28.10.2015 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - * - * This file provides an interprocess message queue implementation on POSIX platforms. - */ - -#include <boost/log/detail/config.hpp> -#include <cstddef> -#include <cstring> -#include <new> -#include <limits> -#include <string> -#include <algorithm> -#include <stdexcept> -#include <boost/assert.hpp> -#include <boost/static_assert.hpp> -#include <boost/cstdint.hpp> -#include <boost/atomic/atomic.hpp> -#include <boost/atomic/capabilities.hpp> -#include <boost/log/exceptions.hpp> -#include <boost/log/utility/ipc/reliable_message_queue.hpp> -#include <boost/log/support/exception.hpp> -#include <boost/log/detail/pause.hpp> -#include <boost/exception/info.hpp> -#include <boost/exception/enable_error_info.hpp> -#include <boost/align/align_up.hpp> -#include <boost/winapi/thread.hpp> // SwitchToThread -#include "windows/ipc_sync_wrappers.hpp" -#include "windows/mapped_shared_memory.hpp" -#include "windows/utf_code_conversion.hpp" -#include "murmur3.hpp" -#include "bit_tools.hpp" -#include <windows.h> -#include <boost/log/detail/header.hpp> - -#if BOOST_ATOMIC_INT32_LOCK_FREE != 2 -// 32-bit atomic ops are required to be able to place atomic<uint32_t> in the process-shared memory -#error Boost.Log: Native 32-bit atomic operations are required but not supported by Boost.Atomic on the target platform -#endif - -//! A suffix used in names of interprocess objects created by the queue. -//! Used as a protection against clashing with user-supplied names of interprocess queues and also to resolve conflicts between queues of different types. -#define BOOST_LOG_IPC_NAMES_AUX_SUFFIX L".3010b9950926463398eee00b35b44651" - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace ipc { - -//! Message queue implementation data -struct reliable_message_queue::implementation -{ -private: - //! Header of an allocation block within the message queue. Placed at the beginning of the block within the shared memory segment. - struct block_header - { - // Element data alignment, in bytes - enum { data_alignment = 32u }; - - //! Size of the element data, in bytes - size_type m_size; - - //! Returns the block header overhead, in bytes - static BOOST_CONSTEXPR size_type get_header_overhead() BOOST_NOEXCEPT - { - return static_cast< size_type >(boost::alignment::align_up(sizeof(block_header), data_alignment)); - } - - //! Returns a pointer to the element data - void* get_data() const BOOST_NOEXCEPT - { - return const_cast< unsigned char* >(reinterpret_cast< const unsigned char* >(this)) + get_header_overhead(); - } - }; - - //! Header of the message queue. Placed at the beginning of the shared memory segment. - struct header - { - // Increment this constant whenever you change the binary layout of the queue (apart from this header structure) - enum { abi_version = 0 }; - - // !!! Whenever you add/remove members in this structure, also modify get_abi_tag() function accordingly !!! - - //! A tag value to ensure the correct binary layout of the message queue data structures. Must be placed first and always have a fixed size and alignment. - uint32_t m_abi_tag; - //! Padding to protect against alignment changes in Boost.Atomic. Don't use BOOST_ALIGNMENT to ensure portability. - unsigned char m_padding[BOOST_LOG_CPU_CACHE_LINE_SIZE - sizeof(uint32_t)]; - //! A flag indicating that the queue is constructed (i.e. the queue is constructed when the value is not 0). - boost::atomic< uint32_t > m_initialized; - //! Number of allocation blocks in the queue. - const uint32_t m_capacity; - //! Size of an allocation block, in bytes. - const size_type m_block_size; - //! Shared state of the mutex for protecting queue data structures. - boost::log::ipc::aux::interprocess_mutex::shared_state m_mutex_state; - //! Shared state of the condition variable used to block writers when the queue is full. - boost::log::ipc::aux::interprocess_condition_variable::shared_state m_nonfull_queue_state; - //! The current number of allocated blocks in the queue. - uint32_t m_size; - //! The current writing position (allocation block index). - uint32_t m_put_pos; - //! The current reading position (allocation block index). - uint32_t m_get_pos; - - header(uint32_t capacity, size_type block_size) : - m_abi_tag(get_abi_tag()), - m_capacity(capacity), - m_block_size(block_size), - m_size(0u), - m_put_pos(0u), - m_get_pos(0u) - { - // Must be initialized last. m_initialized is zero-initialized initially. - m_initialized.fetch_add(1u, boost::memory_order_release); - } - - //! Returns the header structure ABI tag - static uint32_t get_abi_tag() BOOST_NOEXCEPT - { - // This FOURCC identifies the queue type - boost::log::aux::murmur3_32 hash(boost::log::aux::make_fourcc('r', 'e', 'l', 'q')); - - // This FOURCC identifies the queue implementation - hash.mix(boost::log::aux::make_fourcc('w', 'n', 't', '5')); - hash.mix(abi_version); - - // We will use these constants to align pointers - hash.mix(BOOST_LOG_CPU_CACHE_LINE_SIZE); - hash.mix(block_header::data_alignment); - - // The members in the sequence below must be enumerated in the same order as they are declared in the header structure. - // The ABI tag is supposed change whenever a member changes size or offset from the beginning of the header. - -#define BOOST_LOG_MIX_HEADER_MEMBER(name)\ - hash.mix(static_cast< uint32_t >(sizeof(((header*)NULL)->name)));\ - hash.mix(static_cast< uint32_t >(offsetof(header, name))) - - BOOST_LOG_MIX_HEADER_MEMBER(m_abi_tag); - BOOST_LOG_MIX_HEADER_MEMBER(m_padding); - BOOST_LOG_MIX_HEADER_MEMBER(m_initialized); - BOOST_LOG_MIX_HEADER_MEMBER(m_capacity); - BOOST_LOG_MIX_HEADER_MEMBER(m_block_size); - BOOST_LOG_MIX_HEADER_MEMBER(m_mutex_state); - BOOST_LOG_MIX_HEADER_MEMBER(m_nonfull_queue_state); - BOOST_LOG_MIX_HEADER_MEMBER(m_size); - BOOST_LOG_MIX_HEADER_MEMBER(m_put_pos); - BOOST_LOG_MIX_HEADER_MEMBER(m_get_pos); - -#undef BOOST_LOG_MIX_HEADER_MEMBER - - return hash.finalize(); - } - - //! Returns an element header at the specified index - block_header* get_block(uint32_t index) const BOOST_NOEXCEPT - { - BOOST_ASSERT(index < m_capacity); - unsigned char* p = const_cast< unsigned char* >(reinterpret_cast< const unsigned char* >(this)) + boost::alignment::align_up(sizeof(header), BOOST_LOG_CPU_CACHE_LINE_SIZE); - p += static_cast< std::size_t >(m_block_size) * static_cast< std::size_t >(index); - return reinterpret_cast< block_header* >(p); - } - - BOOST_DELETED_FUNCTION(header(header const&)) - BOOST_DELETED_FUNCTION(header& operator=(header const&)) - }; - -private: - //! Shared memory object and mapping - boost::log::ipc::aux::mapped_shared_memory m_shared_memory; - //! Queue overflow handling policy - const overflow_policy m_overflow_policy; - //! The mask for selecting bits that constitute size values from 0 to (block_size - 1) - size_type m_block_size_mask; - //! The number of the bit set in block_size (i.e. log base 2 of block_size) - uint32_t m_block_size_log2; - - //! Mutex for protecting queue data structures. - boost::log::ipc::aux::interprocess_mutex m_mutex; - //! Event used to block readers when the queue is empty. - boost::log::ipc::aux::interprocess_event m_nonempty_queue; - //! Condition variable used to block writers when the queue is full. - boost::log::ipc::aux::interprocess_condition_variable m_nonfull_queue; - //! The event indicates that stop has been requested - boost::log::ipc::aux::auto_handle m_stop; - - //! The queue name, as specified by the user - const object_name m_name; - -public: - //! The constructor creates a new shared memory segment - implementation - ( - open_mode::create_only_tag, - object_name const& name, - uint32_t capacity, - size_type block_size, - overflow_policy oflow_policy, - permissions const& perms - ) : - m_overflow_policy(oflow_policy), - m_block_size_mask(0u), - m_block_size_log2(0u), - m_name(name) - { - const std::wstring wname = boost::log::aux::utf8_to_utf16(name.c_str()); - const std::size_t shmem_size = estimate_region_size(capacity, block_size); - m_shared_memory.create(wname.c_str(), shmem_size, perms); - m_shared_memory.map(); - - create_queue(wname, capacity, block_size, perms); - } - - //! The constructor creates a new shared memory segment or opens the existing one - implementation - ( - open_mode::open_or_create_tag, - object_name const& name, - uint32_t capacity, - size_type block_size, - overflow_policy oflow_policy, - permissions const& perms - ) : - m_overflow_policy(oflow_policy), - m_block_size_mask(0u), - m_block_size_log2(0u), - m_name(name) - { - const std::wstring wname = boost::log::aux::utf8_to_utf16(name.c_str()); - const std::size_t shmem_size = estimate_region_size(capacity, block_size); - const bool created = m_shared_memory.create_or_open(wname.c_str(), shmem_size, perms); - m_shared_memory.map(); - - if (created) - create_queue(wname, capacity, block_size, perms); - else - adopt_queue(wname, m_shared_memory.size(), perms); - } - - //! The constructor opens the existing shared memory segment - implementation - ( - open_mode::open_only_tag, - object_name const& name, - overflow_policy oflow_policy, - permissions const& perms - ) : - m_overflow_policy(oflow_policy), - m_block_size_mask(0u), - m_block_size_log2(0u), - m_name(name) - { - const std::wstring wname = boost::log::aux::utf8_to_utf16(name.c_str()); - m_shared_memory.open(wname.c_str()); - m_shared_memory.map(); - - adopt_queue(wname, m_shared_memory.size(), perms); - } - - object_name const& name() const BOOST_NOEXCEPT - { - return m_name; - } - - uint32_t capacity() const BOOST_NOEXCEPT - { - return get_header()->m_capacity; - } - - size_type block_size() const BOOST_NOEXCEPT - { - return get_header()->m_block_size; - } - - operation_result send(void const* message_data, size_type message_size) - { - const uint32_t block_count = estimate_block_count(message_size); - - header* const hdr = get_header(); - - if (BOOST_UNLIKELY(block_count > hdr->m_capacity)) - BOOST_LOG_THROW_DESCR(logic_error, "Message size exceeds the interprocess queue capacity"); - - if (!lock_queue()) - return aborted; - - boost::log::ipc::aux::interprocess_mutex::optional_unlock unlock(m_mutex); - - while (true) - { - if ((hdr->m_capacity - hdr->m_size) >= block_count) - break; - - const overflow_policy oflow_policy = m_overflow_policy; - if (oflow_policy == fail_on_overflow) - return no_space; - else if (BOOST_UNLIKELY(oflow_policy == throw_on_overflow)) - BOOST_LOG_THROW_DESCR(capacity_limit_reached, "Interprocess queue is full"); - - if (!m_nonfull_queue.wait(unlock, m_stop.get())) - return aborted; - } - - enqueue_message(message_data, message_size, block_count); - - return succeeded; - } - - bool try_send(void const* message_data, size_type message_size) - { - const uint32_t block_count = estimate_block_count(message_size); - - header* const hdr = get_header(); - - if (BOOST_UNLIKELY(block_count > hdr->m_capacity)) - BOOST_LOG_THROW_DESCR(logic_error, "Message size exceeds the interprocess queue capacity"); - - if (!lock_queue()) - return false; - - boost::log::ipc::aux::interprocess_mutex::auto_unlock unlock(m_mutex); - - if ((hdr->m_capacity - hdr->m_size) < block_count) - return false; - - enqueue_message(message_data, message_size, block_count); - - return true; - } - - operation_result receive(receive_handler handler, void* state) - { - if (!lock_queue()) - return aborted; - - boost::log::ipc::aux::interprocess_mutex::optional_unlock unlock(m_mutex); - - header* const hdr = get_header(); - - while (true) - { - if (hdr->m_size > 0u) - break; - - m_mutex.unlock(); - unlock.disengage(); - - if (!m_nonempty_queue.wait(m_stop.get()) || !lock_queue()) - return aborted; - - unlock.engage(m_mutex); - } - - dequeue_message(handler, state); - - return succeeded; - } - - bool try_receive(receive_handler handler, void* state) - { - if (!lock_queue()) - return false; - - boost::log::ipc::aux::interprocess_mutex::auto_unlock unlock(m_mutex); - - header* const hdr = get_header(); - if (hdr->m_size == 0u) - return false; - - dequeue_message(handler, state); - - return true; - } - - void stop_local() - { - BOOST_VERIFY(boost::winapi::SetEvent(m_stop.get()) != 0); - } - - void reset_local() - { - BOOST_VERIFY(boost::winapi::ResetEvent(m_stop.get()) != 0); - } - - void clear() - { - m_mutex.lock(); - boost::log::ipc::aux::interprocess_mutex::auto_unlock unlock(m_mutex); - clear_queue(); - } - -private: - header* get_header() const BOOST_NOEXCEPT - { - return static_cast< header* >(m_shared_memory.address()); - } - - static std::size_t estimate_region_size(uint32_t capacity, size_type block_size) BOOST_NOEXCEPT - { - return boost::alignment::align_up(sizeof(header), BOOST_LOG_CPU_CACHE_LINE_SIZE) + static_cast< std::size_t >(capacity) * static_cast< std::size_t >(block_size); - } - - void create_stop_event() - { -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - boost::winapi::HANDLE_ h = boost::winapi::CreateEventExW - ( - NULL, // permissions - NULL, // name - boost::winapi::CREATE_EVENT_MANUAL_RESET_, - boost::winapi::SYNCHRONIZE_ | boost::winapi::EVENT_MODIFY_STATE_ - ); -#else - boost::winapi::HANDLE_ h = boost::winapi::CreateEventW - ( - NULL, // permissions - true, // manual reset - false, // initial state - NULL // name - ); -#endif - if (BOOST_UNLIKELY(h == NULL)) - { - boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to create an stop event object", (err)); - } - - m_stop.init(h); - } - - void create_queue(std::wstring const& name, uint32_t capacity, size_type block_size, permissions const& perms) - { - // Initialize synchronization primitives before initializing the header as the openers will wait for it to be initialized - header* const hdr = get_header(); - m_mutex.create((name + BOOST_LOG_IPC_NAMES_AUX_SUFFIX L".mutex").c_str(), &hdr->m_mutex_state, perms); - m_nonempty_queue.create((name + BOOST_LOG_IPC_NAMES_AUX_SUFFIX L".nonempty_queue_event").c_str(), false, perms); - m_nonfull_queue.init((name + BOOST_LOG_IPC_NAMES_AUX_SUFFIX L".nonfull_queue_cond_var").c_str(), &hdr->m_nonfull_queue_state, perms); - create_stop_event(); - - new (hdr) header(capacity, block_size); - - init_block_size(block_size); - } - - void adopt_queue(std::wstring const& name, std::size_t shmem_size, permissions const& perms) - { - if (shmem_size < sizeof(header)) - BOOST_LOG_THROW_DESCR(setup_error, "Boost.Log interprocess message queue cannot be opened: shared memory segment size too small"); - - // Wait until the mapped region becomes initialized - header* const hdr = get_header(); - BOOST_CONSTEXPR_OR_CONST unsigned int wait_loops = 1000u, spin_loops = 16u, spins = 16u; - for (unsigned int i = 0; i < wait_loops; ++i) - { - uint32_t initialized = hdr->m_initialized.load(boost::memory_order_acquire); - if (initialized) - { - goto done; - } - - if (i < spin_loops) - { - for (unsigned int j = 0; j < spins; ++j) - { - boost::log::aux::pause(); - } - } - else - { - boost::winapi::SwitchToThread(); - } - } - - BOOST_LOG_THROW_DESCR(setup_error, "Boost.Log interprocess message queue cannot be opened: shared memory segment is not initialized by creator for too long"); - - done: - // Check that the queue layout matches the current process ABI - if (hdr->m_abi_tag != header::get_abi_tag()) - BOOST_LOG_THROW_DESCR(setup_error, "Boost.Log interprocess message queue cannot be opened: the queue ABI is incompatible"); - - if (!boost::log::aux::is_power_of_2(hdr->m_block_size)) - BOOST_LOG_THROW_DESCR(setup_error, "Boost.Log interprocess message queue cannot be opened: the queue block size is not a power of 2"); - - m_mutex.open((name + BOOST_LOG_IPC_NAMES_AUX_SUFFIX L".mutex").c_str(), &hdr->m_mutex_state); - m_nonempty_queue.open((name + BOOST_LOG_IPC_NAMES_AUX_SUFFIX L".nonempty_queue_event").c_str()); - m_nonfull_queue.init((name + BOOST_LOG_IPC_NAMES_AUX_SUFFIX L".nonfull_queue_cond_var").c_str(), &hdr->m_nonfull_queue_state, perms); - create_stop_event(); - - init_block_size(hdr->m_block_size); - } - - void init_block_size(size_type block_size) - { - m_block_size_mask = block_size - 1u; - - uint32_t block_size_log2 = 0u; - if ((block_size & 0x0000ffff) == 0u) - { - block_size >>= 16u; - block_size_log2 += 16u; - } - if ((block_size & 0x000000ff) == 0u) - { - block_size >>= 8u; - block_size_log2 += 8u; - } - if ((block_size & 0x0000000f) == 0u) - { - block_size >>= 4u; - block_size_log2 += 4u; - } - if ((block_size & 0x00000003) == 0u) - { - block_size >>= 2u; - block_size_log2 += 2u; - } - if ((block_size & 0x00000001) == 0u) - { - ++block_size_log2; - } - m_block_size_log2 = block_size_log2; - } - - bool lock_queue() - { - return m_mutex.lock(m_stop.get()); - } - - void clear_queue() - { - header* const hdr = get_header(); - hdr->m_size = 0u; - hdr->m_put_pos = 0u; - hdr->m_get_pos = 0u; - m_nonfull_queue.notify_all(); - } - - //! Returns the number of allocation blocks that are required to store user's payload of the specified size - uint32_t estimate_block_count(size_type size) const BOOST_NOEXCEPT - { - // ceil((size + get_header_overhead()) / block_size) - return static_cast< uint32_t >((size + block_header::get_header_overhead() + m_block_size_mask) >> m_block_size_log2); - } - - //! Puts the message to the back of the queue - void enqueue_message(void const* message_data, size_type message_size, uint32_t block_count) - { - header* const hdr = get_header(); - - const uint32_t capacity = hdr->m_capacity; - const size_type block_size = hdr->m_block_size; - uint32_t pos = hdr->m_put_pos; - - block_header* block = hdr->get_block(pos); - block->m_size = message_size; - - size_type write_size = (std::min)(static_cast< size_type >((capacity - pos) * block_size - block_header::get_header_overhead()), message_size); - std::memcpy(block->get_data(), message_data, write_size); - - pos += block_count; - if (BOOST_UNLIKELY(pos >= capacity)) - { - // Write the rest of the message at the beginning of the queue - pos -= capacity; - message_data = static_cast< const unsigned char* >(message_data) + write_size; - write_size = message_size - write_size; - if (write_size > 0u) - std::memcpy(hdr->get_block(0u), message_data, write_size); - } - - hdr->m_put_pos = pos; - - const uint32_t old_queue_size = hdr->m_size; - hdr->m_size = old_queue_size + block_count; - if (old_queue_size == 0u) - m_nonempty_queue.set(); - } - - //! Retrieves the next message and invokes the handler to store the message contents - void dequeue_message(receive_handler handler, void* state) - { - header* const hdr = get_header(); - - const uint32_t capacity = hdr->m_capacity; - const size_type block_size = hdr->m_block_size; - uint32_t pos = hdr->m_get_pos; - - block_header* block = hdr->get_block(pos); - size_type message_size = block->m_size; - uint32_t block_count = estimate_block_count(message_size); - - BOOST_ASSERT(block_count <= hdr->m_size); - - size_type read_size = (std::min)(static_cast< size_type >((capacity - pos) * block_size - block_header::get_header_overhead()), message_size); - handler(state, block->get_data(), read_size); - - pos += block_count; - if (BOOST_UNLIKELY(pos >= capacity)) - { - // Read the tail of the message - pos -= capacity; - read_size = message_size - read_size; - if (read_size > 0u) - handler(state, hdr->get_block(0u), read_size); - } - - hdr->m_get_pos = pos; - hdr->m_size -= block_count; - - m_nonfull_queue.notify_all(); - } -}; - -BOOST_LOG_API void reliable_message_queue::create(object_name const& name, uint32_t capacity, size_type block_size, overflow_policy oflow_policy, permissions const& perms) -{ - BOOST_ASSERT(m_impl == NULL); - if (!boost::log::aux::is_power_of_2(block_size)) - BOOST_THROW_EXCEPTION(std::invalid_argument("Interprocess message queue block size is not a power of 2")); - try - { - m_impl = new implementation(open_mode::create_only, name, capacity, static_cast< size_type >(boost::alignment::align_up(block_size, BOOST_LOG_CPU_CACHE_LINE_SIZE)), oflow_policy, perms); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(name); - throw; - } -} - -BOOST_LOG_API void reliable_message_queue::open_or_create(object_name const& name, uint32_t capacity, size_type block_size, overflow_policy oflow_policy, permissions const& perms) -{ - BOOST_ASSERT(m_impl == NULL); - if (!boost::log::aux::is_power_of_2(block_size)) - BOOST_THROW_EXCEPTION(std::invalid_argument("Interprocess message queue block size is not a power of 2")); - try - { - m_impl = new implementation(open_mode::open_or_create, name, capacity, static_cast< size_type >(boost::alignment::align_up(block_size, BOOST_LOG_CPU_CACHE_LINE_SIZE)), oflow_policy, perms); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(name); - throw; - } -} - -BOOST_LOG_API void reliable_message_queue::open(object_name const& name, overflow_policy oflow_policy, permissions const& perms) -{ - BOOST_ASSERT(m_impl == NULL); - try - { - m_impl = new implementation(open_mode::open_only, name, oflow_policy, perms); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(name); - throw; - } -} - -BOOST_LOG_API void reliable_message_queue::clear() -{ - BOOST_ASSERT(m_impl != NULL); - try - { - m_impl->clear(); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(m_impl->name()); - throw; - } -} - -BOOST_LOG_API object_name const& reliable_message_queue::name() const -{ - BOOST_ASSERT(m_impl != NULL); - return m_impl->name(); -} - -BOOST_LOG_API uint32_t reliable_message_queue::capacity() const -{ - BOOST_ASSERT(m_impl != NULL); - return m_impl->capacity(); -} - -BOOST_LOG_API reliable_message_queue::size_type reliable_message_queue::block_size() const -{ - BOOST_ASSERT(m_impl != NULL); - return m_impl->block_size(); -} - -BOOST_LOG_API void reliable_message_queue::stop_local() -{ - BOOST_ASSERT(m_impl != NULL); - try - { - m_impl->stop_local(); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(m_impl->name()); - throw; - } -} - -BOOST_LOG_API void reliable_message_queue::reset_local() -{ - BOOST_ASSERT(m_impl != NULL); - try - { - m_impl->reset_local(); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(m_impl->name()); - throw; - } -} - -BOOST_LOG_API void reliable_message_queue::do_close() BOOST_NOEXCEPT -{ - delete m_impl; - m_impl = NULL; -} - -BOOST_LOG_API reliable_message_queue::operation_result reliable_message_queue::send(void const* message_data, size_type message_size) -{ - BOOST_ASSERT(m_impl != NULL); - try - { - return m_impl->send(message_data, message_size); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(m_impl->name()); - throw; - } -} - -BOOST_LOG_API bool reliable_message_queue::try_send(void const* message_data, size_type message_size) -{ - BOOST_ASSERT(m_impl != NULL); - try - { - return m_impl->try_send(message_data, message_size); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(m_impl->name()); - throw; - } -} - -BOOST_LOG_API reliable_message_queue::operation_result reliable_message_queue::do_receive(receive_handler handler, void* state) -{ - BOOST_ASSERT(m_impl != NULL); - try - { - return m_impl->receive(handler, state); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(m_impl->name()); - throw; - } -} - -BOOST_LOG_API bool reliable_message_queue::do_try_receive(receive_handler handler, void* state) -{ - BOOST_ASSERT(m_impl != NULL); - try - { - return m_impl->try_receive(handler, state); - } - catch (boost::exception& e) - { - e << boost::log::ipc::object_name_info(m_impl->name()); - throw; - } -} - -//! Fixed buffer receive handler -BOOST_LOG_API void reliable_message_queue::fixed_buffer_receive_handler(void* state, const void* data, size_type size) -{ - fixed_buffer_state* p = static_cast< fixed_buffer_state* >(state); - if (BOOST_UNLIKELY(size > p->size)) - BOOST_THROW_EXCEPTION(bad_alloc("Buffer too small to receive the message")); - - std::memcpy(p->data, data, size); - p->data += size; - p->size -= size; -} - -BOOST_LOG_API void reliable_message_queue::remove(object_name const&) -{ - // System objects are reference counted on Windows, nothing to do here -} - -} // namespace ipc - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> diff --git a/contrib/restricted/boost/libs/log/src/windows/ipc_sync_wrappers.cpp b/contrib/restricted/boost/libs/log/src/windows/ipc_sync_wrappers.cpp deleted file mode 100644 index bd8bfb215c..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/ipc_sync_wrappers.cpp +++ /dev/null @@ -1,544 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file windows/ipc_sync_wrappers.cpp - * \author Andrey Semashev - * \date 23.01.2016 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#include <boost/log/detail/config.hpp> -#include <boost/winapi/access_rights.hpp> -#include <boost/winapi/handles.hpp> -#include <boost/winapi/event.hpp> -#include <boost/winapi/semaphore.hpp> -#include <boost/winapi/wait.hpp> -#include <boost/winapi/dll.hpp> -#include <boost/winapi/time.hpp> -#include <boost/winapi/get_last_error.hpp> -#include <boost/winapi/character_code_conversion.hpp> -#include <windows.h> // for error codes -#include <cstddef> -#include <limits> -#include <string> -#include <utility> -#include <boost/assert.hpp> -#include <boost/throw_exception.hpp> -#include <boost/checked_delete.hpp> -#include <boost/memory_order.hpp> -#include <boost/atomic/atomic.hpp> -#include <boost/log/detail/snprintf.hpp> -#include "unique_ptr.hpp" -#include "windows/ipc_sync_wrappers.hpp" -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace aux { - -//! Hex character table, defined in dump.cpp -extern const char g_hex_char_table[2][16]; - -} // namespace aux - -namespace ipc { - -namespace aux { - -void interprocess_event::create(const wchar_t* name, bool manual_reset, permissions const& perms) -{ -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - boost::winapi::HANDLE_ h = boost::winapi::CreateEventExW - ( - reinterpret_cast< boost::winapi::SECURITY_ATTRIBUTES_* >(perms.get_native()), - name, - boost::winapi::CREATE_EVENT_MANUAL_RESET_ * manual_reset, - boost::winapi::SYNCHRONIZE_ | boost::winapi::EVENT_MODIFY_STATE_ - ); -#else - boost::winapi::HANDLE_ h = boost::winapi::CreateEventW - ( - reinterpret_cast< boost::winapi::SECURITY_ATTRIBUTES_* >(perms.get_native()), - manual_reset, - false, - name - ); -#endif - if (BOOST_UNLIKELY(h == NULL)) - { - boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to create an interprocess event object", (err)); - } - - m_event.init(h); -} - -void interprocess_event::create_or_open(const wchar_t* name, bool manual_reset, permissions const& perms) -{ -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - boost::winapi::HANDLE_ h = boost::winapi::CreateEventExW - ( - reinterpret_cast< boost::winapi::SECURITY_ATTRIBUTES_* >(perms.get_native()), - name, - boost::winapi::CREATE_EVENT_MANUAL_RESET_ * manual_reset, - boost::winapi::SYNCHRONIZE_ | boost::winapi::EVENT_MODIFY_STATE_ - ); -#else - boost::winapi::HANDLE_ h = boost::winapi::CreateEventW - ( - reinterpret_cast< boost::winapi::SECURITY_ATTRIBUTES_* >(perms.get_native()), - manual_reset, - false, - name - ); -#endif - if (h == NULL) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - if (BOOST_LIKELY(err == ERROR_ALREADY_EXISTS)) - { - open(name); - return; - } - else - { - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to create an interprocess event object", (err)); - } - } - - m_event.init(h); -} - -void interprocess_event::open(const wchar_t* name) -{ - boost::winapi::HANDLE_ h = boost::winapi::OpenEventW(boost::winapi::SYNCHRONIZE_ | boost::winapi::EVENT_MODIFY_STATE_, false, name); - if (BOOST_UNLIKELY(h == NULL)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to open an interprocess event object", (err)); - } - - m_event.init(h); -} - -boost::atomic< interprocess_semaphore::is_semaphore_zero_count_t > interprocess_semaphore::is_semaphore_zero_count(&interprocess_semaphore::is_semaphore_zero_count_init); -interprocess_semaphore::nt_query_semaphore_t interprocess_semaphore::nt_query_semaphore = NULL; - -void interprocess_semaphore::create_or_open(const wchar_t* name, permissions const& perms) -{ -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - boost::winapi::HANDLE_ h = boost::winapi::CreateSemaphoreExW - ( - reinterpret_cast< boost::winapi::SECURITY_ATTRIBUTES_* >(perms.get_native()), - 0, // initial count - (std::numeric_limits< boost::winapi::LONG_ >::max)(), // max count - name, - 0u, // flags - boost::winapi::SYNCHRONIZE_ | boost::winapi::SEMAPHORE_MODIFY_STATE_ | boost::winapi::SEMAPHORE_QUERY_STATE_ - ); -#else - boost::winapi::HANDLE_ h = boost::winapi::CreateSemaphoreW - ( - reinterpret_cast< boost::winapi::SECURITY_ATTRIBUTES_* >(perms.get_native()), - 0, // initial count - (std::numeric_limits< boost::winapi::LONG_ >::max)(), // max count - name - ); -#endif - if (h == NULL) - { - boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - if (BOOST_LIKELY(err == ERROR_ALREADY_EXISTS)) - { - open(name); - return; - } - else - { - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to create an interprocess semaphore object", (err)); - } - } - - m_sem.init(h); -} - -void interprocess_semaphore::open(const wchar_t* name) -{ - boost::winapi::HANDLE_ h = boost::winapi::OpenSemaphoreW(boost::winapi::SYNCHRONIZE_ | boost::winapi::SEMAPHORE_MODIFY_STATE_ | boost::winapi::SEMAPHORE_QUERY_STATE_, false, name); - if (BOOST_UNLIKELY(h == NULL)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to open an interprocess semaphore object", (err)); - } - - m_sem.init(h); -} - -bool interprocess_semaphore::is_semaphore_zero_count_init(boost::winapi::HANDLE_ h) -{ - is_semaphore_zero_count_t impl = &interprocess_semaphore::is_semaphore_zero_count_emulated; - - // Check if ntdll.dll provides NtQuerySemaphore, see: http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FSemaphore%2FNtQuerySemaphore.html - boost::winapi::HMODULE_ ntdll = boost::winapi::GetModuleHandleW(L"ntdll.dll"); - if (ntdll) - { - nt_query_semaphore_t ntqs = (nt_query_semaphore_t)boost::winapi::get_proc_address(ntdll, "NtQuerySemaphore"); - if (ntqs) - { - nt_query_semaphore = ntqs; - impl = &interprocess_semaphore::is_semaphore_zero_count_nt_query_semaphore; - } - } - - is_semaphore_zero_count.store(impl, boost::memory_order_release); - - return impl(h); -} - -bool interprocess_semaphore::is_semaphore_zero_count_nt_query_semaphore(boost::winapi::HANDLE_ h) -{ - semaphore_basic_information info = {}; - NTSTATUS_ err = nt_query_semaphore - ( - h, - 0u, // SemaphoreBasicInformation - &info, - sizeof(info), - NULL - ); - if (BOOST_UNLIKELY(err != 0u)) - { - char buf[sizeof(unsigned int) * 2u + 4u]; - boost::log::aux::snprintf(buf, sizeof(buf), "0x%08x", static_cast< unsigned int >(err)); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, std::string("Failed to test an interprocess semaphore object for zero count, NT status: ") + buf, (ERROR_INVALID_HANDLE)); - } - - return info.current_count == 0u; -} - -bool interprocess_semaphore::is_semaphore_zero_count_emulated(boost::winapi::HANDLE_ h) -{ - const boost::winapi::DWORD_ retval = boost::winapi::WaitForSingleObject(h, 0u); - if (retval == boost::winapi::wait_timeout) - { - return true; - } - else if (BOOST_UNLIKELY(retval != boost::winapi::wait_object_0)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to test an interprocess semaphore object for zero count", (err)); - } - - // Restore the decremented counter - BOOST_VERIFY(!!boost::winapi::ReleaseSemaphore(h, 1, NULL)); - - return false; -} - -#if !defined(BOOST_MSVC) || _MSC_VER >= 1800 -BOOST_CONSTEXPR_OR_CONST uint32_t interprocess_mutex::lock_flag_bit; -BOOST_CONSTEXPR_OR_CONST uint32_t interprocess_mutex::event_set_flag_bit; -BOOST_CONSTEXPR_OR_CONST uint32_t interprocess_mutex::lock_flag_value; -BOOST_CONSTEXPR_OR_CONST uint32_t interprocess_mutex::event_set_flag_value; -BOOST_CONSTEXPR_OR_CONST uint32_t interprocess_mutex::waiter_count_mask; -#endif - -void interprocess_mutex::lock_slow() -{ - uint32_t old_state = m_shared_state->m_lock_state.load(boost::memory_order_relaxed); - mark_waiting_and_try_lock(old_state); - - if ((old_state & lock_flag_value) != 0u) try - { - do - { - m_event.wait(); - clear_waiting_and_try_lock(old_state); - } - while ((old_state & lock_flag_value) != 0u); - } - catch (...) - { - m_shared_state->m_lock_state.fetch_sub(1u, boost::memory_order_acq_rel); - throw; - } -} - -bool interprocess_mutex::lock_slow(boost::winapi::HANDLE_ abort_handle) -{ - uint32_t old_state = m_shared_state->m_lock_state.load(boost::memory_order_relaxed); - mark_waiting_and_try_lock(old_state); - - if ((old_state & lock_flag_value) != 0u) try - { - do - { - if (!m_event.wait(abort_handle)) - { - // Wait was interrupted - m_shared_state->m_lock_state.fetch_sub(1u, boost::memory_order_acq_rel); - return false; - } - - clear_waiting_and_try_lock(old_state); - } - while ((old_state & lock_flag_value) != 0u); - } - catch (...) - { - m_shared_state->m_lock_state.fetch_sub(1u, boost::memory_order_acq_rel); - throw; - } - - return true; -} - -inline void interprocess_mutex::mark_waiting_and_try_lock(uint32_t& old_state) -{ - uint32_t new_state; - do - { - uint32_t was_locked = (old_state & lock_flag_value); - if (was_locked) - { - // Avoid integer overflows - if (BOOST_UNLIKELY((old_state & waiter_count_mask) == waiter_count_mask)) - BOOST_LOG_THROW_DESCR(limitation_error, "Too many waiters on an interprocess mutex"); - - new_state = old_state + 1u; - } - else - { - new_state = old_state | lock_flag_value; - } - } - while (!m_shared_state->m_lock_state.compare_exchange_weak(old_state, new_state, boost::memory_order_acq_rel, boost::memory_order_relaxed)); -} - -inline void interprocess_mutex::clear_waiting_and_try_lock(uint32_t& old_state) -{ - old_state &= ~lock_flag_value; - old_state |= event_set_flag_value; - uint32_t new_state; - do - { - new_state = ((old_state & lock_flag_value) ? old_state : ((old_state - 1u) | lock_flag_value)) & ~event_set_flag_value; - } - while (!m_shared_state->m_lock_state.compare_exchange_strong(old_state, new_state, boost::memory_order_acq_rel, boost::memory_order_relaxed)); -} - - -bool interprocess_condition_variable::wait(interprocess_mutex::optional_unlock& lock, boost::winapi::HANDLE_ abort_handle) -{ - int32_t waiters = m_shared_state->m_waiters; - if (waiters < 0) - { - // We need to select a new semaphore to block on - m_current_semaphore = get_unused_semaphore(); - ++m_shared_state->m_generation; - m_shared_state->m_semaphore_id = m_current_semaphore->m_id; - waiters = 0; - } - else - { - // Avoid integer overflow - if (BOOST_UNLIKELY(waiters >= ((std::numeric_limits< int32_t >::max)() - 1))) - BOOST_LOG_THROW_DESCR(limitation_error, "Too many waiters on an interprocess condition variable"); - - // Make sure we use the right semaphore to block on - const uint32_t id = m_shared_state->m_semaphore_id; - if (m_current_semaphore->m_id != id) - m_current_semaphore = get_semaphore(id); - } - - m_shared_state->m_waiters = waiters + 1; - const uint32_t generation = m_shared_state->m_generation; - - boost::winapi::HANDLE_ handles[2u] = { m_current_semaphore->m_semaphore.get_handle(), abort_handle }; - - interprocess_mutex* const mutex = lock.disengage(); - mutex->unlock(); - - boost::winapi::DWORD_ retval = boost::winapi::WaitForMultipleObjects(2u, handles, false, boost::winapi::INFINITE_); - - if (BOOST_UNLIKELY(retval == boost::winapi::WAIT_FAILED_)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - - // Although highly unrealistic, it is possible that it took so long for the current thread to enter WaitForMultipleObjects that - // another thread has managed to destroy the semaphore. This can happen if the semaphore remains in a non-zero state - // for too long, which means that another process died while being blocked on the semaphore, and the semaphore was signalled, - // and the non-zero state timeout has passed. In this case the most logical behavior for the wait function is to return as - // if because of a wakeup. - if (err == ERROR_INVALID_HANDLE) - retval = boost::winapi::WAIT_OBJECT_0_; - else - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to block on an interprocess semaphore object", (err)); - } - - // Have to unconditionally lock the mutex here - mutex->lock(); - lock.engage(*mutex); - - if (generation == m_shared_state->m_generation && m_shared_state->m_waiters > 0) - --m_shared_state->m_waiters; - - return retval == boost::winapi::WAIT_OBJECT_0_; -} - -//! Finds or opens a semaphore with the specified id -interprocess_condition_variable::semaphore_info* interprocess_condition_variable::get_semaphore(uint32_t id) -{ - semaphore_info_set::insert_commit_data insert_state; - std::pair< semaphore_info_set::iterator, bool > res = m_semaphore_info_set.insert_check(id, semaphore_info::order_by_id(), insert_state); - if (res.second) - { - // We need to open the semaphore. It is possible that the semaphore does not exist because all processes that had it opened terminated. - // Because of this we also attempt to create it. - boost::log::aux::unique_ptr< semaphore_info > p(new semaphore_info(id)); - generate_semaphore_name(id); - p->m_semaphore.create_or_open(m_semaphore_name.c_str(), m_perms); - - res.first = m_semaphore_info_set.insert_commit(*p, insert_state); - m_semaphore_info_list.push_back(*p); - - return p.release(); - } - else - { - // Move the semaphore to the end of the list so that the next time we are less likely to use it - semaphore_info& info = *res.first; - m_semaphore_info_list.erase(m_semaphore_info_list.iterator_to(info)); - m_semaphore_info_list.push_back(info); - - return &info; - } -} - -//! Finds or creates a semaphore with zero counter -interprocess_condition_variable::semaphore_info* interprocess_condition_variable::get_unused_semaphore() -{ - // Be optimistic, check the current semaphore first - if (m_current_semaphore && m_current_semaphore->m_semaphore.is_zero_count()) - { - mark_unused(*m_current_semaphore); - return m_current_semaphore; - } - - const tick_count_clock::time_point now = tick_count_clock::now(); - - semaphore_info_list::iterator it = m_semaphore_info_list.begin(), end = m_semaphore_info_list.end(); - while (it != end) - { - if (is_overflow_less(m_next_semaphore_id, it->m_id) || m_next_semaphore_id == it->m_id) - m_next_semaphore_id = it->m_id + 1u; - - if (it->m_semaphore.is_zero_count()) - { - semaphore_info& info = *it; - mark_unused(info); - return &info; - } - else if (it->check_non_zero_timeout(now)) - { - // The semaphore is non-zero for too long. A blocked process must have crashed. Close it. - m_semaphore_info_set.erase(m_semaphore_info_set.iterator_to(*it)); - m_semaphore_info_list.erase_and_dispose(it++, boost::checked_deleter< semaphore_info >()); - } - else - { - ++it; - } - } - - // No semaphore found, create a new one - for (uint32_t semaphore_id = m_next_semaphore_id, semaphore_id_end = semaphore_id - 1u; semaphore_id != semaphore_id_end; ++semaphore_id) - { - interprocess_semaphore sem; - try - { - generate_semaphore_name(semaphore_id); - sem.create_or_open(m_semaphore_name.c_str(), m_perms); - if (!sem.is_zero_count()) - continue; - } - catch (...) - { - // Ignore errors, try the next one - continue; - } - - semaphore_info* p = NULL; - semaphore_info_set::insert_commit_data insert_state; - std::pair< semaphore_info_set::iterator, bool > res = m_semaphore_info_set.insert_check(semaphore_id, semaphore_info::order_by_id(), insert_state); - if (res.second) - { - p = new semaphore_info(semaphore_id); - p->m_semaphore.swap(sem); - - res.first = m_semaphore_info_set.insert_commit(*p, insert_state); - m_semaphore_info_list.push_back(*p); - } - else - { - // Some of our currently open semaphores must have been released by another thread - p = &*res.first; - mark_unused(*p); - } - - m_next_semaphore_id = semaphore_id + 1u; - - return p; - } - - BOOST_LOG_THROW_DESCR(limitation_error, "Too many semaphores are actively used for an interprocess condition variable"); - BOOST_LOG_UNREACHABLE_RETURN(NULL); -} - -//! Marks the semaphore info as unused and moves to the end of list -inline void interprocess_condition_variable::mark_unused(semaphore_info& info) BOOST_NOEXCEPT -{ - // Restart the timeout for non-zero state next time we search for an unused semaphore - info.m_checked_for_zero = false; - // Move to the end of the list so that we consider this semaphore last - m_semaphore_info_list.erase(m_semaphore_info_list.iterator_to(info)); - m_semaphore_info_list.push_back(info); -} - -//! Generates semaphore name according to id -inline void interprocess_condition_variable::generate_semaphore_name(uint32_t id) BOOST_NOEXCEPT -{ - // Note: avoid anything that involves locale to make semaphore names as stable as possible - BOOST_ASSERT(m_semaphore_name.size() >= 8u); - - wchar_t* p = &m_semaphore_name[m_semaphore_name.size() - 8u]; - *p++ = boost::log::aux::g_hex_char_table[0][id >> 28]; - *p++ = boost::log::aux::g_hex_char_table[0][(id >> 24) & 0x0000000Fu]; - - *p++ = boost::log::aux::g_hex_char_table[0][(id >> 20) & 0x0000000Fu]; - *p++ = boost::log::aux::g_hex_char_table[0][(id >> 16) & 0x0000000Fu]; - - *p++ = boost::log::aux::g_hex_char_table[0][(id >> 12) & 0x0000000Fu]; - *p++ = boost::log::aux::g_hex_char_table[0][(id >> 8) & 0x0000000Fu]; - - *p++ = boost::log::aux::g_hex_char_table[0][(id >> 4) & 0x0000000Fu]; - *p = boost::log::aux::g_hex_char_table[0][id & 0x0000000Fu]; -} - -} // namespace aux - -} // namespace ipc - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> diff --git a/contrib/restricted/boost/libs/log/src/windows/ipc_sync_wrappers.hpp b/contrib/restricted/boost/libs/log/src/windows/ipc_sync_wrappers.hpp deleted file mode 100644 index 7d1272aa1f..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/ipc_sync_wrappers.hpp +++ /dev/null @@ -1,652 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file windows/ipc_sync_wrappers.hpp - * \author Andrey Semashev - * \date 23.01.2016 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#ifndef BOOST_LOG_WINDOWS_IPC_SYNC_WRAPPERS_HPP_INCLUDED_ -#define BOOST_LOG_WINDOWS_IPC_SYNC_WRAPPERS_HPP_INCLUDED_ - -#include <boost/log/detail/config.hpp> -#include <boost/winapi/access_rights.hpp> -#include <boost/winapi/handles.hpp> -#include <boost/winapi/event.hpp> -#include <boost/winapi/semaphore.hpp> -#include <boost/winapi/wait.hpp> -#include <boost/winapi/dll.hpp> -#include <boost/winapi/time.hpp> -#include <boost/winapi/get_last_error.hpp> -#include <cstddef> -#include <limits> -#include <string> -#include <utility> -#include <boost/assert.hpp> -#include <boost/throw_exception.hpp> -#include <boost/checked_delete.hpp> -#include <boost/memory_order.hpp> -#include <boost/atomic/atomic.hpp> -#include <boost/intrusive/options.hpp> -#include <boost/intrusive/set.hpp> -#include <boost/intrusive/set_hook.hpp> -#include <boost/intrusive/list.hpp> -#include <boost/intrusive/list_hook.hpp> -#include <boost/log/exceptions.hpp> -#include <boost/log/utility/permissions.hpp> -#include "windows/auto_handle.hpp" -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace ipc { - -namespace aux { - -// TODO: Port to Boost.Atomic when it supports extended atomic ops -#if defined(BOOST_MSVC) && (_MSC_VER >= 1400) && !defined(UNDER_CE) - -#if _MSC_VER == 1400 -extern "C" unsigned char _interlockedbittestandset(long *a, long b); -extern "C" unsigned char _interlockedbittestandreset(long *a, long b); -#else -extern "C" unsigned char _interlockedbittestandset(volatile long *a, long b); -extern "C" unsigned char _interlockedbittestandreset(volatile long *a, long b); -#endif - -#pragma intrinsic(_interlockedbittestandset) -#pragma intrinsic(_interlockedbittestandreset) - -BOOST_FORCEINLINE bool bit_test_and_set(boost::atomic< uint32_t >& x, uint32_t bit) BOOST_NOEXCEPT -{ - return _interlockedbittestandset(reinterpret_cast< long* >(&x.storage()), static_cast< long >(bit)) != 0; -} - -BOOST_FORCEINLINE bool bit_test_and_reset(boost::atomic< uint32_t >& x, uint32_t bit) BOOST_NOEXCEPT -{ - return _interlockedbittestandreset(reinterpret_cast< long* >(&x.storage()), static_cast< long >(bit)) != 0; -} - -#elif (defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN)) && defined(_M_IX86) - -BOOST_FORCEINLINE bool bit_test_and_set(boost::atomic< uint32_t >& x, uint32_t bit) BOOST_NOEXCEPT -{ - boost::atomic< uint32_t >::storage_type* p = &x.storage(); - bool ret; - __asm - { - mov eax, bit - mov edx, p - lock bts [edx], eax - setc ret - }; - return ret; -} - -BOOST_FORCEINLINE bool bit_test_and_reset(boost::atomic< uint32_t >& x, uint32_t bit) BOOST_NOEXCEPT -{ - boost::atomic< uint32_t >::storage_type* p = &x.storage(); - bool ret; - __asm - { - mov eax, bit - mov edx, p - lock btr [edx], eax - setc ret - }; - return ret; -} - -#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) - -#if !defined(__CUDACC__) -#define BOOST_LOG_DETAIL_ASM_CLOBBER_CC_COMMA "cc", -#else -#define BOOST_LOG_DETAIL_ASM_CLOBBER_CC_COMMA -#endif - -BOOST_FORCEINLINE bool bit_test_and_set(boost::atomic< uint32_t >& x, uint32_t bit) BOOST_NOEXCEPT -{ - bool res; - __asm__ __volatile__ - ( - "lock; bts %[bit_number], %[storage]\n\t" - "setc %[result]\n\t" - : [storage] "+m" (x.storage()), [result] "=q" (res) - : [bit_number] "Kq" (bit) - : BOOST_LOG_DETAIL_ASM_CLOBBER_CC_COMMA "memory" - ); - return res; -} - -BOOST_FORCEINLINE bool bit_test_and_reset(boost::atomic< uint32_t >& x, uint32_t bit) BOOST_NOEXCEPT -{ - bool res; - __asm__ __volatile__ - ( - "lock; btr %[bit_number], %[storage]\n\t" - "setc %[result]\n\t" - : [storage] "+m" (x.storage()), [result] "=q" (res) - : [bit_number] "Kq" (bit) - : BOOST_LOG_DETAIL_ASM_CLOBBER_CC_COMMA "memory" - ); - return res; -} - -#else - -BOOST_FORCEINLINE bool bit_test_and_set(boost::atomic< uint32_t >& x, uint32_t bit) BOOST_NOEXCEPT -{ - const uint32_t mask = uint32_t(1u) << bit; - uint32_t old_val = x.fetch_or(mask, boost::memory_order_acq_rel); - return (old_val & mask) != 0u; -} - -BOOST_FORCEINLINE bool bit_test_and_reset(boost::atomic< uint32_t >& x, uint32_t bit) BOOST_NOEXCEPT -{ - const uint32_t mask = uint32_t(1u) << bit; - uint32_t old_val = x.fetch_and(~mask, boost::memory_order_acq_rel); - return (old_val & mask) != 0u; -} - -#endif - -//! Interprocess event object -class interprocess_event -{ -private: - auto_handle m_event; - -public: - void create(const wchar_t* name, bool manual_reset, permissions const& perms = permissions()); - void create_or_open(const wchar_t* name, bool manual_reset, permissions const& perms = permissions()); - void open(const wchar_t* name); - - boost::winapi::HANDLE_ get_handle() const BOOST_NOEXCEPT { return m_event.get(); } - - void set() - { - if (BOOST_UNLIKELY(!boost::winapi::SetEvent(m_event.get()))) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to set an interprocess event object", (err)); - } - } - - void set_noexcept() BOOST_NOEXCEPT - { - BOOST_VERIFY(!!boost::winapi::SetEvent(m_event.get())); - } - - void reset() - { - if (BOOST_UNLIKELY(!boost::winapi::ResetEvent(m_event.get()))) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to reset an interprocess event object", (err)); - } - } - - void wait() - { - const boost::winapi::DWORD_ retval = boost::winapi::WaitForSingleObject(m_event.get(), boost::winapi::infinite); - if (BOOST_UNLIKELY(retval != boost::winapi::wait_object_0)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to block on an interprocess event object", (err)); - } - } - - bool wait(boost::winapi::HANDLE_ abort_handle) - { - boost::winapi::HANDLE_ handles[2u] = { m_event.get(), abort_handle }; - const boost::winapi::DWORD_ retval = boost::winapi::WaitForMultipleObjects(2u, handles, false, boost::winapi::infinite); - if (retval == (boost::winapi::wait_object_0 + 1u)) - { - // Wait was interrupted - return false; - } - else if (BOOST_UNLIKELY(retval != boost::winapi::wait_object_0)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to block on an interprocess event object", (err)); - } - - return true; - } - - void swap(interprocess_event& that) BOOST_NOEXCEPT - { - m_event.swap(that.m_event); - } -}; - -//! Interprocess semaphore object -class interprocess_semaphore -{ -private: - typedef boost::winapi::DWORD_ NTSTATUS_; - struct semaphore_basic_information - { - boost::winapi::ULONG_ current_count; // current semaphore count - boost::winapi::ULONG_ maximum_count; // max semaphore count - }; - typedef NTSTATUS_ (__stdcall *nt_query_semaphore_t)(boost::winapi::HANDLE_ h, unsigned int info_class, semaphore_basic_information* pinfo, boost::winapi::ULONG_ info_size, boost::winapi::ULONG_* ret_len); - typedef bool (*is_semaphore_zero_count_t)(boost::winapi::HANDLE_ h); - -private: - auto_handle m_sem; - - static boost::atomic< is_semaphore_zero_count_t > is_semaphore_zero_count; - static nt_query_semaphore_t nt_query_semaphore; - -public: - void create_or_open(const wchar_t* name, permissions const& perms = permissions()); - void open(const wchar_t* name); - - boost::winapi::HANDLE_ get_handle() const BOOST_NOEXCEPT { return m_sem.get(); } - - void post(uint32_t count) - { - BOOST_ASSERT(count <= static_cast< uint32_t >((std::numeric_limits< boost::winapi::LONG_ >::max)())); - - if (BOOST_UNLIKELY(!boost::winapi::ReleaseSemaphore(m_sem.get(), static_cast< boost::winapi::LONG_ >(count), NULL))) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to post on an interprocess semaphore object", (err)); - } - } - - bool is_zero_count() const - { - return is_semaphore_zero_count.load(boost::memory_order_acquire)(m_sem.get()); - } - - void wait() - { - const boost::winapi::DWORD_ retval = boost::winapi::WaitForSingleObject(m_sem.get(), boost::winapi::infinite); - if (BOOST_UNLIKELY(retval != boost::winapi::wait_object_0)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to block on an interprocess semaphore object", (err)); - } - } - - bool wait(boost::winapi::HANDLE_ abort_handle) - { - boost::winapi::HANDLE_ handles[2u] = { m_sem.get(), abort_handle }; - const boost::winapi::DWORD_ retval = boost::winapi::WaitForMultipleObjects(2u, handles, false, boost::winapi::infinite); - if (retval == (boost::winapi::wait_object_0 + 1u)) - { - // Wait was interrupted - return false; - } - else if (BOOST_UNLIKELY(retval != boost::winapi::wait_object_0)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to block on an interprocess semaphore object", (err)); - } - - return true; - } - - void swap(interprocess_semaphore& that) BOOST_NOEXCEPT - { - m_sem.swap(that.m_sem); - } - -private: - static bool is_semaphore_zero_count_init(boost::winapi::HANDLE_ h); - static bool is_semaphore_zero_count_nt_query_semaphore(boost::winapi::HANDLE_ h); - static bool is_semaphore_zero_count_emulated(boost::winapi::HANDLE_ h); -}; - -//! Interprocess mutex. Implementation adopted from Boost.Sync. -class interprocess_mutex -{ -public: - //! Shared state that should be visible to all processes using the mutex - struct shared_state - { - boost::atomic< uint32_t > m_lock_state; - - shared_state() BOOST_NOEXCEPT : m_lock_state(0u) - { - } - }; - - struct auto_unlock - { - explicit auto_unlock(interprocess_mutex& mutex) BOOST_NOEXCEPT : m_mutex(mutex) {} - ~auto_unlock() { m_mutex.unlock(); } - - BOOST_DELETED_FUNCTION(auto_unlock(auto_unlock const&)) - BOOST_DELETED_FUNCTION(auto_unlock& operator=(auto_unlock const&)) - - private: - interprocess_mutex& m_mutex; - }; - - struct optional_unlock - { - optional_unlock() BOOST_NOEXCEPT : m_mutex(NULL) {} - explicit optional_unlock(interprocess_mutex& mutex) BOOST_NOEXCEPT : m_mutex(&mutex) {} - ~optional_unlock() { if (m_mutex) m_mutex->unlock(); } - - interprocess_mutex* disengage() BOOST_NOEXCEPT - { - interprocess_mutex* p = m_mutex; - m_mutex = NULL; - return p; - } - - void engage(interprocess_mutex& mutex) BOOST_NOEXCEPT - { - BOOST_ASSERT(!m_mutex); - m_mutex = &mutex; - } - - BOOST_DELETED_FUNCTION(optional_unlock(optional_unlock const&)) - BOOST_DELETED_FUNCTION(optional_unlock& operator=(optional_unlock const&)) - - private: - interprocess_mutex* m_mutex; - }; - -private: - interprocess_event m_event; - shared_state* m_shared_state; - -#if !defined(BOOST_MSVC) || _MSC_VER >= 1800 - static BOOST_CONSTEXPR_OR_CONST uint32_t lock_flag_bit = 31u; - static BOOST_CONSTEXPR_OR_CONST uint32_t event_set_flag_bit = 30u; - static BOOST_CONSTEXPR_OR_CONST uint32_t lock_flag_value = 1u << lock_flag_bit; - static BOOST_CONSTEXPR_OR_CONST uint32_t event_set_flag_value = 1u << event_set_flag_bit; - static BOOST_CONSTEXPR_OR_CONST uint32_t waiter_count_mask = event_set_flag_value - 1u; -#else - // MSVC 8-11, inclusively, fail to link if these constants are declared as static constants instead of an enum - enum - { - lock_flag_bit = 31u, - event_set_flag_bit = 30u, - lock_flag_value = 1u << lock_flag_bit, - event_set_flag_value = 1u << event_set_flag_bit, - waiter_count_mask = event_set_flag_value - 1u - }; -#endif - -public: - interprocess_mutex() BOOST_NOEXCEPT : m_shared_state(NULL) - { - } - - void create(const wchar_t* name, shared_state* shared, permissions const& perms = permissions()) - { - m_event.create(name, false, perms); - m_shared_state = shared; - } - - void open(const wchar_t* name, shared_state* shared) - { - m_event.open(name); - m_shared_state = shared; - } - - bool try_lock() - { - return !bit_test_and_set(m_shared_state->m_lock_state, lock_flag_bit); - } - - void lock() - { - if (BOOST_UNLIKELY(!try_lock())) - lock_slow(); - } - - bool lock(boost::winapi::HANDLE_ abort_handle) - { - if (BOOST_LIKELY(try_lock())) - return true; - return lock_slow(abort_handle); - } - - void unlock() BOOST_NOEXCEPT - { - const uint32_t old_count = m_shared_state->m_lock_state.fetch_add(lock_flag_value, boost::memory_order_release); - if ((old_count & event_set_flag_value) == 0u && (old_count > lock_flag_value)) - { - if (!bit_test_and_set(m_shared_state->m_lock_state, event_set_flag_bit)) - { - m_event.set_noexcept(); - } - } - } - - BOOST_DELETED_FUNCTION(interprocess_mutex(interprocess_mutex const&)) - BOOST_DELETED_FUNCTION(interprocess_mutex& operator=(interprocess_mutex const&)) - -private: - void lock_slow(); - bool lock_slow(boost::winapi::HANDLE_ abort_handle); - void mark_waiting_and_try_lock(uint32_t& old_state); - void clear_waiting_and_try_lock(uint32_t& old_state); -}; - -//! A simple clock that corresponds to GetTickCount/GetTickCount64 timeline -struct tick_count_clock -{ -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - typedef boost::winapi::ULONGLONG_ time_point; -#else - typedef boost::winapi::DWORD_ time_point; -#endif - - static time_point now() BOOST_NOEXCEPT - { -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - return boost::winapi::GetTickCount64(); -#else - return boost::winapi::GetTickCount(); -#endif - } -}; - -//! Interprocess condition variable -class interprocess_condition_variable -{ -private: - typedef boost::intrusive::list_base_hook< - boost::intrusive::tag< struct for_sem_order_by_usage >, - boost::intrusive::link_mode< boost::intrusive::safe_link > - > semaphore_info_list_hook_t; - - typedef boost::intrusive::set_base_hook< - boost::intrusive::tag< struct for_sem_lookup_by_id >, - boost::intrusive::link_mode< boost::intrusive::safe_link >, - boost::intrusive::optimize_size< true > - > semaphore_info_set_hook_t; - - //! Information about a semaphore object - struct semaphore_info : - public semaphore_info_list_hook_t, - public semaphore_info_set_hook_t - { - struct order_by_id - { - typedef bool result_type; - - result_type operator() (semaphore_info const& left, semaphore_info const& right) const BOOST_NOEXCEPT - { - return left.m_id < right.m_id; - } - result_type operator() (semaphore_info const& left, uint32_t right) const BOOST_NOEXCEPT - { - return left.m_id < right; - } - result_type operator() (uint32_t left, semaphore_info const& right) const BOOST_NOEXCEPT - { - return left < right.m_id; - } - }; - - //! The semaphore - interprocess_semaphore m_semaphore; - //! Timestamp of the moment when the semaphore was checked for zero count and it was not zero. In milliseconds since epoch. - tick_count_clock::time_point m_last_check_for_zero; - //! The flag indicates that the semaphore has been checked for zero count and it was not zero - bool m_checked_for_zero; - //! The semaphore id - const uint32_t m_id; - - explicit semaphore_info(uint32_t id) BOOST_NOEXCEPT : m_last_check_for_zero(0u), m_id(id) - { - } - - //! Checks if the semaphore is in 'non-zero' state for too long - bool check_non_zero_timeout(tick_count_clock::time_point now) BOOST_NOEXCEPT - { - if (!m_checked_for_zero) - { - m_last_check_for_zero = now; - m_checked_for_zero = true; - return false; - } - - return (now - m_last_check_for_zero) >= 2000u; - } - - BOOST_DELETED_FUNCTION(semaphore_info(semaphore_info const&)) - BOOST_DELETED_FUNCTION(semaphore_info& operator=(semaphore_info const&)) - }; - - typedef boost::intrusive::list< - semaphore_info, - boost::intrusive::base_hook< semaphore_info_list_hook_t >, - boost::intrusive::constant_time_size< false > - > semaphore_info_list; - - typedef boost::intrusive::set< - semaphore_info, - boost::intrusive::base_hook< semaphore_info_set_hook_t >, - boost::intrusive::compare< semaphore_info::order_by_id >, - boost::intrusive::constant_time_size< false > - > semaphore_info_set; - -public: - struct shared_state - { - //! Number of waiters blocked on the semaphore if >0, 0 if no threads are blocked, <0 when the blocked threads were signalled - int32_t m_waiters; - //! The semaphore generation - uint32_t m_generation; - //! Id of the semaphore which is used to block threads on - uint32_t m_semaphore_id; - - shared_state() BOOST_NOEXCEPT : - m_waiters(0), - m_generation(0u), - m_semaphore_id(0u) - { - } - }; - -private: - //! The list of semaphores used for blocking. The list is in the order at which the semaphores are considered to be picked for being used. - semaphore_info_list m_semaphore_info_list; - //! The list of semaphores used for blocking. Used for searching for a particular semaphore by id. - semaphore_info_set m_semaphore_info_set; - //! The semaphore that is currently being used for blocking - semaphore_info* m_current_semaphore; - //! A string storage for formatting a semaphore name - std::wstring m_semaphore_name; - //! Permissions used to create new semaphores - permissions m_perms; - //! Process-shared state - shared_state* m_shared_state; - //! The next id for creating a new semaphore - uint32_t m_next_semaphore_id; - -public: - interprocess_condition_variable() BOOST_NOEXCEPT : - m_current_semaphore(NULL), - m_shared_state(NULL), - m_next_semaphore_id(0u) - { - } - - ~interprocess_condition_variable() - { - m_semaphore_info_set.clear(); - m_semaphore_info_list.clear_and_dispose(boost::checked_deleter< semaphore_info >()); - } - - void init(const wchar_t* name, shared_state* shared, permissions const& perms = permissions()) - { - m_perms = perms; - m_shared_state = shared; - - m_semaphore_name = name; - // Reserve space for generate_semaphore_name() - m_semaphore_name.append(L".sem00000000"); - - m_current_semaphore = get_semaphore(m_shared_state->m_semaphore_id); - } - - void notify_all() - { - const int32_t waiters = m_shared_state->m_waiters; - if (waiters > 0) - { - const uint32_t id = m_shared_state->m_semaphore_id; - if (m_current_semaphore->m_id != id) - m_current_semaphore = get_semaphore(id); - - m_current_semaphore->m_semaphore.post(waiters); - m_shared_state->m_waiters = -waiters; - } - } - - bool wait(interprocess_mutex::optional_unlock& lock, boost::winapi::HANDLE_ abort_handle); - - BOOST_DELETED_FUNCTION(interprocess_condition_variable(interprocess_condition_variable const&)) - BOOST_DELETED_FUNCTION(interprocess_condition_variable& operator=(interprocess_condition_variable const&)) - -private: - //! Finds or opens a semaphore with the specified id - semaphore_info* get_semaphore(uint32_t id); - //! Finds or creates a semaphore with zero counter - semaphore_info* get_unused_semaphore(); - - //! Marks the semaphore info as unused and moves to the end of list - void mark_unused(semaphore_info& info) BOOST_NOEXCEPT; - - //! Generates semaphore name according to id - void generate_semaphore_name(uint32_t id) BOOST_NOEXCEPT; - - //! Returns \c true if \a left is less than \a right considering possible integer overflow - static bool is_overflow_less(uint32_t left, uint32_t right) BOOST_NOEXCEPT - { - return ((left - right) & 0x80000000u) != 0u; - } -}; - -} // namespace aux - -} // namespace ipc - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> - -#endif // BOOST_LOG_WINDOWS_IPC_SYNC_WRAPPERS_HPP_INCLUDED_ diff --git a/contrib/restricted/boost/libs/log/src/windows/light_rw_mutex.cpp b/contrib/restricted/boost/libs/log/src/windows/light_rw_mutex.cpp deleted file mode 100644 index 010cb55d2a..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/light_rw_mutex.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright Andrey Semashev 2007 - 2015. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file light_rw_mutex.cpp - * \author Andrey Semashev - * \date 19.06.2010 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#include <boost/log/detail/config.hpp> -#include <boost/log/detail/light_rw_mutex.hpp> - -#if !defined(BOOST_LOG_NO_THREADS) - -#if !defined(BOOST_LOG_LWRWMUTEX_USE_PTHREAD) && !defined(BOOST_LOG_LWRWMUTEX_USE_SRWLOCK) - -#include <cstddef> -#include <new> -#include <boost/assert.hpp> -#include <boost/align/aligned_alloc.hpp> -#include <boost/thread/shared_mutex.hpp> -#include <boost/log/utility/once_block.hpp> - -#include <boost/winapi/basic_types.hpp> -#include <boost/winapi/dll.hpp> - -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace aux { - -BOOST_LOG_ANONYMOUS_NAMESPACE { - -struct BOOST_LOG_MAY_ALIAS mutex_impl { void* p; }; // has the same layout as SRWLOCK and light_rw_mutex::m_Mutex - -typedef void (WINAPI *init_fun_t)(mutex_impl*); -typedef void (WINAPI *destroy_fun_t)(mutex_impl*); -typedef void (WINAPI *lock_exclusive_fun_t)(mutex_impl*); -typedef void (WINAPI *lock_shared_fun_t)(mutex_impl*); -typedef void (WINAPI *unlock_exclusive_fun_t)(mutex_impl*); -typedef void (WINAPI *unlock_shared_fun_t)(mutex_impl*); - -//! A complement stub function for InitializeSRWLock -void WINAPI DeinitializeSRWLock(mutex_impl*) -{ -} - -// The Boost.Thread-based implementation -void WINAPI InitializeSharedMutex(mutex_impl* mtx) -{ - // To avoid cache line aliasing we do aligned memory allocation here - enum - { - // Allocation size is the minimum number of cache lines to accommodate shared_mutex - size = - ( - sizeof(shared_mutex) / BOOST_LOG_CPU_CACHE_LINE_SIZE - + ((sizeof(shared_mutex) % BOOST_LOG_CPU_CACHE_LINE_SIZE) != 0) - ) - * BOOST_LOG_CPU_CACHE_LINE_SIZE - }; - mtx->p = alignment::aligned_alloc(BOOST_LOG_CPU_CACHE_LINE_SIZE, size); - BOOST_ASSERT(mtx->p != NULL); - new (mtx->p) shared_mutex(); -} - -void WINAPI DeinitializeSharedMutex(mutex_impl* mtx) -{ - static_cast< shared_mutex* >(mtx->p)->~shared_mutex(); - alignment::aligned_free(mtx->p); - mtx->p = NULL; -} - -void WINAPI ExclusiveLockSharedMutex(mutex_impl* mtx) -{ - static_cast< shared_mutex* >(mtx->p)->lock(); -} - -void WINAPI SharedLockSharedMutex(mutex_impl* mtx) -{ - static_cast< shared_mutex* >(mtx->p)->lock_shared(); -} - -void WINAPI ExclusiveUnlockSharedMutex(mutex_impl* mtx) -{ - static_cast< shared_mutex* >(mtx->p)->unlock(); -} - -void WINAPI SharedUnlockSharedMutex(mutex_impl* mtx) -{ - static_cast< shared_mutex* >(mtx->p)->unlock_shared(); -} - -// Pointers to the actual implementation functions -init_fun_t g_pInitializeLWRWMutex = NULL; -destroy_fun_t g_pDestroyLWRWMutex = NULL; -lock_exclusive_fun_t g_pLockExclusiveLWRWMutex = NULL; -lock_shared_fun_t g_pLockSharedLWRWMutex = NULL; -unlock_exclusive_fun_t g_pUnlockExclusiveLWRWMutex = NULL; -unlock_shared_fun_t g_pUnlockSharedLWRWMutex = NULL; - -//! The function dynamically initializes the implementation pointers -void init_light_rw_mutex_impl() -{ - boost::winapi::HMODULE_ hKernel32 = boost::winapi::GetModuleHandleW(L"kernel32.dll"); - if (hKernel32) - { - g_pInitializeLWRWMutex = - (init_fun_t)boost::winapi::get_proc_address(hKernel32, "InitializeSRWLock"); - if (g_pInitializeLWRWMutex) - { - g_pLockExclusiveLWRWMutex = - (lock_exclusive_fun_t)boost::winapi::get_proc_address(hKernel32, "AcquireSRWLockExclusive"); - if (g_pLockExclusiveLWRWMutex) - { - g_pUnlockExclusiveLWRWMutex = - (unlock_exclusive_fun_t)boost::winapi::get_proc_address(hKernel32, "ReleaseSRWLockExclusive"); - if (g_pUnlockExclusiveLWRWMutex) - { - g_pLockSharedLWRWMutex = - (lock_shared_fun_t)boost::winapi::get_proc_address(hKernel32, "AcquireSRWLockShared"); - if (g_pLockSharedLWRWMutex) - { - g_pUnlockSharedLWRWMutex = - (unlock_shared_fun_t)boost::winapi::get_proc_address(hKernel32, "ReleaseSRWLockShared"); - if (g_pUnlockSharedLWRWMutex) - { - g_pDestroyLWRWMutex = &DeinitializeSRWLock; - return; - } - } - } - } - } - } - - // Current OS doesn't have support for SRWLOCK, use Boost.Thread instead - g_pInitializeLWRWMutex = &InitializeSharedMutex; - g_pDestroyLWRWMutex = &DeinitializeSharedMutex; - g_pLockExclusiveLWRWMutex = &ExclusiveLockSharedMutex; - g_pUnlockExclusiveLWRWMutex = &ExclusiveUnlockSharedMutex; - g_pLockSharedLWRWMutex = &SharedLockSharedMutex; - g_pUnlockSharedLWRWMutex = &SharedUnlockSharedMutex; -} - -} // namespace - -BOOST_LOG_API light_rw_mutex::light_rw_mutex() -{ - BOOST_LOG_ONCE_BLOCK() - { - init_light_rw_mutex_impl(); - } - g_pInitializeLWRWMutex((mutex_impl*)&m_Mutex); -} - -BOOST_LOG_API light_rw_mutex::~light_rw_mutex() -{ - g_pDestroyLWRWMutex((mutex_impl*)&m_Mutex); -} - -BOOST_LOG_API void light_rw_mutex::lock_shared() -{ - g_pLockSharedLWRWMutex((mutex_impl*)&m_Mutex); -} - -BOOST_LOG_API void light_rw_mutex::unlock_shared() -{ - g_pUnlockSharedLWRWMutex((mutex_impl*)&m_Mutex); -} - -BOOST_LOG_API void light_rw_mutex::lock() -{ - g_pLockExclusiveLWRWMutex((mutex_impl*)&m_Mutex); -} - -BOOST_LOG_API void light_rw_mutex::unlock() -{ - g_pUnlockExclusiveLWRWMutex((mutex_impl*)&m_Mutex); -} - -} // namespace aux - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> - -#endif // !defined(BOOST_LOG_LWRWMUTEX_USE_PTHREAD) && !defined(BOOST_LOG_LWRWMUTEX_USE_SRWLOCK) - -#endif // !defined(BOOST_LOG_NO_THREADS) diff --git a/contrib/restricted/boost/libs/log/src/windows/mapped_shared_memory.cpp b/contrib/restricted/boost/libs/log/src/windows/mapped_shared_memory.cpp deleted file mode 100644 index 4586c1d81b..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/mapped_shared_memory.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file windows/mapped_shared_memory.cpp - * \author Andrey Semashev - * \date 13.02.2016 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#include <boost/log/detail/config.hpp> -#include <boost/winapi/basic_types.hpp> -#include <boost/winapi/handles.hpp> -#include <boost/winapi/dll.hpp> -#include <boost/winapi/file_mapping.hpp> -#include <boost/winapi/page_protection_flags.hpp> -#include <boost/winapi/get_last_error.hpp> -#include <windows.h> // for error codes -#include <cstddef> -#include <limits> -#include <string> -#include <sstream> -#include <boost/assert.hpp> -#include <boost/cstdint.hpp> -#include <boost/memory_order.hpp> -#include <boost/atomic/atomic.hpp> -#include <boost/throw_exception.hpp> -#include <boost/log/exceptions.hpp> -#include <boost/log/utility/permissions.hpp> -#include "windows/mapped_shared_memory.hpp" -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace ipc { - -namespace aux { - -boost::atomic< mapped_shared_memory::nt_query_section_t > mapped_shared_memory::nt_query_section(static_cast< mapped_shared_memory::nt_query_section_t >(NULL)); - -mapped_shared_memory::~mapped_shared_memory() -{ - if (m_mapped_address) - unmap(); - - if (m_handle) - { - BOOST_VERIFY(boost::winapi::CloseHandle(m_handle) != 0); - m_handle = NULL; - } -} - -//! Creates a new file mapping for the shared memory segment or opens the existing one -void mapped_shared_memory::create(const wchar_t* name, std::size_t size, permissions const& perms) -{ - BOOST_ASSERT(m_handle == NULL); - - const uint64_t size64 = static_cast< uint64_t >(size); - - // Unlike other create functions, this function opens the existing mapping, if one already exists - boost::winapi::HANDLE_ h = boost::winapi::CreateFileMappingW - ( - boost::winapi::INVALID_HANDLE_VALUE_, - reinterpret_cast< boost::winapi::SECURITY_ATTRIBUTES_* >(perms.get_native()), - boost::winapi::PAGE_READWRITE_ | boost::winapi::SEC_COMMIT_, - static_cast< boost::winapi::DWORD_ >(size64 >> 32u), - static_cast< boost::winapi::DWORD_ >(size64), - name - ); - - boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - if (BOOST_UNLIKELY(h == NULL || err != ERROR_SUCCESS)) - { - if (h != NULL) - boost::winapi::CloseHandle(h); - std::ostringstream strm; - strm << "Failed to create a shared memory segment of " << size << " bytes"; - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, strm.str(), (err)); - } - - m_handle = h; - m_size = size; -} - -//! Creates a new file mapping for the shared memory segment or opens the existing one. Returns \c true if the region was created and \c false if an existing one was opened. -bool mapped_shared_memory::create_or_open(const wchar_t* name, std::size_t size, permissions const& perms) -{ - BOOST_ASSERT(m_handle == NULL); - - const uint64_t size64 = static_cast< uint64_t >(size); - - // Unlike other create functions, this function opens the existing mapping, if one already exists - boost::winapi::HANDLE_ h = boost::winapi::CreateFileMappingW - ( - boost::winapi::INVALID_HANDLE_VALUE_, - reinterpret_cast< boost::winapi::SECURITY_ATTRIBUTES_* >(perms.get_native()), - boost::winapi::PAGE_READWRITE_ | boost::winapi::SEC_COMMIT_, - static_cast< boost::winapi::DWORD_ >(size64 >> 32u), - static_cast< boost::winapi::DWORD_ >(size64), - name - ); - - boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - if (BOOST_UNLIKELY(h == NULL)) - { - std::ostringstream strm; - strm << "Failed to create or open a shared memory segment of " << size << " bytes"; - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, strm.str(), (err)); - } - - const bool created = (err != ERROR_ALREADY_EXISTS); - try - { - if (created) - { - m_size = size; - } - else - { - // If an existing segment was opened, determine its size - m_size = obtain_size(h); - } - } - catch (...) - { - boost::winapi::CloseHandle(h); - throw; - } - - m_handle = h; - - return created; -} - -//! Opens the existing file mapping for the shared memory segment -void mapped_shared_memory::open(const wchar_t* name) -{ - BOOST_ASSERT(m_handle == NULL); - - // Note: FILE_MAP_WRITE implies reading permission as well - boost::winapi::HANDLE_ h = boost::winapi::OpenFileMappingW(boost::winapi::FILE_MAP_WRITE_ | boost::winapi::SECTION_QUERY_, false, name); - - if (BOOST_UNLIKELY(h == NULL)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to create a shared memory segment", (err)); - } - - try - { - m_size = obtain_size(h); - } - catch (...) - { - boost::winapi::CloseHandle(h); - throw; - } - - m_handle = h; -} - -//! Maps the file mapping into the current process memory -void mapped_shared_memory::map() -{ - BOOST_ASSERT(m_handle != NULL); - BOOST_ASSERT(m_mapped_address == NULL); - - // Note: FILE_MAP_WRITE implies reading permission as well - m_mapped_address = boost::winapi::MapViewOfFile - ( - m_handle, - boost::winapi::FILE_MAP_WRITE_ | boost::winapi::SECTION_QUERY_, - 0u, - 0u, - m_size - ); - - if (BOOST_UNLIKELY(m_mapped_address == NULL)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to map the shared memory segment into the process address space", (err)); - } -} - -//! Unmaps the file mapping -void mapped_shared_memory::unmap() -{ - BOOST_ASSERT(m_mapped_address != NULL); - - BOOST_VERIFY(boost::winapi::UnmapViewOfFile(m_mapped_address) != 0); - m_mapped_address = NULL; -} - -//! Returns the size of the file mapping identified by the handle -std::size_t mapped_shared_memory::obtain_size(boost::winapi::HANDLE_ h) -{ - nt_query_section_t query_section = nt_query_section.load(boost::memory_order_acquire); - - if (BOOST_UNLIKELY(query_section == NULL)) - { - // Check if ntdll.dll provides NtQuerySection, see: http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FSection%2FNtQuerySection.html - boost::winapi::HMODULE_ ntdll = boost::winapi::GetModuleHandleW(L"ntdll.dll"); - if (BOOST_UNLIKELY(ntdll == NULL)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to obtain a handle to ntdll.dll", (err)); - } - - query_section = (nt_query_section_t)boost::winapi::get_proc_address(ntdll, "NtQuerySection"); - if (BOOST_UNLIKELY(query_section == NULL)) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to obtain the NtQuerySection function", (err)); - } - - nt_query_section.store(query_section, boost::memory_order_release); - } - - section_basic_information info = {}; - boost::winapi::NTSTATUS_ err = query_section - ( - h, - 0u, // SectionBasicInformation - &info, - sizeof(info), - NULL - ); - if (BOOST_UNLIKELY(err != 0u)) - { - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to test obtain size of the shared memory segment", (ERROR_INVALID_HANDLE)); - } - - return static_cast< std::size_t >(info.section_size.QuadPart); -} - -} // namespace aux - -} // namespace ipc - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> diff --git a/contrib/restricted/boost/libs/log/src/windows/mapped_shared_memory.hpp b/contrib/restricted/boost/libs/log/src/windows/mapped_shared_memory.hpp deleted file mode 100644 index 1b5b85e5b2..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/mapped_shared_memory.hpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file windows/mapped_shared_memory.hpp - * \author Andrey Semashev - * \date 13.02.2016 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#ifndef BOOST_LOG_WINDOWS_MAPPED_SHARED_MEMORY_HPP_INCLUDED_ -#define BOOST_LOG_WINDOWS_MAPPED_SHARED_MEMORY_HPP_INCLUDED_ - -#include <boost/log/detail/config.hpp> -#include <boost/winapi/basic_types.hpp> -#include <cstddef> -#include <boost/assert.hpp> -#include <boost/atomic/atomic.hpp> -#include <boost/log/utility/permissions.hpp> -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace ipc { - -namespace aux { - -/*! - * A replacement for to \c mapped_shared_memory and \c mapped_region from Boost.Interprocess. - * The significant difference is that the shared memory name is passed as a UTF-16 string and - * errors are reported as Boost.Log exceptions. - */ -class mapped_shared_memory -{ -private: - struct section_basic_information - { - void* base_address; - boost::winapi::ULONG_ section_attributes; - boost::winapi::LARGE_INTEGER_ section_size; - }; - typedef boost::winapi::NTSTATUS_ (__stdcall *nt_query_section_t)(boost::winapi::HANDLE_ h, unsigned int info_class, section_basic_information* pinfo, boost::winapi::ULONG_ info_size, boost::winapi::ULONG_* ret_len); - -private: - boost::winapi::HANDLE_ m_handle; - void* m_mapped_address; - std::size_t m_size; - static boost::atomic< nt_query_section_t > nt_query_section; - -public: - BOOST_CONSTEXPR mapped_shared_memory() BOOST_NOEXCEPT : - m_handle(NULL), - m_mapped_address(NULL), - m_size(0u) - { - } - - ~mapped_shared_memory(); - - //! Creates a new file mapping for the shared memory segment - void create(const wchar_t* name, std::size_t size, permissions const& perms = permissions()); - //! Creates a new file mapping for the shared memory segment or opens the existing one. Returns \c true if the region was created and \c false if an existing one was opened. - bool create_or_open(const wchar_t* name, std::size_t size, permissions const& perms = permissions()); - //! Opens the existing file mapping for the shared memory segment - void open(const wchar_t* name); - - //! Maps the file mapping into the current process memory - void map(); - //! Unmaps the file mapping - void unmap(); - - //! Returns the size of the opened shared memory segment - std::size_t size() const BOOST_NOEXCEPT { return m_size; } - //! Returns the address of the mapped shared memory - void* address() const BOOST_NOEXCEPT { return m_mapped_address; } - - BOOST_DELETED_FUNCTION(mapped_shared_memory(mapped_shared_memory const&)) - BOOST_DELETED_FUNCTION(mapped_shared_memory& operator=(mapped_shared_memory const&)) - -private: - //! Returns the size of the file mapping identified by the handle - static std::size_t obtain_size(boost::winapi::HANDLE_ h); -}; - -} // namespace aux - -} // namespace ipc - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> - -#endif // BOOST_LOG_WINDOWS_MAPPED_SHARED_MEMORY_HPP_INCLUDED_ diff --git a/contrib/restricted/boost/libs/log/src/windows/object_name.cpp b/contrib/restricted/boost/libs/log/src/windows/object_name.cpp deleted file mode 100644 index 5b56a0352a..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/object_name.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file windows/object_name.cpp - * \author Andrey Semashev - * \date 06.03.2016 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#include <boost/log/detail/config.hpp> -#include <cstddef> -#include <cstdlib> -#include <string> -#include <vector> -#include <algorithm> -#include <boost/memory_order.hpp> -#include <boost/atomic/atomic.hpp> -#include <boost/move/utility_core.hpp> -#include <boost/log/exceptions.hpp> -#include <boost/log/utility/ipc/object_name.hpp> -#include <boost/winapi/get_last_error.hpp> -#include <windows.h> -#include <lmcons.h> -#include <security.h> -#include "windows/auto_handle.hpp" -#include "windows/utf_code_conversion.hpp" -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace ipc { - -BOOST_LOG_ANONYMOUS_NAMESPACE { - -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - -class auto_boundary_descriptor -{ -private: - HANDLE m_handle; - -public: - explicit auto_boundary_descriptor(HANDLE h = NULL) BOOST_NOEXCEPT : m_handle(h) - { - } - - ~auto_boundary_descriptor() BOOST_NOEXCEPT - { - if (m_handle) - DeleteBoundaryDescriptor(m_handle); - } - - void init(HANDLE h) BOOST_NOEXCEPT - { - BOOST_ASSERT(m_handle == NULL); - m_handle = h; - } - - HANDLE get() const BOOST_NOEXCEPT { return m_handle; } - HANDLE* get_ptr() BOOST_NOEXCEPT { return &m_handle; } - - void swap(auto_boundary_descriptor& that) BOOST_NOEXCEPT - { - HANDLE h = m_handle; - m_handle = that.m_handle; - that.m_handle = h; - } - - BOOST_DELETED_FUNCTION(auto_boundary_descriptor(auto_boundary_descriptor const&)) - BOOST_DELETED_FUNCTION(auto_boundary_descriptor& operator=(auto_boundary_descriptor const&)) -}; - -//! Handle for the private namespace for \c user scope -static boost::atomic< HANDLE > g_user_private_namespace; - -//! Closes the private namespace on process exit -void close_user_namespace() -{ - HANDLE h = g_user_private_namespace.load(boost::memory_order_acquire); - if (h) - { - ClosePrivateNamespace(h, 0); - g_user_private_namespace.store((HANDLE)NULL, boost::memory_order_release); - } -} - -//! Attempts to create or open the private namespace -bool init_user_namespace() -{ - HANDLE h = g_user_private_namespace.load(boost::memory_order_acquire); - if (BOOST_UNLIKELY(!h)) - { - // Obtain the current user SID - boost::log::ipc::aux::auto_handle h_process_token; - if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, h_process_token.get_ptr())) - return false; - - DWORD token_user_size = 0; - GetTokenInformation(h_process_token.get(), TokenUser, NULL, 0u, &token_user_size); - if (GetLastError() != ERROR_INSUFFICIENT_BUFFER || token_user_size < sizeof(TOKEN_USER)) - return false; - std::vector< unsigned char > token_user_storage(static_cast< std::size_t >(token_user_size), static_cast< unsigned char >(0u)); - if (!GetTokenInformation(h_process_token.get(), TokenUser, &token_user_storage[0], token_user_size, &token_user_size)) - return false; - - TOKEN_USER const& token_user = *reinterpret_cast< const TOKEN_USER* >(&token_user_storage[0]); - if (!token_user.User.Sid) - return false; - - // Create a boundary descriptor with the user's SID - auto_boundary_descriptor h_boundary(CreateBoundaryDescriptorW(L"User", 0)); - if (!h_boundary.get()) - return false; - - if (!AddSIDToBoundaryDescriptor(h_boundary.get_ptr(), token_user.User.Sid)) - return false; - - // Create or open a namespace for kernel objects - h = CreatePrivateNamespaceW(NULL, h_boundary.get(), L"User"); - if (!h) - h = OpenPrivateNamespaceW(h_boundary.get(), L"User"); - - if (h) - { - HANDLE expected = NULL; - if (g_user_private_namespace.compare_exchange_strong(expected, h, boost::memory_order_acq_rel, boost::memory_order_acquire)) - { - std::atexit(&close_user_namespace); - } - else - { - // Another thread must have opened the namespace - ClosePrivateNamespace(h, 0); - h = expected; - } - } - } - - return !!h; -} - -#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - -//! Returns a prefix string for a shared resource according to the scope -std::string get_scope_prefix(object_name::scope ns) -{ - std::string prefix; - switch (ns) - { - case object_name::process_group: - { - // For now consider all processes as members of the common process group. It may change if there is found - // a way to get a process group id (i.e. id of the closest parent process that was created with the CREATE_NEW_PROCESS_GROUP flag). - prefix = "Local\\boost.log.process_group"; - } - break; - - case object_name::session: - { - prefix = "Local\\boost.log.session"; - } - break; - - case object_name::user: - { -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - if (init_user_namespace()) - { - prefix = "User\\boost.log.user"; - } - else -#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - { - wchar_t buf[UNLEN + 1u]; - ULONG len = sizeof(buf) / sizeof(*buf); - if (BOOST_UNLIKELY(!GetUserNameExW(NameSamCompatible, buf, &len))) - { - const boost::winapi::DWORD_ err = boost::winapi::GetLastError(); - BOOST_LOG_THROW_DESCR_PARAMS(boost::log::system_error, "Failed to obtain the current user name", (err)); - } - - std::replace(buf, buf + len, L'\\', L'.'); - - prefix = "Local\\boost.log.user." + boost::log::aux::utf16_to_utf8(buf); - } - } - break; - - default: - prefix = "Global\\boost.log.global"; - break; - } - - prefix.push_back('.'); - - return BOOST_LOG_NRVO_RESULT(prefix); -} - -} // namespace - -//! Constructor from the object name -BOOST_LOG_API object_name::object_name(scope ns, const char* str) : - m_name(get_scope_prefix(ns) + str) -{ -} - -//! Constructor from the object name -BOOST_LOG_API object_name::object_name(scope ns, std::string const& str) : - m_name(get_scope_prefix(ns) + str) -{ -} - -} // namespace ipc - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> diff --git a/contrib/restricted/boost/libs/log/src/windows/simple_event_log.h b/contrib/restricted/boost/libs/log/src/windows/simple_event_log.h deleted file mode 100644 index 10c133c7c0..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/simple_event_log.h +++ /dev/null @@ -1,95 +0,0 @@ -/*
- * Copyright Andrey Semashev 2007 - 2015.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * This file is the Boost.Log library implementation, see the library documentation
- * at http://www.boost.org/libs/log/doc/log.html.
- */
-
-/* --------------------------------------------------------
- * HEADER SECTION
- */
-
-
-
-/* ------------------------------------------------------------------
- * MESSAGE DEFINITION SECTION
- */
-//
-// Values are 32 bit values laid out as follows:
-//
-// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
-// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
-// +---+-+-+-----------------------+-------------------------------+
-// |Sev|C|R| Facility | Code |
-// +---+-+-+-----------------------+-------------------------------+
-//
-// where
-//
-// Sev - is the severity code
-//
-// 00 - Success
-// 01 - Informational
-// 10 - Warning
-// 11 - Error
-//
-// C - is the Customer code flag
-//
-// R - is a reserved bit
-//
-// Facility - is the facility code
-//
-// Code - is the facility's status code
-//
-//
-// Define the facility codes
-//
-
-
-//
-// Define the severity codes
-//
-#define BOOST_LOG_SEVERITY_WARNING 0x2
-#define BOOST_LOG_SEVERITY_ERROR 0x3
-#define BOOST_LOG_SEVERITY_DEBUG 0x0
-#define BOOST_LOG_SEVERITY_INFO 0x1
-
-
-//
-// MessageId: BOOST_LOG_MSG_DEBUG
-//
-// MessageText:
-//
-// %1
-//
-#define BOOST_LOG_MSG_DEBUG ((DWORD)0x00000100L)
-
-//
-// MessageId: BOOST_LOG_MSG_INFO
-//
-// MessageText:
-//
-// %1
-//
-#define BOOST_LOG_MSG_INFO ((DWORD)0x40000101L)
-
-//
-// MessageId: BOOST_LOG_MSG_WARNING
-//
-// MessageText:
-//
-// %1
-//
-#define BOOST_LOG_MSG_WARNING ((DWORD)0x80000102L)
-
-//
-// MessageId: BOOST_LOG_MSG_ERROR
-//
-// MessageText:
-//
-// %1
-//
-#define BOOST_LOG_MSG_ERROR ((DWORD)0xC0000103L)
-
diff --git a/contrib/restricted/boost/libs/log/src/windows/utf_code_conversion.hpp b/contrib/restricted/boost/libs/log/src/windows/utf_code_conversion.hpp deleted file mode 100644 index 7b00f13d76..0000000000 --- a/contrib/restricted/boost/libs/log/src/windows/utf_code_conversion.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Andrey Semashev 2016. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -/*! - * \file windows/utf_code_conversion.hpp - * \author Andrey Semashev - * \date 22.02.2016 - * - * \brief This header is the Boost.Log library implementation, see the library documentation - * at http://www.boost.org/doc/libs/release/libs/log/doc/html/index.html. - */ - -#ifndef BOOST_LOG_WINDOWS_UTF_CODE_CONVERSION_HPP_INCLUDED_ -#define BOOST_LOG_WINDOWS_UTF_CODE_CONVERSION_HPP_INCLUDED_ - -#include <boost/log/detail/config.hpp> -#include <string> -#include <boost/log/detail/header.hpp> - -namespace boost { - -BOOST_LOG_OPEN_NAMESPACE - -namespace aux { - -//! Converts UTF-8 to UTF-16 -std::wstring utf8_to_utf16(const char* str); -//! Converts UTF-16 to UTF-8 -std::string utf16_to_utf8(const wchar_t* str); - -} // namespace aux - -BOOST_LOG_CLOSE_NAMESPACE // namespace log - -} // namespace boost - -#include <boost/log/detail/footer.hpp> - -#endif // BOOST_LOG_WINDOWS_UTF_CODE_CONVERSION_HPP_INCLUDED_ diff --git a/contrib/restricted/boost/libs/program_options/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/program_options/.yandex_meta/licenses.list.txt deleted file mode 100644 index 484ea5452b..0000000000 --- a/contrib/restricted/boost/libs/program_options/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,55 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt -// or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// Copyright Sascha Ochsenknecht 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt - - -====================COPYRIGHT==================== -// Copyright Vladimir Prus 2002-2004. -// Copyright Bertolt Mildner 2004. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt - - -====================COPYRIGHT==================== -// Copyright Vladimir Prus 2002-2004. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt - - -====================COPYRIGHT==================== -// Copyright Vladimir Prus 2004. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/program_options/CMakeLists.txt b/contrib/restricted/boost/libs/program_options/CMakeLists.txt index e8c98bfd99..c031ddb850 100644 --- a/contrib/restricted/boost/libs/program_options/CMakeLists.txt +++ b/contrib/restricted/boost/libs/program_options/CMakeLists.txt @@ -6,6 +6,6 @@ # original buildsystem will not be accepted. -if (UNIX AND NOT APPLE) +if (UNIX) include(CMakeLists.linux.txt) endif() diff --git a/contrib/restricted/boost/libs/python/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/python/.yandex_meta/licenses.list.txt deleted file mode 100644 index 0d88af215d..0000000000 --- a/contrib/restricted/boost/libs/python/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,120 +0,0 @@ -====================BSL-1.0==================== - // Contributed under the Boost Software License, Version 1.0. - // (See accompanying file LICENSE_1_0.txt or copy at - // http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Copyright David Abrahams 2004. Distributed under the Boost -// Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// (C) Copyright David Abrahams 2000. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// (C) Copyright R.W. Grosse-Kunstleve 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright (c) 2004 Jonathan Brandmeyer -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file - - -====================COPYRIGHT==================== -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright David Abrahams 2004. Use, modification and distribution is -// subject to the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// Copyright Eric Niebler 2005. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright Jim Bosch 2010-2012. -// Copyright Stefan Seefeld 2016. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright Nikolay Mladenov 2007. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright Peter Dimov and Multi Media Ltd 2001, 2002 -// Copyright David Abrahams 2001 - - -====================COPYRIGHT==================== -// Copyright Stefan Seefeld 2005. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/python/arcadia_test/mod/module.cpp b/contrib/restricted/boost/libs/python/arcadia_test/mod/module.cpp deleted file mode 100644 index 6053f30c81..0000000000 --- a/contrib/restricted/boost/libs/python/arcadia_test/mod/module.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include <boost/python.hpp> - -using namespace boost::python; - -static const char* hello() { - return "hello world!"; -} - -BOOST_PYTHON_MODULE(arcadia_boost_python_test) { - def("hello", &hello); -} diff --git a/contrib/restricted/boost/libs/python/arcadia_test/py2/test_hello.py b/contrib/restricted/boost/libs/python/arcadia_test/py2/test_hello.py deleted file mode 100644 index 67d1d8f06a..0000000000 --- a/contrib/restricted/boost/libs/python/arcadia_test/py2/test_hello.py +++ /dev/null @@ -1,5 +0,0 @@ -import arcadia_boost_python_test as M - - -def test_hello(): - assert M.hello() == "hello world!" diff --git a/contrib/restricted/boost/libs/python/arcadia_test/py3/test_hello.py b/contrib/restricted/boost/libs/python/arcadia_test/py3/test_hello.py deleted file mode 100644 index 67d1d8f06a..0000000000 --- a/contrib/restricted/boost/libs/python/arcadia_test/py3/test_hello.py +++ /dev/null @@ -1,5 +0,0 @@ -import arcadia_boost_python_test as M - - -def test_hello(): - assert M.hello() == "hello world!" diff --git a/contrib/restricted/boost/libs/python/src/numpy/dtype.cpp b/contrib/restricted/boost/libs/python/src/numpy/dtype.cpp deleted file mode 100644 index 88a20a27b5..0000000000 --- a/contrib/restricted/boost/libs/python/src/numpy/dtype.cpp +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright Jim Bosch 2010-2012. -// Copyright Stefan Seefeld 2016. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifdef _MSC_VER -#include <boost/cstdint.hpp> -#endif -#define BOOST_PYTHON_NUMPY_INTERNAL -#include <boost/python/numpy/internal.hpp> - -#define DTYPE_FROM_CODE(code) \ - dtype(python::detail::new_reference(reinterpret_cast<PyObject*>(PyArray_DescrFromType(code)))) - -#define BUILTIN_INT_DTYPE(bits) \ - template <> struct builtin_int_dtype<bits, false> \ - { \ - static dtype get() { return DTYPE_FROM_CODE(NPY_INT ## bits);} \ - }; \ - template <> struct builtin_int_dtype<bits, true> \ - { \ - static dtype get() { return DTYPE_FROM_CODE(NPY_UINT ## bits);} \ - }; \ - template BOOST_NUMPY_DECL dtype get_int_dtype<bits, false>(); \ - template BOOST_NUMPY_DECL dtype get_int_dtype<bits, true>() - -#define BUILTIN_FLOAT_DTYPE(bits) \ - template <> struct builtin_float_dtype<bits> \ - { \ - static dtype get() { return DTYPE_FROM_CODE(NPY_FLOAT ## bits);} \ - }; \ - template BOOST_NUMPY_DECL dtype get_float_dtype<bits>() - -#define BUILTIN_COMPLEX_DTYPE(bits) \ - template <> struct builtin_complex_dtype<bits> \ - { \ - static dtype get() { return DTYPE_FROM_CODE(NPY_COMPLEX ## bits);} \ - }; \ - template BOOST_NUMPY_DECL dtype get_complex_dtype<bits>() - -namespace boost { namespace python { namespace converter { -NUMPY_OBJECT_MANAGER_TRAITS_IMPL(PyArrayDescr_Type, numpy::dtype) -} // namespace boost::python::converter - -namespace numpy { -namespace detail { - -dtype builtin_dtype<bool,true>::get() { return DTYPE_FROM_CODE(NPY_BOOL); } - -template <int bits, bool isUnsigned> struct builtin_int_dtype; -template <int bits> struct builtin_float_dtype; -template <int bits> struct builtin_complex_dtype; - -template <int bits, bool isUnsigned> dtype get_int_dtype() { - return builtin_int_dtype<bits,isUnsigned>::get(); -} -template <int bits> dtype get_float_dtype() { return builtin_float_dtype<bits>::get(); } -template <int bits> dtype get_complex_dtype() { return builtin_complex_dtype<bits>::get(); } - -BUILTIN_INT_DTYPE(8); -BUILTIN_INT_DTYPE(16); -BUILTIN_INT_DTYPE(32); -BUILTIN_INT_DTYPE(64); -#ifdef NPY_FLOAT16 -BUILTIN_FLOAT_DTYPE(16); -#endif -BUILTIN_FLOAT_DTYPE(32); -BUILTIN_FLOAT_DTYPE(64); -BUILTIN_COMPLEX_DTYPE(64); -BUILTIN_COMPLEX_DTYPE(128); -#if NPY_BITSOF_LONGDOUBLE > NPY_BITSOF_DOUBLE -template <> struct builtin_float_dtype< NPY_BITSOF_LONGDOUBLE > { - static dtype get() { return DTYPE_FROM_CODE(NPY_LONGDOUBLE); } -}; -template dtype get_float_dtype< NPY_BITSOF_LONGDOUBLE >(); -template <> struct builtin_complex_dtype< 2 * NPY_BITSOF_LONGDOUBLE > { - static dtype get() { return DTYPE_FROM_CODE(NPY_CLONGDOUBLE); } -}; -template dtype get_complex_dtype< 2 * NPY_BITSOF_LONGDOUBLE >(); -#endif - -} // namespace detail - -python::detail::new_reference dtype::convert(object const & arg, bool align) -{ - PyArray_Descr* obj=NULL; - if (align) - { - if (PyArray_DescrAlignConverter(arg.ptr(), &obj) < 0) - throw_error_already_set(); - } - else - { - if (PyArray_DescrConverter(arg.ptr(), &obj) < 0) - throw_error_already_set(); - } - return python::detail::new_reference(reinterpret_cast<PyObject*>(obj)); -} - -int dtype::get_itemsize() const { return reinterpret_cast<PyArray_Descr*>(ptr())->elsize;} - -bool equivalent(dtype const & a, dtype const & b) { - // On Windows x64, the behaviour described on - // http://docs.scipy.org/doc/numpy/reference/c-api.array.html for - // PyArray_EquivTypes unfortunately does not extend as expected: - // "For example, on 32-bit platforms, NPY_LONG and NPY_INT are equivalent". - // This should also hold for 64-bit platforms (and does on Linux), but not - // on Windows. Implement an alternative: -#ifdef _MSC_VER - if (sizeof(long) == sizeof(int) && - // Manually take care of the type equivalence. - ((a == dtype::get_builtin<long>() || a == dtype::get_builtin<int>()) && - (b == dtype::get_builtin<long>() || b == dtype::get_builtin<int>()) || - (a == dtype::get_builtin<unsigned int>() || a == dtype::get_builtin<unsigned long>()) && - (b == dtype::get_builtin<unsigned int>() || b == dtype::get_builtin<unsigned long>()))) { - return true; - } else { - return PyArray_EquivTypes( - reinterpret_cast<PyArray_Descr*>(a.ptr()), - reinterpret_cast<PyArray_Descr*>(b.ptr()) - ); - } -#else - return PyArray_EquivTypes( - reinterpret_cast<PyArray_Descr*>(a.ptr()), - reinterpret_cast<PyArray_Descr*>(b.ptr()) - ); -#endif -} - -namespace -{ - -namespace pyconv = boost::python::converter; - -template <typename T> -class array_scalar_converter -{ -public: - - static PyTypeObject const * get_pytype() - { - // This implementation depends on the fact that get_builtin returns pointers to objects - // NumPy has declared statically, and that the typeobj member also refers to a static - // object. That means we don't need to do any reference counting. - // In fact, I'm somewhat concerned that increasing the reference count of any of these - // might cause leaks, because I don't think Boost.Python ever decrements it, but it's - // probably a moot point if everything is actually static. - return reinterpret_cast<PyArray_Descr*>(dtype::get_builtin<T>().ptr())->typeobj; - } - - static void * convertible(PyObject * obj) - { - if (obj->ob_type == get_pytype()) - { - return obj; - } - else - { - dtype dt(python::detail::borrowed_reference(obj->ob_type)); - if (equivalent(dt, dtype::get_builtin<T>())) - { - return obj; - } - } - return 0; - } - - static void convert(PyObject * obj, pyconv::rvalue_from_python_stage1_data* data) - { - void * storage = reinterpret_cast<pyconv::rvalue_from_python_storage<T>*>(data)->storage.bytes; - // We assume std::complex is a "standard layout" here and elsewhere; not guaranteed by - // C++03 standard, but true in every known implementation (and guaranteed by C++11). - PyArray_ScalarAsCtype(obj, reinterpret_cast<T*>(storage)); - data->convertible = storage; - } - - static void declare() - { - pyconv::registry::push_back(&convertible, &convert, python::type_id<T>() -#ifndef BOOST_PYTHON_NO_PY_SIGNATURES - , &get_pytype -#endif - ); - } - -}; - -} // anonymous - -void dtype::register_scalar_converters() -{ - array_scalar_converter<bool>::declare(); - array_scalar_converter<npy_uint8>::declare(); - array_scalar_converter<npy_int8>::declare(); - array_scalar_converter<npy_uint16>::declare(); - array_scalar_converter<npy_int16>::declare(); - array_scalar_converter<npy_uint32>::declare(); - array_scalar_converter<npy_int32>::declare(); -#ifdef _MSC_VER - // Since the npy_(u)int32 types are defined as long types and treated - // as being different from the int32 types, these converters must be declared - // explicitely. - array_scalar_converter<boost::uint32_t>::declare(); - array_scalar_converter<boost::int32_t>::declare(); -#endif - array_scalar_converter<npy_uint64>::declare(); - array_scalar_converter<npy_int64>::declare(); - array_scalar_converter<float>::declare(); - array_scalar_converter<double>::declare(); - array_scalar_converter< std::complex<float> >::declare(); - array_scalar_converter< std::complex<double> >::declare(); -#if NPY_BITSOF_LONGDOUBLE > NPY_BITSOF_DOUBLE - array_scalar_converter<long double>::declare(); - array_scalar_converter< std::complex<long double> >::declare(); -#endif -} - -}}} // namespace boost::python::numpy diff --git a/contrib/restricted/boost/libs/python/src/numpy/matrix.cpp b/contrib/restricted/boost/libs/python/src/numpy/matrix.cpp deleted file mode 100644 index 47d2261637..0000000000 --- a/contrib/restricted/boost/libs/python/src/numpy/matrix.cpp +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright Jim Bosch 2010-2012. -// Copyright Stefan Seefeld 2016. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#define BOOST_PYTHON_NUMPY_INTERNAL -#include <boost/python/numpy/internal.hpp> -#include <boost/python/numpy/matrix.hpp> - -namespace boost { namespace python { namespace numpy -{ -namespace detail -{ -inline object get_matrix_type() -{ - object module = import("numpy"); - return module.attr("matrix"); -} -} // namespace boost::python::numpy::detail -} // namespace boost::python::numpy - -namespace converter -{ - -PyTypeObject const * object_manager_traits<numpy::matrix>::get_pytype() -{ - return reinterpret_cast<PyTypeObject*>(numpy::detail::get_matrix_type().ptr()); -} - -} // namespace boost::python::converter - -namespace numpy -{ - -object matrix::construct(object const & obj, dtype const & dt, bool copy) -{ - return numpy::detail::get_matrix_type()(obj, dt, copy); -} - -object matrix::construct(object const & obj, bool copy) -{ - return numpy::detail::get_matrix_type()(obj, object(), copy); -} - -matrix matrix::view(dtype const & dt) const -{ - return matrix(python::detail::new_reference - (PyObject_CallMethod(this->ptr(), const_cast<char*>("view"), const_cast<char*>("O"), dt.ptr()))); -} - -matrix matrix::copy() const -{ - return matrix(python::detail::new_reference - (PyObject_CallMethod(this->ptr(), const_cast<char*>("copy"), const_cast<char*>("")))); -} - -matrix matrix::transpose() const -{ - return matrix(extract<matrix>(ndarray::transpose())); -} - -}}} // namespace boost::python::numpy diff --git a/contrib/restricted/boost/libs/python/src/numpy/ndarray.cpp b/contrib/restricted/boost/libs/python/src/numpy/ndarray.cpp deleted file mode 100644 index af09ecc338..0000000000 --- a/contrib/restricted/boost/libs/python/src/numpy/ndarray.cpp +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright Jim Bosch 2010-2012. -// Copyright Stefan Seefeld 2016. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#define BOOST_PYTHON_NUMPY_INTERNAL -#include <boost/python/numpy/internal.hpp> -#include <boost/scoped_array.hpp> - -namespace boost { namespace python { -namespace converter -{ -NUMPY_OBJECT_MANAGER_TRAITS_IMPL(PyArray_Type, numpy::ndarray) -} // namespace boost::python::converter - -namespace numpy -{ -namespace detail -{ - -ndarray::bitflag numpy_to_bitflag(int const f) -{ - ndarray::bitflag r = ndarray::NONE; - if (f & NPY_ARRAY_C_CONTIGUOUS) r = (r | ndarray::C_CONTIGUOUS); - if (f & NPY_ARRAY_F_CONTIGUOUS) r = (r | ndarray::F_CONTIGUOUS); - if (f & NPY_ARRAY_ALIGNED) r = (r | ndarray::ALIGNED); - if (f & NPY_ARRAY_WRITEABLE) r = (r | ndarray::WRITEABLE); - return r; -} - -int bitflag_to_numpy(ndarray::bitflag f) -{ - int r = 0; - if (f & ndarray::C_CONTIGUOUS) r |= NPY_ARRAY_C_CONTIGUOUS; - if (f & ndarray::F_CONTIGUOUS) r |= NPY_ARRAY_F_CONTIGUOUS; - if (f & ndarray::ALIGNED) r |= NPY_ARRAY_ALIGNED; - if (f & ndarray::WRITEABLE) r |= NPY_ARRAY_WRITEABLE; - return r; -} - -bool is_c_contiguous(std::vector<Py_intptr_t> const & shape, - std::vector<Py_intptr_t> const & strides, - int itemsize) -{ - std::vector<Py_intptr_t>::const_reverse_iterator j = strides.rbegin(); - int total = itemsize; - for (std::vector<Py_intptr_t>::const_reverse_iterator i = shape.rbegin(); i != shape.rend(); ++i, ++j) - { - if (total != *j) return false; - total *= (*i); - } - return true; -} - -bool is_f_contiguous(std::vector<Py_intptr_t> const & shape, - std::vector<Py_intptr_t> const & strides, - int itemsize) -{ - std::vector<Py_intptr_t>::const_iterator j = strides.begin(); - int total = itemsize; - for (std::vector<Py_intptr_t>::const_iterator i = shape.begin(); i != shape.end(); ++i, ++j) - { - if (total != *j) return false; - total *= (*i); - } - return true; -} - -bool is_aligned(std::vector<Py_intptr_t> const & strides, - int itemsize) -{ - for (std::vector<Py_intptr_t>::const_iterator i = strides.begin(); i != strides.end(); ++i) - { - if (*i % itemsize) return false; - } - return true; -} - -inline PyArray_Descr * incref_dtype(dtype const & dt) -{ - Py_INCREF(dt.ptr()); - return reinterpret_cast<PyArray_Descr*>(dt.ptr()); -} - -ndarray from_data_impl(void * data, - dtype const & dt, - python::object const & shape, - python::object const & strides, - python::object const & owner, - bool writeable) -{ - std::vector<Py_intptr_t> shape_(len(shape)); - std::vector<Py_intptr_t> strides_(len(strides)); - if (shape_.size() != strides_.size()) - { - PyErr_SetString(PyExc_ValueError, "Length of shape and strides arrays do not match."); - python::throw_error_already_set(); - } - for (std::size_t i = 0; i < shape_.size(); ++i) - { - shape_[i] = python::extract<Py_intptr_t>(shape[i]); - strides_[i] = python::extract<Py_intptr_t>(strides[i]); - } - return from_data_impl(data, dt, shape_, strides_, owner, writeable); -} - -ndarray from_data_impl(void * data, - dtype const & dt, - std::vector<Py_intptr_t> const & shape, - std::vector<Py_intptr_t> const & strides, - python::object const & owner, - bool writeable) -{ - if (shape.size() != strides.size()) - { - PyErr_SetString(PyExc_ValueError, "Length of shape and strides arrays do not match."); - python::throw_error_already_set(); - } - int itemsize = dt.get_itemsize(); - int flags = 0; - if (writeable) flags |= NPY_ARRAY_WRITEABLE; - if (is_c_contiguous(shape, strides, itemsize)) flags |= NPY_ARRAY_C_CONTIGUOUS; - if (is_f_contiguous(shape, strides, itemsize)) flags |= NPY_ARRAY_F_CONTIGUOUS; - if (is_aligned(strides, itemsize)) flags |= NPY_ARRAY_ALIGNED; - ndarray r(python::detail::new_reference - (PyArray_NewFromDescr(&PyArray_Type, - incref_dtype(dt), - shape.size(), - const_cast<Py_intptr_t*>(&shape.front()), - const_cast<Py_intptr_t*>(&strides.front()), - data, - flags, - NULL))); - r.set_base(owner); - return r; -} - -} // namespace detail - -namespace { - int normalize_index(int n,int nlim) // wraps [-nlim:nlim) into [0:nlim), throw IndexError otherwise - { - if (n<0) - n += nlim; // negative indices work backwards from end - if (n < 0 || n >= nlim) - { - PyErr_SetObject(PyExc_IndexError, Py_None); - throw_error_already_set(); - } - return n; - } -} - -Py_intptr_t ndarray::shape(int n) const -{ - return get_shape()[normalize_index(n,get_nd())]; -} - -Py_intptr_t ndarray::strides(int n) const -{ - return get_strides()[normalize_index(n,get_nd())]; -} - -ndarray ndarray::view(dtype const & dt) const -{ - return ndarray(python::detail::new_reference - (PyObject_CallMethod(this->ptr(), const_cast<char*>("view"), const_cast<char*>("O"), dt.ptr()))); -} - -ndarray ndarray::astype(dtype const & dt) const -{ - return ndarray(python::detail::new_reference - (PyObject_CallMethod(this->ptr(), const_cast<char*>("astype"), const_cast<char*>("O"), dt.ptr()))); -} - -ndarray ndarray::copy() const -{ - return ndarray(python::detail::new_reference - (PyObject_CallMethod(this->ptr(), const_cast<char*>("copy"), const_cast<char*>("")))); -} - -dtype ndarray::get_dtype() const -{ - return dtype(python::detail::borrowed_reference(get_struct()->descr)); -} - -python::object ndarray::get_base() const -{ - if (get_struct()->base == NULL) return object(); - return python::object(python::detail::borrowed_reference(get_struct()->base)); -} - -void ndarray::set_base(object const & base) -{ - Py_XDECREF(get_struct()->base); - if (base.ptr()) - { - Py_INCREF(base.ptr()); - get_struct()->base = base.ptr(); - } - else - { - get_struct()->base = NULL; - } -} - -ndarray::bitflag ndarray::get_flags() const -{ - return numpy::detail::numpy_to_bitflag(get_struct()->flags); -} - -ndarray ndarray::transpose() const -{ - return ndarray(python::detail::new_reference - (PyArray_Transpose(reinterpret_cast<PyArrayObject*>(this->ptr()), NULL))); -} - -ndarray ndarray::squeeze() const -{ - return ndarray(python::detail::new_reference - (PyArray_Squeeze(reinterpret_cast<PyArrayObject*>(this->ptr())))); -} - -ndarray ndarray::reshape(python::tuple const & shape) const -{ - return ndarray(python::detail::new_reference - (PyArray_Reshape(reinterpret_cast<PyArrayObject*>(this->ptr()), shape.ptr()))); -} - -python::object ndarray::scalarize() const -{ - Py_INCREF(ptr()); - return python::object(python::detail::new_reference(PyArray_Return(reinterpret_cast<PyArrayObject*>(ptr())))); -} - -ndarray zeros(python::tuple const & shape, dtype const & dt) -{ - int nd = len(shape); - boost::scoped_array<Py_intptr_t> dims(new Py_intptr_t[nd]); - for (int n=0; n<nd; ++n) dims[n] = python::extract<Py_intptr_t>(shape[n]); - return ndarray(python::detail::new_reference - (PyArray_Zeros(nd, dims.get(), detail::incref_dtype(dt), 0))); -} - -ndarray zeros(int nd, Py_intptr_t const * shape, dtype const & dt) -{ - return ndarray(python::detail::new_reference - (PyArray_Zeros(nd, const_cast<Py_intptr_t*>(shape), detail::incref_dtype(dt), 0))); -} - -ndarray empty(python::tuple const & shape, dtype const & dt) -{ - int nd = len(shape); - boost::scoped_array<Py_intptr_t> dims(new Py_intptr_t[nd]); - for (int n=0; n<nd; ++n) dims[n] = python::extract<Py_intptr_t>(shape[n]); - return ndarray(python::detail::new_reference - (PyArray_Empty(nd, dims.get(), detail::incref_dtype(dt), 0))); -} - -ndarray empty(int nd, Py_intptr_t const * shape, dtype const & dt) -{ - return ndarray(python::detail::new_reference - (PyArray_Empty(nd, const_cast<Py_intptr_t*>(shape), detail::incref_dtype(dt), 0))); -} - -ndarray array(python::object const & obj) -{ - return ndarray(python::detail::new_reference - (PyArray_FromAny(obj.ptr(), NULL, 0, 0, NPY_ARRAY_ENSUREARRAY, NULL))); -} - -ndarray array(python::object const & obj, dtype const & dt) -{ - return ndarray(python::detail::new_reference - (PyArray_FromAny(obj.ptr(), detail::incref_dtype(dt), 0, 0, NPY_ARRAY_ENSUREARRAY, NULL))); -} - -ndarray from_object(python::object const & obj, dtype const & dt, int nd_min, int nd_max, ndarray::bitflag flags) -{ - int requirements = detail::bitflag_to_numpy(flags); - return ndarray(python::detail::new_reference - (PyArray_FromAny(obj.ptr(), - detail::incref_dtype(dt), - nd_min, nd_max, - requirements, - NULL))); -} - -ndarray from_object(python::object const & obj, int nd_min, int nd_max, ndarray::bitflag flags) -{ - int requirements = detail::bitflag_to_numpy(flags); - return ndarray(python::detail::new_reference - (PyArray_FromAny(obj.ptr(), - NULL, - nd_min, nd_max, - requirements, - NULL))); -} - -}}} // namespace boost::python::numpy diff --git a/contrib/restricted/boost/libs/python/src/numpy/numpy.cpp b/contrib/restricted/boost/libs/python/src/numpy/numpy.cpp deleted file mode 100644 index 8e259bc755..0000000000 --- a/contrib/restricted/boost/libs/python/src/numpy/numpy.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright Jim Bosch 2010-2012. -// Copyright Stefan Seefeld 2016. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#define BOOST_PYTHON_NUMPY_INTERNAL_MAIN -#include <boost/python/numpy/internal.hpp> -#include <boost/python/numpy/dtype.hpp> - -namespace boost { namespace python { namespace numpy { - -#if PY_MAJOR_VERSION == 2 -static void wrap_import_array() -{ - import_array(); -} -#else -static void * wrap_import_array() -{ - import_array(); -} -#endif - -void initialize(bool register_scalar_converters) -{ - wrap_import_array(); - import_ufunc(); - if (register_scalar_converters) - dtype::register_scalar_converters(); -} - -}}} // namespace boost::python::numpy diff --git a/contrib/restricted/boost/libs/python/src/numpy/scalars.cpp b/contrib/restricted/boost/libs/python/src/numpy/scalars.cpp deleted file mode 100644 index 3947c06f2c..0000000000 --- a/contrib/restricted/boost/libs/python/src/numpy/scalars.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright Jim Bosch 2010-2012. -// Copyright Stefan Seefeld 2016. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#define BOOST_PYTHON_NUMPY_INTERNAL -#include <boost/python/numpy/internal.hpp> - -namespace boost { namespace python { -namespace converter -{ -NUMPY_OBJECT_MANAGER_TRAITS_IMPL(PyVoidArrType_Type, numpy::void_) -} // namespace boost::python::converter - -namespace numpy -{ - -void_::void_(Py_ssize_t size) - : object(python::detail::new_reference - (PyObject_CallFunction((PyObject*)&PyVoidArrType_Type, const_cast<char*>("i"), size))) -{} - -void_ void_::view(dtype const & dt) const -{ - return void_(python::detail::new_reference - (PyObject_CallMethod(this->ptr(), const_cast<char*>("view"), const_cast<char*>("O"), dt.ptr()))); -} - -void_ void_::copy() const -{ - return void_(python::detail::new_reference - (PyObject_CallMethod(this->ptr(), const_cast<char*>("copy"), const_cast<char*>("")))); -} - -}}} // namespace boost::python::numpy diff --git a/contrib/restricted/boost/libs/python/src/numpy/ufunc.cpp b/contrib/restricted/boost/libs/python/src/numpy/ufunc.cpp deleted file mode 100644 index 173d7213ec..0000000000 --- a/contrib/restricted/boost/libs/python/src/numpy/ufunc.cpp +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright Jim Bosch 2010-2012. -// Copyright Stefan Seefeld 2016. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#define BOOST_PYTHON_NUMPY_INTERNAL -#include <boost/python/numpy/internal.hpp> -#include <boost/python/numpy/ufunc.hpp> - -namespace boost { namespace python { -namespace converter -{ -NUMPY_OBJECT_MANAGER_TRAITS_IMPL(PyArrayMultiIter_Type, numpy::multi_iter) -} // namespace boost::python::converter - -namespace numpy -{ - -multi_iter make_multi_iter(object const & a1) -{ - return multi_iter(python::detail::new_reference(PyArray_MultiIterNew(1, a1.ptr()))); -} - - multi_iter make_multi_iter(object const & a1, object const & a2) -{ - return multi_iter(python::detail::new_reference(PyArray_MultiIterNew(2, a1.ptr(), a2.ptr()))); -} - -multi_iter make_multi_iter(object const & a1, object const & a2, object const & a3) -{ - return multi_iter(python::detail::new_reference(PyArray_MultiIterNew(3, a1.ptr(), a2.ptr(), a3.ptr()))); -} - -void multi_iter::next() -{ - PyArray_MultiIter_NEXT(ptr()); -} - -bool multi_iter::not_done() const -{ - return PyArray_MultiIter_NOTDONE(ptr()); -} - -char * multi_iter::get_data(int i) const -{ - return reinterpret_cast<char*>(PyArray_MultiIter_DATA(ptr(), i)); -} - -int multi_iter::get_nd() const -{ - return reinterpret_cast<PyArrayMultiIterObject*>(ptr())->nd; -} - -Py_intptr_t const * multi_iter::get_shape() const -{ - return reinterpret_cast<PyArrayMultiIterObject*>(ptr())->dimensions; -} - -Py_intptr_t multi_iter::shape(int n) const -{ - return reinterpret_cast<PyArrayMultiIterObject*>(ptr())->dimensions[n]; -} - -}}} // namespace boost::python::numpy diff --git a/contrib/restricted/boost/libs/random/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/random/.yandex_meta/licenses.list.txt deleted file mode 100644 index 230178a3f1..0000000000 --- a/contrib/restricted/boost/libs/random/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,43 +0,0 @@ -====================BSL-1.0==================== - * Distributed under the Boost Software License, Version 1.0. (See - * accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== - * Copyright Jens Maurer 2000 - * Distributed under the Boost Software License, Version 1.0. (See - * accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== - * Copyright Jens Maurer 2000-2001 - * Copyright Steven Watanabe 2010-2011 - * Distributed under the Boost Software License, Version 1.0. (See - * accompanying file LICENSE_1_0.txt or copy at - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/regex/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/regex/.yandex_meta/licenses.list.txt deleted file mode 100644 index 24d839b2a7..0000000000 --- a/contrib/restricted/boost/libs/regex/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,51 +0,0 @@ -====================BSL-1.0==================== - * Use, modification and distribution are subject to the - * Boost Software License, Version 1.0. (See accompanying file - * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== - * Copyright (c) 1998-2002 - * John Maddock - - -====================COPYRIGHT==================== - * Copyright (c) 1998-2004 John Maddock - * Copyright 2011 Garmin Ltd. or its subsidiaries - - -====================COPYRIGHT==================== - * Copyright (c) 2004 - * John Maddock - - -====================COPYRIGHT==================== -// Copyright (c) 2011 John Maddock -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/serialization/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/serialization/.yandex_meta/licenses.list.txt deleted file mode 100644 index 17e2899be4..0000000000 --- a/contrib/restricted/boost/libs/serialization/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,87 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt -// or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org for updates, documentation, and revision history. - - -====================BSL-1.0==================== -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// <gennadiy.rozental@tfn.com> - -// See http://www.boost.org for updates, documentation, and revision history. - - -====================COPYRIGHT==================== -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// (C) Copyright 2004 Robert Ramey - http://www.rrsd.com . -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// (C) Copyright 2005 Robert Ramey - http://www.rrsd.com - - -====================COPYRIGHT==================== -// (C) Copyright 2009 Robert Ramey - http://www.rrsd.com . -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// Copyright (c) 2004 Robert Ramey, Indiana University (garcia@osl.iu.edu) -// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu). -// Use, modification and distribution is subject to the Boost Software - - -====================COPYRIGHT==================== -// Copyright Vladimir Prus 2004. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/serialization/src/binary_wiarchive.cpp b/contrib/restricted/boost/libs/serialization/src/binary_wiarchive.cpp deleted file mode 100644 index 720d469d70..0000000000 --- a/contrib/restricted/boost/libs/serialization/src/binary_wiarchive.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// binary_wiarchive.cpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> - -#ifdef BOOST_NO_STD_WSTREAMBUF -#error "wide char i/o not supported on this platform" -#else - -#define BOOST_WARCHIVE_SOURCE -#include <boost/archive/binary_wiarchive.hpp> -#include <boost/archive/detail/archive_serializer_map.hpp> - -// explicitly instantiate for this type of text stream -#include <boost/archive/impl/archive_serializer_map.ipp> -#include <boost/archive/impl/basic_binary_iprimitive.ipp> -#include <boost/archive/impl/basic_binary_iarchive.ipp> - -namespace boost { -namespace archive { - -// explicitly instantiate for this type of text stream -template class detail::archive_serializer_map<binary_wiarchive>; -template class basic_binary_iprimitive< - binary_wiarchive, - wchar_t, - std::char_traits<wchar_t> ->; -template class basic_binary_iarchive<binary_wiarchive> ; -template class binary_iarchive_impl< - binary_wiarchive, - wchar_t, - std::char_traits<wchar_t> ->; - -} // namespace archive -} // namespace boost - -#endif // BOOST_NO_STD_WSTREAMBUF - diff --git a/contrib/restricted/boost/libs/serialization/src/binary_woarchive.cpp b/contrib/restricted/boost/libs/serialization/src/binary_woarchive.cpp deleted file mode 100644 index 905a319d66..0000000000 --- a/contrib/restricted/boost/libs/serialization/src/binary_woarchive.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// binary_woarchive.cpp: - -// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// See http://www.boost.org for updates, documentation, and revision history. - -#include <boost/config.hpp> - -#ifdef BOOST_NO_STD_WSTREAMBUF -#error "wide char i/o not supported on this platform" -#else - -#define BOOST_WARCHIVE_SOURCE -#include <boost/archive/binary_woarchive.hpp> - -// explicitly instantiate for this type of text stream -#include <boost/archive/impl/archive_serializer_map.ipp> -#include <boost/archive/impl/basic_binary_oprimitive.ipp> -#include <boost/archive/impl/basic_binary_oarchive.ipp> - -namespace boost { -namespace archive { - -template class detail::archive_serializer_map<binary_woarchive>; -template class basic_binary_oprimitive< - binary_woarchive, - wchar_t, - std::char_traits<wchar_t> ->; -template class basic_binary_oarchive<binary_woarchive> ; -template class binary_oarchive_impl< - binary_woarchive, - wchar_t, - std::char_traits<wchar_t> ->; - -} // namespace archive -} // namespace boost - -#endif // BOOST_NO_STD_WSTREAMBUF diff --git a/contrib/restricted/boost/libs/system/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/system/.yandex_meta/licenses.list.txt deleted file mode 100644 index 9a6126914d..0000000000 --- a/contrib/restricted/boost/libs/system/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,36 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2002, 2006 -// Copyright (c) Microsoft Corporation 2014 -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/system/CMakeLists.txt b/contrib/restricted/boost/libs/system/CMakeLists.txt index fc7b1ee73c..a681d385f3 100644 --- a/contrib/restricted/boost/libs/system/CMakeLists.txt +++ b/contrib/restricted/boost/libs/system/CMakeLists.txt @@ -8,6 +8,6 @@ if (APPLE) include(CMakeLists.darwin.txt) -elseif (UNIX AND NOT APPLE) +elseif (UNIX) include(CMakeLists.linux.txt) endif() diff --git a/contrib/restricted/boost/libs/thread/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/thread/.yandex_meta/licenses.list.txt deleted file mode 100644 index 74a48e4c31..0000000000 --- a/contrib/restricted/boost/libs/thread/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,116 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== - * (C) Copyright 2013 Tim Blechmann - * (C) Copyright 2013 Andrey Semashev - - -====================COPYRIGHT==================== -// (C) Copyright 2005-7 Anthony Williams -// (C) Copyright 2007 David Deakins - - -====================COPYRIGHT==================== -// (C) Copyright 2007 Anthony Williams - - -====================COPYRIGHT==================== -// (C) Copyright 2018 Andrey Semashev - - -====================COPYRIGHT==================== -// (C) Copyright 2007 Anthony Williams -// (C) Copyright 2007 David Deakins -// (C) Copyright 2011-2018 Vicente J. Botet Escriba - - -====================COPYRIGHT==================== -// (C) Copyright 2012 Vicente J. Botet Escriba -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at - - -====================COPYRIGHT==================== -// (C) Copyright Aaron W. LaFramboise, Roland Schwarz, Michael Glassford 2004. -// (C) Copyright 2007 Roland Schwarz -// (C) Copyright 2007 Anthony Williams -// (C) Copyright 2007 David Deakins -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file - - -====================COPYRIGHT==================== -// (C) Copyright Michael Glassford 2004. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file - - -====================COPYRIGHT==================== -// Copyright (C) 2001-2003 -// William E. Kempf -// (C) Copyright 2008-9 Anthony Williams - - -====================COPYRIGHT==================== -// Copyright (C) 2001-2003 -// William E. Kempf -// Copyright (C) 2007-9 Anthony Williams -// (C) Copyright 2011-2012 Vicente J. Botet Escriba - - -====================COPYRIGHT==================== -// Copyright (C) 2002-2003 -// David Moore, William E. Kempf -// Copyright (C) 2007-8 Anthony Williams -// (C) Copyright 2013 Vicente J. Botet Escriba - - -====================COPYRIGHT==================== -// Copyright (C) 2007 Anthony Williams - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/contrib/restricted/boost/libs/thread/CMakeLists.txt b/contrib/restricted/boost/libs/thread/CMakeLists.txt index fc7b1ee73c..a681d385f3 100644 --- a/contrib/restricted/boost/libs/thread/CMakeLists.txt +++ b/contrib/restricted/boost/libs/thread/CMakeLists.txt @@ -8,6 +8,6 @@ if (APPLE) include(CMakeLists.darwin.txt) -elseif (UNIX AND NOT APPLE) +elseif (UNIX) include(CMakeLists.linux.txt) endif() diff --git a/contrib/restricted/boost/libs/thread/src/tss_null.cpp b/contrib/restricted/boost/libs/thread/src/tss_null.cpp deleted file mode 100644 index b5029f1996..0000000000 --- a/contrib/restricted/boost/libs/thread/src/tss_null.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// (C) Copyright Michael Glassford 2004. -// (C) Copyright 2007 Anthony Williams -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/thread/detail/config.hpp> - -#if defined(BOOST_HAS_WINTHREADS) && (defined(BOOST_THREAD_BUILD_LIB) || defined(BOOST_THREAD_TEST) || defined(UNDER_CE)) && (!defined(_MSC_VER) || defined(UNDER_CE)) - -namespace boost -{ - /* - This file is a "null" implementation of tss cleanup; it's - purpose is to to eliminate link errors in cases - where it is known that tss cleanup is not needed. - */ - - void tss_cleanup_implemented(void) - { - /* - This function's sole purpose is to cause a link error in cases where - automatic tss cleanup is not implemented by Boost.Threads as a - reminder that user code is responsible for calling the necessary - functions at the appropriate times (and for implementing an a - tss_cleanup_implemented() function to eliminate the linker's - missing symbol error). - - If Boost.Threads later implements automatic tss cleanup in cases - where it currently doesn't (which is the plan), the duplicate - symbol error will warn the user that their custom solution is no - longer needed and can be removed. - */ - } - -} - -#endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB) && !defined(_MSC_VER) diff --git a/contrib/restricted/boost/libs/thread/src/win32/thread.cpp b/contrib/restricted/boost/libs/thread/src/win32/thread.cpp deleted file mode 100644 index 53a4ce6a5b..0000000000 --- a/contrib/restricted/boost/libs/thread/src/win32/thread.cpp +++ /dev/null @@ -1,973 +0,0 @@ -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// (C) Copyright 2007 Anthony Williams -// (C) Copyright 2007 David Deakins -// (C) Copyright 2011-2018 Vicente J. Botet Escriba - -//#define BOOST_THREAD_VERSION 3 - -#include <boost/winapi/config.hpp> -#include <boost/thread/thread_only.hpp> -#include <boost/thread/once.hpp> -#include <boost/thread/tss.hpp> -#include <boost/thread/condition_variable.hpp> -#include <boost/thread/detail/tss_hooks.hpp> -#include <boost/thread/future.hpp> -#include <boost/assert.hpp> -#include <boost/cstdint.hpp> -#if defined BOOST_THREAD_USES_DATETIME -#include <boost/date_time/posix_time/conversion.hpp> -#include <boost/thread/thread_time.hpp> -#endif -#include <boost/thread/csbl/memory/unique_ptr.hpp> -#include <memory> -#include <algorithm> -#ifndef UNDER_CE -#include <process.h> -#endif -#include <stdio.h> -#include <windows.h> -#include <boost/predef/platform.h> - -#if BOOST_PLAT_WINDOWS_RUNTIME -#include <mutex> -#include <atomic> -#include <Activation.h> -#include <wrl\client.h> -#include <wrl\event.h> -#include <wrl\wrappers\corewrappers.h> -#include <wrl\ftm.h> -#include <windows.system.threading.h> -#pragma comment(lib, "runtimeobject.lib") -#endif - -namespace boost -{ - namespace detail - { - thread_data_base::~thread_data_base() - { - for (notify_list_t::iterator i = notify.begin(), e = notify.end(); - i != e; ++i) - { - i->second->unlock(); - i->first->notify_all(); - } - for (async_states_t::iterator i = async_states_.begin(), e = async_states_.end(); - i != e; ++i) - { - (*i)->notify_deferred(); - } - } - } - - namespace - { -#ifdef BOOST_THREAD_PROVIDES_ONCE_CXX11 - boost::once_flag current_thread_tls_init_flag; -#else - boost::once_flag current_thread_tls_init_flag=BOOST_ONCE_INIT; -#endif -#if defined(UNDER_CE) - // Windows CE does not define the TLS_OUT_OF_INDEXES constant. -#define TLS_OUT_OF_INDEXES 0xFFFFFFFF -#endif -#if !BOOST_PLAT_WINDOWS_RUNTIME - DWORD current_thread_tls_key=TLS_OUT_OF_INDEXES; -#else - __declspec(thread) boost::detail::thread_data_base* current_thread_data_base; -#endif - - void create_current_thread_tls_key() - { - tss_cleanup_implemented(); // if anyone uses TSS, we need the cleanup linked in -#if !BOOST_PLAT_WINDOWS_RUNTIME - current_thread_tls_key=TlsAlloc(); - BOOST_ASSERT(current_thread_tls_key!=TLS_OUT_OF_INDEXES); -#endif - } - - void cleanup_tls_key() - { -#if !BOOST_PLAT_WINDOWS_RUNTIME - if(current_thread_tls_key!=TLS_OUT_OF_INDEXES) - { - TlsFree(current_thread_tls_key); - current_thread_tls_key=TLS_OUT_OF_INDEXES; - } -#endif - } - - void set_current_thread_data(detail::thread_data_base* new_data) - { - boost::call_once(current_thread_tls_init_flag,create_current_thread_tls_key); -#if BOOST_PLAT_WINDOWS_RUNTIME - current_thread_data_base = new_data; -#else - if (current_thread_tls_key != TLS_OUT_OF_INDEXES) - { - BOOST_VERIFY(TlsSetValue(current_thread_tls_key, new_data)); - } - else - { - BOOST_VERIFY(false); - //boost::throw_exception(thread_resource_error()); - } -#endif - } - } - - namespace detail - { - thread_data_base* get_current_thread_data() - { -#if BOOST_PLAT_WINDOWS_RUNTIME - return current_thread_data_base; -#else - if (current_thread_tls_key == TLS_OUT_OF_INDEXES) - { - return 0; - } - return (detail::thread_data_base*)TlsGetValue(current_thread_tls_key); -#endif - } - } - - namespace - { -#ifndef BOOST_HAS_THREADEX -// Windows CE doesn't define _beginthreadex - - struct ThreadProxyData - { - typedef unsigned (__stdcall* func)(void*); - func start_address_; - void* arglist_; - ThreadProxyData(func start_address,void* arglist) : start_address_(start_address), arglist_(arglist) {} - }; - - DWORD WINAPI ThreadProxy(LPVOID args) - { - boost::csbl::unique_ptr<ThreadProxyData> data(reinterpret_cast<ThreadProxyData*>(args)); - DWORD ret=data->start_address_(data->arglist_); - return ret; - } - - inline uintptr_t _beginthreadex(void* security, unsigned stack_size, unsigned (__stdcall* start_address)(void*), - void* arglist, unsigned initflag, unsigned* thrdaddr) - { - DWORD threadID; - ThreadProxyData* data = new ThreadProxyData(start_address,arglist); - HANDLE hthread=CreateThread(static_cast<LPSECURITY_ATTRIBUTES>(security),stack_size,ThreadProxy, - data,initflag,&threadID); - if (hthread==0) { - delete data; - return 0; - } - *thrdaddr=threadID; - return reinterpret_cast<uintptr_t const>(hthread); - } - -#endif - - } - - namespace detail - { - struct thread_exit_callback_node - { - boost::detail::thread_exit_function_base* func; - thread_exit_callback_node* next; - - thread_exit_callback_node(boost::detail::thread_exit_function_base* func_, - thread_exit_callback_node* next_): - func(func_),next(next_) - {} - }; - - } - -#if BOOST_PLAT_WINDOWS_RUNTIME - namespace detail - { - std::atomic_uint threadCount; - - bool win32::scoped_winrt_thread::start(thread_func address, void *parameter, unsigned int *thrdId) - { - Microsoft::WRL::ComPtr<ABI::Windows::System::Threading::IThreadPoolStatics> threadPoolFactory; - HRESULT hr = ::Windows::Foundation::GetActivationFactory( - Microsoft::WRL::Wrappers::HStringReference(RuntimeClass_Windows_System_Threading_ThreadPool).Get(), - &threadPoolFactory); - if (hr != S_OK) - { - return false; - } - - // Create event for tracking work item completion. - *thrdId = ++threadCount; - handle completionHandle = CreateEventExW(NULL, NULL, 0, EVENT_ALL_ACCESS); - if (!completionHandle) - { - return false; - } - m_completionHandle = completionHandle; - - // Create new work item. - Microsoft::WRL::ComPtr<ABI::Windows::System::Threading::IWorkItemHandler> workItem = - Microsoft::WRL::Callback<Microsoft::WRL::Implements<Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>, ABI::Windows::System::Threading::IWorkItemHandler, Microsoft::WRL::FtmBase>> - ([address, parameter, completionHandle](ABI::Windows::Foundation::IAsyncAction *) - { - // Add a reference since we need to access the completionHandle after the thread_start_function. - // This is to handle cases where detach() was called and run_thread_exit_callbacks() would end - // up closing the handle. - ::boost::detail::thread_data_base* const thread_info(reinterpret_cast<::boost::detail::thread_data_base*>(parameter)); - intrusive_ptr_add_ref(thread_info); - - __try - { - address(parameter); - } - __finally - { - SetEvent(completionHandle); - intrusive_ptr_release(thread_info); - } - return S_OK; - }); - - // Schedule work item on the threadpool. - Microsoft::WRL::ComPtr<ABI::Windows::Foundation::IAsyncAction> asyncAction; - hr = threadPoolFactory->RunWithPriorityAndOptionsAsync( - workItem.Get(), - ABI::Windows::System::Threading::WorkItemPriority_Normal, - ABI::Windows::System::Threading::WorkItemOptions_TimeSliced, - &asyncAction); - return hr == S_OK; - } - } -#endif - - namespace - { - void run_thread_exit_callbacks() - { - detail::thread_data_ptr current_thread_data(detail::get_current_thread_data(),false); - if(current_thread_data) - { - while(! current_thread_data->tss_data.empty() || current_thread_data->thread_exit_callbacks) - { - while(current_thread_data->thread_exit_callbacks) - { - detail::thread_exit_callback_node* const current_node=current_thread_data->thread_exit_callbacks; - current_thread_data->thread_exit_callbacks=current_node->next; - if(current_node->func) - { - (*current_node->func)(); - boost::detail::heap_delete(current_node->func); - } - boost::detail::heap_delete(current_node); - } - while (!current_thread_data->tss_data.empty()) - { - std::map<void const*,detail::tss_data_node>::iterator current - = current_thread_data->tss_data.begin(); - if(current->second.func && (current->second.value!=0)) - { - (*current->second.func)(current->second.value); - } - current_thread_data->tss_data.erase(current); - } - } - set_current_thread_data(0); - } - } - - unsigned __stdcall thread_start_function(void* param) - { - detail::thread_data_base* const thread_info(reinterpret_cast<detail::thread_data_base*>(param)); - set_current_thread_data(thread_info); -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - BOOST_TRY - { -#endif - thread_info->run(); -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - } - BOOST_CATCH(thread_interrupted const&) - { - } - // Unhandled exceptions still cause the application to terminate - BOOST_CATCH_END -#endif - run_thread_exit_callbacks(); - return 0; - } - } - - thread::thread() BOOST_NOEXCEPT - {} - - bool thread::start_thread_noexcept() - { -#if BOOST_PLAT_WINDOWS_RUNTIME - intrusive_ptr_add_ref(thread_info.get()); - if (!thread_info->thread_handle.start(&thread_start_function, thread_info.get(), &thread_info->id)) - { - intrusive_ptr_release(thread_info.get()); - return false; - } - return true; -#else - uintptr_t const new_thread=_beginthreadex(0,0,&thread_start_function,thread_info.get(),CREATE_SUSPENDED,&thread_info->id); - if(!new_thread) - { - return false; - } - intrusive_ptr_add_ref(thread_info.get()); - thread_info->thread_handle=(detail::win32::handle)(new_thread); - ResumeThread(thread_info->thread_handle); - return true; -#endif - } - - bool thread::start_thread_noexcept(const attributes& attr) - { -#if BOOST_PLAT_WINDOWS_RUNTIME - // Stack size isn't supported with Windows Runtime. - attr; - return start_thread_noexcept(); -#else - uintptr_t const new_thread=_beginthreadex(0,static_cast<unsigned int>(attr.get_stack_size()),&thread_start_function,thread_info.get(), - CREATE_SUSPENDED | STACK_SIZE_PARAM_IS_A_RESERVATION, &thread_info->id); - if(!new_thread) - { - return false; - } - intrusive_ptr_add_ref(thread_info.get()); - thread_info->thread_handle=(detail::win32::handle)(new_thread); - ResumeThread(thread_info->thread_handle); - return true; -#endif - } - - thread::thread(detail::thread_data_ptr data): - thread_info(data) - {} - - namespace - { - struct externally_launched_thread: - detail::thread_data_base - { - externally_launched_thread() - { - ++count; -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - interruption_enabled=false; -#endif - } - ~externally_launched_thread() { - BOOST_ASSERT(notify.empty()); - notify.clear(); - BOOST_ASSERT(async_states_.empty()); - async_states_.clear(); - } - - void run() - {} - void notify_all_at_thread_exit(condition_variable*, mutex*) - {} - - private: - externally_launched_thread(externally_launched_thread&); - void operator=(externally_launched_thread&); - }; - - void make_external_thread_data() - { - externally_launched_thread* me=detail::heap_new<externally_launched_thread>(); - BOOST_TRY - { - set_current_thread_data(me); - } - BOOST_CATCH(...) - { - detail::heap_delete(me); - BOOST_RETHROW - } - BOOST_CATCH_END - } - - detail::thread_data_base* get_or_make_current_thread_data() - { - detail::thread_data_base* current_thread_data(detail::get_current_thread_data()); - if(!current_thread_data) - { - make_external_thread_data(); - current_thread_data=detail::get_current_thread_data(); - } - return current_thread_data; - } - } - - thread::id thread::get_id() const BOOST_NOEXCEPT - { -#if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID - detail::thread_data_ptr local_thread_info=(get_thread_info)(); - if(!local_thread_info) - { - return 0; - } - return local_thread_info->id; -#else - return thread::id((get_thread_info)()); -#endif - } - - bool thread::joinable() const BOOST_NOEXCEPT - { - detail::thread_data_ptr local_thread_info = (get_thread_info)(); - if(!local_thread_info) - { - return false; - } - return true; - } - bool thread::join_noexcept() - { - detail::thread_data_ptr local_thread_info=(get_thread_info)(); - if(local_thread_info) - { - this_thread::interruptible_wait(this->native_handle(), detail::internal_platform_timepoint::getMax()); - release_handle(); - return true; - } - else - { - return false; - } - } - - bool thread::do_try_join_until_noexcept(detail::internal_platform_timepoint const &timeout, bool& res) - { - detail::thread_data_ptr local_thread_info=(get_thread_info)(); - if(local_thread_info) - { - if(!this_thread::interruptible_wait(this->native_handle(), timeout)) - { - res=false; - return true; - } - release_handle(); - res=true; - return true; - } - else - { - return false; - } - } - - void thread::detach() - { - release_handle(); - } - - void thread::release_handle() - { - thread_info=0; - } - -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - void thread::interrupt() - { - detail::thread_data_ptr local_thread_info=(get_thread_info)(); - if(local_thread_info) - { - local_thread_info->interrupt(); - } - } - - bool thread::interruption_requested() const BOOST_NOEXCEPT - { - detail::thread_data_ptr local_thread_info=(get_thread_info)(); - return local_thread_info.get() && (winapi::WaitForSingleObjectEx(local_thread_info->interruption_handle,0,0)==0); - } - -#endif - - unsigned thread::hardware_concurrency() BOOST_NOEXCEPT - { - detail::win32::system_info info; - detail::win32::get_system_info(&info); - return info.dwNumberOfProcessors; - } - - unsigned thread::physical_concurrency() BOOST_NOEXCEPT - { - // a bit too strict: Windows XP with SP3 would be sufficient -#if BOOST_PLAT_WINDOWS_RUNTIME \ - || ( BOOST_USE_WINAPI_VERSION <= BOOST_WINAPI_VERSION_WINXP ) \ - || ( ( defined(__MINGW32__) && !defined(__MINGW64__) ) && _WIN32_WINNT < 0x0600) - return 0; -#else - unsigned cores = 0; - DWORD size = 0; - - GetLogicalProcessorInformation(NULL, &size); - if (ERROR_INSUFFICIENT_BUFFER != GetLastError()) - return 0; - - std::vector<SYSTEM_LOGICAL_PROCESSOR_INFORMATION> buffer(size); - if (GetLogicalProcessorInformation(&buffer.front(), &size) == FALSE) - return 0; - - const size_t Elements = size / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); - - for (size_t i = 0; i < Elements; ++i) { - if (buffer[i].Relationship == RelationProcessorCore) - ++cores; - } - return cores; -#endif - } - - thread::native_handle_type thread::native_handle() - { - detail::thread_data_ptr local_thread_info=(get_thread_info)(); - if(!local_thread_info) - { - return detail::win32::invalid_handle_value; - } -#if BOOST_PLAT_WINDOWS_RUNTIME - // There is no 'real' Win32 handle so we return a handle that at least can be waited on. - return local_thread_info->thread_handle.waitable_handle(); -#else - return (detail::win32::handle)local_thread_info->thread_handle; -#endif - } - - detail::thread_data_ptr thread::get_thread_info BOOST_PREVENT_MACRO_SUBSTITUTION () const - { - return thread_info; - } - - namespace this_thread - { -#ifndef UNDER_CE -#if !BOOST_PLAT_WINDOWS_RUNTIME - namespace detail_ - { - typedef struct _REASON_CONTEXT { - ULONG Version; - DWORD Flags; - union { - LPWSTR SimpleReasonString; - struct { - HMODULE LocalizedReasonModule; - ULONG LocalizedReasonId; - ULONG ReasonStringCount; - LPWSTR *ReasonStrings; - } Detailed; - } Reason; - } REASON_CONTEXT, *PREASON_CONTEXT; - typedef BOOL (WINAPI *setwaitabletimerex_t)(HANDLE, const LARGE_INTEGER *, LONG, PTIMERAPCROUTINE, LPVOID, PREASON_CONTEXT, ULONG); - static inline BOOL WINAPI SetWaitableTimerEx_emulation(HANDLE hTimer, const LARGE_INTEGER *lpDueTime, LONG lPeriod, PTIMERAPCROUTINE pfnCompletionRoutine, LPVOID lpArgToCompletionRoutine, PREASON_CONTEXT WakeContext, ULONG TolerableDelay) - { - return SetWaitableTimer(hTimer, lpDueTime, lPeriod, pfnCompletionRoutine, lpArgToCompletionRoutine, FALSE); - } -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 6387) // MSVC sanitiser warns that GetModuleHandleA() might fail -#endif - static inline setwaitabletimerex_t SetWaitableTimerEx() - { - static setwaitabletimerex_t setwaitabletimerex_impl; - if(setwaitabletimerex_impl) - return setwaitabletimerex_impl; - void (*addr)()=(void (*)()) GetProcAddress( -#if !defined(BOOST_NO_ANSI_APIS) - GetModuleHandleA("KERNEL32.DLL"), -#else - GetModuleHandleW(L"KERNEL32.DLL"), -#endif - "SetWaitableTimerEx"); - if(addr) - setwaitabletimerex_impl=(setwaitabletimerex_t) addr; - else - setwaitabletimerex_impl=&SetWaitableTimerEx_emulation; - return setwaitabletimerex_impl; - } -#ifdef _MSC_VER -#pragma warning(pop) -#endif - } -#endif -#endif - bool interruptible_wait(detail::win32::handle handle_to_wait_for, detail::internal_platform_timepoint const &timeout) - { - detail::win32::handle handles[4]={0}; - unsigned handle_count=0; - unsigned wait_handle_index=~0U; -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - unsigned interruption_index=~0U; -#endif - unsigned timeout_index=~0U; - if(handle_to_wait_for!=detail::win32::invalid_handle_value) - { - wait_handle_index=handle_count; - handles[handle_count++]=handle_to_wait_for; - } -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - if(detail::get_current_thread_data() && detail::get_current_thread_data()->interruption_enabled) - { - interruption_index=handle_count; - handles[handle_count++]=detail::get_current_thread_data()->interruption_handle; - } -#endif - detail::win32::handle_manager timer_handle; - -#ifndef UNDER_CE -#if !BOOST_PLAT_WINDOWS_RUNTIME - // Preferentially use coalescing timers for better power consumption and timer accuracy - if(timeout != detail::internal_platform_timepoint::getMax()) - { - boost::intmax_t const time_left_msec = (timeout - detail::internal_platform_clock::now()).getMs(); - timer_handle=CreateWaitableTimer(NULL,false,NULL); - if(timer_handle!=0) - { - ULONG tolerable=32; // Empirical testing shows Windows ignores this when <= 26 - if(time_left_msec/20>tolerable) // 5% - tolerable=static_cast<ULONG>(time_left_msec/20); - LARGE_INTEGER due_time={{0,0}}; - if(time_left_msec>0) - { - due_time.QuadPart=-(time_left_msec*10000); // negative indicates relative time - } - bool const set_time_succeeded=detail_::SetWaitableTimerEx()(timer_handle,&due_time,0,0,0,NULL,tolerable)!=0; - if(set_time_succeeded) - { - timeout_index=handle_count; - handles[handle_count++]=timer_handle; - } - } - } -#endif -#endif - - bool const using_timer=timeout_index!=~0u; - boost::intmax_t time_left_msec(INFINITE); - if(!using_timer && timeout != detail::internal_platform_timepoint::getMax()) - { - time_left_msec = (timeout - detail::internal_platform_clock::now()).getMs(); - if(time_left_msec < 0) - { - time_left_msec = 0; - } - } - - do - { - if(handle_count) - { - unsigned long const notified_index=winapi::WaitForMultipleObjectsEx(handle_count,handles,false,static_cast<DWORD>(time_left_msec), 0); - if(notified_index<handle_count) - { - if(notified_index==wait_handle_index) - { - return true; - } -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - else if(notified_index==interruption_index) - { - winapi::ResetEvent(detail::get_current_thread_data()->interruption_handle); - throw thread_interrupted(); - } -#endif - else if(notified_index==timeout_index) - { - return false; - } - } - } - else - { - detail::win32::sleep(static_cast<unsigned long>(time_left_msec)); - } - - if(!using_timer && timeout != detail::internal_platform_timepoint::getMax()) - { - time_left_msec = (timeout - detail::internal_platform_clock::now()).getMs(); - } - } - while(time_left_msec == INFINITE || time_left_msec > 0); - return false; - } - - namespace no_interruption_point - { - bool non_interruptible_wait(detail::win32::handle handle_to_wait_for, detail::internal_platform_timepoint const &timeout) - { - detail::win32::handle handles[3]={0}; - unsigned handle_count=0; - unsigned wait_handle_index=~0U; - unsigned timeout_index=~0U; - if(handle_to_wait_for!=detail::win32::invalid_handle_value) - { - wait_handle_index=handle_count; - handles[handle_count++]=handle_to_wait_for; - } - detail::win32::handle_manager timer_handle; - -#ifndef UNDER_CE -#if !BOOST_PLAT_WINDOWS_RUNTIME - // Preferentially use coalescing timers for better power consumption and timer accuracy - if(timeout != detail::internal_platform_timepoint::getMax()) - { - boost::intmax_t const time_left_msec = (timeout - detail::internal_platform_clock::now()).getMs(); - timer_handle=CreateWaitableTimer(NULL,false,NULL); - if(timer_handle!=0) - { - ULONG tolerable=32; // Empirical testing shows Windows ignores this when <= 26 - if(time_left_msec/20>tolerable) // 5% - tolerable=static_cast<ULONG>(time_left_msec/20); - LARGE_INTEGER due_time={{0,0}}; - if(time_left_msec>0) - { - due_time.QuadPart=-(time_left_msec*10000); // negative indicates relative time - } - bool const set_time_succeeded=detail_::SetWaitableTimerEx()(timer_handle,&due_time,0,0,0,NULL,tolerable)!=0; - if(set_time_succeeded) - { - timeout_index=handle_count; - handles[handle_count++]=timer_handle; - } - } - } -#endif -#endif - - bool const using_timer=timeout_index!=~0u; - boost::intmax_t time_left_msec(INFINITE); - if(!using_timer && timeout != detail::internal_platform_timepoint::getMax()) - { - time_left_msec = (timeout - detail::internal_platform_clock::now()).getMs(); - if(time_left_msec < 0) - { - time_left_msec = 0; - } - } - - do - { - if(handle_count) - { - unsigned long const notified_index=winapi::WaitForMultipleObjectsEx(handle_count,handles,false,static_cast<DWORD>(time_left_msec), 0); - if(notified_index<handle_count) - { - if(notified_index==wait_handle_index) - { - return true; - } - else if(notified_index==timeout_index) - { - return false; - } - } - } - else - { - detail::win32::sleep(static_cast<unsigned long>(time_left_msec)); - } - - if(!using_timer && timeout != detail::internal_platform_timepoint::getMax()) - { - time_left_msec = (timeout - detail::internal_platform_clock::now()).getMs(); - } - } - while(time_left_msec == INFINITE || time_left_msec > 0); - return false; - } - } - - thread::id get_id() BOOST_NOEXCEPT - { -#if defined BOOST_THREAD_PROVIDES_BASIC_THREAD_ID -#if BOOST_PLAT_WINDOWS_RUNTIME - detail::thread_data_base* current_thread_data(detail::get_current_thread_data()); - if (current_thread_data) - { - return current_thread_data->id; - } -#endif - return winapi::GetCurrentThreadId(); -#else - return thread::id(get_or_make_current_thread_data()); -#endif - } - -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - void interruption_point() - { - if(interruption_enabled() && interruption_requested()) - { - winapi::ResetEvent(detail::get_current_thread_data()->interruption_handle); - throw thread_interrupted(); - } - } - - bool interruption_enabled() BOOST_NOEXCEPT - { - return detail::get_current_thread_data() && detail::get_current_thread_data()->interruption_enabled; - } - - bool interruption_requested() BOOST_NOEXCEPT - { - return detail::get_current_thread_data() && (winapi::WaitForSingleObjectEx(detail::get_current_thread_data()->interruption_handle,0,0)==0); - } -#endif - - void yield() BOOST_NOEXCEPT - { - detail::win32::sleep(0); - } - -#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS - disable_interruption::disable_interruption() BOOST_NOEXCEPT: - interruption_was_enabled(interruption_enabled()) - { - if(interruption_was_enabled) - { - detail::get_current_thread_data()->interruption_enabled=false; - } - } - - disable_interruption::~disable_interruption() BOOST_NOEXCEPT - { - if(detail::get_current_thread_data()) - { - detail::get_current_thread_data()->interruption_enabled=interruption_was_enabled; - } - } - - restore_interruption::restore_interruption(disable_interruption& d) BOOST_NOEXCEPT - { - if(d.interruption_was_enabled) - { - detail::get_current_thread_data()->interruption_enabled=true; - } - } - - restore_interruption::~restore_interruption() BOOST_NOEXCEPT - { - if(detail::get_current_thread_data()) - { - detail::get_current_thread_data()->interruption_enabled=false; - } - } -#endif - } - - namespace detail - { - void add_thread_exit_function(thread_exit_function_base* func) - { - detail::thread_data_base* const current_thread_data(get_or_make_current_thread_data()); - thread_exit_callback_node* const new_node= - heap_new<thread_exit_callback_node>( - func,current_thread_data->thread_exit_callbacks); - current_thread_data->thread_exit_callbacks=new_node; - } - - tss_data_node* find_tss_data(void const* key) - { - detail::thread_data_base* const current_thread_data(get_current_thread_data()); - if(current_thread_data) - { - std::map<void const*,tss_data_node>::iterator current_node= - current_thread_data->tss_data.find(key); - if(current_node!=current_thread_data->tss_data.end()) - { - return ¤t_node->second; - } - } - return NULL; - } - - void* get_tss_data(void const* key) - { - if(tss_data_node* const current_node=find_tss_data(key)) - { - return current_node->value; - } - return NULL; - } - - void add_new_tss_node(void const* key, - boost::shared_ptr<tss_cleanup_function> func, - void* tss_data) - { - detail::thread_data_base* const current_thread_data(get_or_make_current_thread_data()); - current_thread_data->tss_data.insert(std::make_pair(key,tss_data_node(func,tss_data))); - } - - void erase_tss_node(void const* key) - { - detail::thread_data_base* const current_thread_data(get_or_make_current_thread_data()); - current_thread_data->tss_data.erase(key); - } - - void set_tss_data(void const* key, - boost::shared_ptr<tss_cleanup_function> func, - void* tss_data,bool cleanup_existing) - { - if(tss_data_node* const current_node=find_tss_data(key)) - { - if(cleanup_existing && current_node->func && (current_node->value!=0)) - { - (*current_node->func)(current_node->value); - } - if(func || (tss_data!=0)) - { - current_node->func=func; - current_node->value=tss_data; - } - else - { - erase_tss_node(key); - } - } - else if(func || (tss_data!=0)) - { - add_new_tss_node(key,func,tss_data); - } - } - } - - BOOST_THREAD_DECL void __cdecl on_process_enter() - {} - - BOOST_THREAD_DECL void __cdecl on_thread_enter() - {} - - BOOST_THREAD_DECL void __cdecl on_process_exit() - { - boost::cleanup_tls_key(); - } - - BOOST_THREAD_DECL void __cdecl on_thread_exit() - { - boost::run_thread_exit_callbacks(); - } - - BOOST_THREAD_DECL void notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk) - { - detail::thread_data_base* const current_thread_data(detail::get_current_thread_data()); - if(current_thread_data) - { - current_thread_data->notify_all_at_thread_exit(&cond, lk.release()); - } - } -} - diff --git a/contrib/restricted/boost/libs/thread/src/win32/thread_primitives.cpp b/contrib/restricted/boost/libs/thread/src/win32/thread_primitives.cpp deleted file mode 100644 index f51f621508..0000000000 --- a/contrib/restricted/boost/libs/thread/src/win32/thread_primitives.cpp +++ /dev/null @@ -1,140 +0,0 @@ -// thread_primitives.cpp -// -// (C) Copyright 2018 Andrey Semashev -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/winapi/config.hpp> -#include <boost/winapi/dll.hpp> -#include <boost/winapi/time.hpp> -#include <boost/winapi/event.hpp> -#include <boost/winapi/handles.hpp> -#include <boost/winapi/thread_pool.hpp> -#include <cstdlib> -#include <boost/config.hpp> -#include <boost/cstdint.hpp> -#include <boost/memory_order.hpp> -#include <boost/atomic/atomic.hpp> -#include <boost/thread/win32/interlocked_read.hpp> -#include <boost/thread/win32/thread_primitives.hpp> - -namespace boost { -namespace detail { -namespace win32 { - -#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - -// Directly use API from Vista and later -BOOST_THREAD_DECL boost::detail::win32::detail::gettickcount64_t gettickcount64 = &::boost::winapi::GetTickCount64; - -#else // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - -namespace { - -enum init_state -{ - uninitialized = 0, - in_progress, - initialized -}; - -struct get_tick_count64_state -{ - boost::atomic< uint64_t > ticks; - boost::atomic< init_state > init; - boost::winapi::HANDLE_ wait_event; - boost::winapi::HANDLE_ wait_handle; -}; - -// Zero-initialized initially -BOOST_ALIGNMENT(64) static get_tick_count64_state g_state; - -//! Artifical implementation of GetTickCount64 -ticks_type WINAPI get_tick_count64() -{ - uint64_t old_state = g_state.ticks.load(boost::memory_order_acquire); - - uint32_t new_ticks = boost::winapi::GetTickCount(); - - uint32_t old_ticks = static_cast< uint32_t >(old_state & UINT64_C(0x00000000ffffffff)); - uint64_t new_state = ((old_state & UINT64_C(0xffffffff00000000)) + (static_cast< uint64_t >(new_ticks < old_ticks) << 32)) | static_cast< uint64_t >(new_ticks); - - g_state.ticks.store(new_state, boost::memory_order_release); - - return new_state; -} - -//! The function is called periodically in the system thread pool to make sure g_state.ticks is timely updated -void NTAPI refresh_get_tick_count64(boost::winapi::PVOID_, boost::winapi::BOOLEAN_) -{ - get_tick_count64(); -} - -//! Cleanup function to stop get_tick_count64 refreshes -void cleanup_get_tick_count64() -{ - if (g_state.wait_handle) - { - boost::winapi::UnregisterWait(g_state.wait_handle); - g_state.wait_handle = NULL; - } - - if (g_state.wait_event) - { - boost::winapi::CloseHandle(g_state.wait_event); - g_state.wait_event = NULL; - } -} - -ticks_type WINAPI get_tick_count_init() -{ - boost::winapi::HMODULE_ hKernel32 = boost::winapi::GetModuleHandleW(L"kernel32.dll"); - if (hKernel32) - { - boost::detail::win32::detail::gettickcount64_t p = - (boost::detail::win32::detail::gettickcount64_t)boost::winapi::get_proc_address(hKernel32, "GetTickCount64"); - if (p) - { - // Use native API - boost::detail::interlocked_write_release((void**)&gettickcount64, (void*)p); - return p(); - } - } - - // No native API available. Use emulation with periodic refreshes to make sure the GetTickCount wrap arounds are properly counted. - init_state old_init = uninitialized; - if (g_state.init.compare_exchange_strong(old_init, in_progress, boost::memory_order_acq_rel, boost::memory_order_relaxed)) - { - if (!g_state.wait_event) - g_state.wait_event = boost::winapi::create_anonymous_event(NULL, false, false); - if (g_state.wait_event) - { - boost::winapi::BOOL_ res = boost::winapi::RegisterWaitForSingleObject(&g_state.wait_handle, g_state.wait_event, &refresh_get_tick_count64, NULL, 0x7fffffff, boost::winapi::WT_EXECUTEINWAITTHREAD_); - if (res) - { - std::atexit(&cleanup_get_tick_count64); - - boost::detail::interlocked_write_release((void**)&gettickcount64, (void*)&get_tick_count64); - g_state.init.store(initialized, boost::memory_order_release); - goto finish; - } - } - - g_state.init.store(uninitialized, boost::memory_order_release); - } - -finish: - return get_tick_count64(); -} - -} // namespace - -BOOST_THREAD_DECL boost::detail::win32::detail::gettickcount64_t gettickcount64 = &get_tick_count_init; - -#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 - -} // namespace win32 -} // namespace detail -} // namespace boost diff --git a/contrib/restricted/boost/libs/thread/src/win32/tss_dll.cpp b/contrib/restricted/boost/libs/thread/src/win32/tss_dll.cpp deleted file mode 100644 index 75ea93a5aa..0000000000 --- a/contrib/restricted/boost/libs/thread/src/win32/tss_dll.cpp +++ /dev/null @@ -1,85 +0,0 @@ -// (C) Copyright Michael Glassford 2004. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/winapi/config.hpp> -#include <boost/thread/detail/config.hpp> - - -#if defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL) - - #include <boost/thread/detail/tss_hooks.hpp> - - #include <windows.h> - - #if defined(__BORLANDC__) - extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/) - #elif defined(_WIN32_WCE) - extern "C" BOOL WINAPI DllMain(HANDLE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/) - #else - extern "C" BOOL WINAPI DllMain(HINSTANCE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/) - #endif - { - switch(dwReason) - { - case DLL_PROCESS_ATTACH: - { - boost::on_process_enter(); - boost::on_thread_enter(); - break; - } - - case DLL_THREAD_ATTACH: - { - boost::on_thread_enter(); - break; - } - - case DLL_THREAD_DETACH: - { - boost::on_thread_exit(); - break; - } - - case DLL_PROCESS_DETACH: - { - boost::on_thread_exit(); - boost::on_process_exit(); - break; - } - } - - return TRUE; - } - -namespace boost -{ - void tss_cleanup_implemented() - { - /* - This function's sole purpose is to cause a link error in cases where - automatic tss cleanup is not implemented by Boost.Threads as a - reminder that user code is responsible for calling the necessary - functions at the appropriate times (and for implementing an a - tss_cleanup_implemented() function to eliminate the linker's - missing symbol error). - - If Boost.Threads later implements automatic tss cleanup in cases - where it currently doesn't (which is the plan), the duplicate - symbol error will warn the user that their custom solution is no - longer needed and can be removed. - */ - } -} - -#else //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL) - -#ifdef _MSC_VER -// Prevent LNK4221 warning with link=static -namespace boost { namespace link_static_warning_inhibit { - extern __declspec(dllexport) void foo() { } -} } -#endif - -#endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL) diff --git a/contrib/restricted/boost/libs/thread/src/win32/tss_pe.cpp b/contrib/restricted/boost/libs/thread/src/win32/tss_pe.cpp deleted file mode 100644 index e4a0a3aaa3..0000000000 --- a/contrib/restricted/boost/libs/thread/src/win32/tss_pe.cpp +++ /dev/null @@ -1,337 +0,0 @@ -// $Id$ -// (C) Copyright Aaron W. LaFramboise, Roland Schwarz, Michael Glassford 2004. -// (C) Copyright 2007 Roland Schwarz -// (C) Copyright 2007 Anthony Williams -// (C) Copyright 2007 David Deakins -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/winapi/config.hpp> -#include <boost/thread/detail/config.hpp> - -#if defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB) - -#if (defined(__MINGW32__) && !defined(_WIN64)) || defined(__MINGW64__) || (__MINGW64_VERSION_MAJOR) - -#include <boost/thread/detail/tss_hooks.hpp> - -#include <windows.h> - -#include <cstdlib> - -namespace boost -{ - void tss_cleanup_implemented() {} -} - -namespace { - void NTAPI on_tls_callback(void* , DWORD dwReason, PVOID ) - { - switch (dwReason) - { - case DLL_THREAD_DETACH: - { - boost::on_thread_exit(); - break; - } - } - } -} - -#if defined(__MINGW64__) || (__MINGW64_VERSION_MAJOR) || (__MINGW32__) || (__MINGW32_MAJOR_VERSION >3) || \ - ((__MINGW32_MAJOR_VERSION==3) && (__MINGW32_MINOR_VERSION>=18)) -extern "C" -{ - PIMAGE_TLS_CALLBACK __crt_xl_tls_callback__ __attribute__ ((section(".CRT$XLB"))) = on_tls_callback; -} -#else -extern "C" { - - void (* after_ctors )() __attribute__((section(".ctors"))) = boost::on_process_enter; - void (* before_dtors)() __attribute__((section(".dtors"))) = boost::on_thread_exit; - void (* after_dtors )() __attribute__((section(".dtors.zzz"))) = boost::on_process_exit; - - ULONG __tls_index__ = 0; - char __tls_end__ __attribute__((section(".tls$zzz"))) = 0; - char __tls_start__ __attribute__((section(".tls"))) = 0; - - - PIMAGE_TLS_CALLBACK __crt_xl_start__ __attribute__ ((section(".CRT$XLA"))) = 0; - PIMAGE_TLS_CALLBACK __crt_xl_end__ __attribute__ ((section(".CRT$XLZ"))) = 0; -} -extern "C" const IMAGE_TLS_DIRECTORY32 _tls_used __attribute__ ((section(".rdata$T"))) = -{ - (DWORD) &__tls_start__, - (DWORD) &__tls_end__, - (DWORD) &__tls_index__, - (DWORD) (&__crt_xl_start__+1), - (DWORD) 0, - (DWORD) 0 -}; -#endif - - -#elif defined(_MSC_VER) && !defined(UNDER_CE) - - #include <boost/thread/detail/tss_hooks.hpp> - - #include <stdlib.h> - - #include <windows.h> - - -// _pRawDllMainOrig can be defined by including boost/thread/win32/mfc_thread_init.hpp -// into your dll; it ensures that MFC-Dll-initialization will be done properly -// The following code is adapted from the MFC-Dll-init code -/* - * _pRawDllMainOrig MUST be an extern const variable, which will be aliased to - * _pDefaultRawDllMainOrig if no real user definition is present, thanks to the - * alternatename directive. - */ - -// work at least with _MSC_VER 1500 (MSVC++ 9.0, VS 2008) -#if (_MSC_VER >= 1500) - -extern "C" { -extern BOOL (WINAPI * const _pRawDllMainOrig)(HINSTANCE, DWORD, LPVOID); -extern BOOL (WINAPI * const _pDefaultRawDllMainOrig)(HINSTANCE, DWORD, LPVOID) = NULL; -#if defined (_M_IX86) -#pragma comment(linker, "/alternatename:__pRawDllMainOrig=__pDefaultRawDllMainOrig") -#elif defined (_M_X64) || defined (_M_ARM) -#pragma comment(linker, "/alternatename:_pRawDllMainOrig=_pDefaultRawDllMainOrig") -#else /* defined (_M_X64) || defined (_M_ARM) */ -#error Unsupported platform -#endif /* defined (_M_X64) || defined (_M_ARM) */ -} - -#endif - - - - - //Definitions required by implementation - #if (_MSC_VER < 1300) || ((_MSC_VER > 1900) && (_MSC_VER < 1910)) // 1300 == VC++ 7.0, 1900 == VC++ 14.0, 1910 == VC++ 2017 - typedef void ( __cdecl *_PVFV_ )(); - typedef void ( __cdecl *_PIFV_ )(); - #define INIRETSUCCESS_V - #define INIRETSUCCESS_I - #define PVAPI_V void __cdecl - #define PVAPI_I void __cdecl - #elif (_MSC_VER >= 1910) - typedef void ( __cdecl *_PVFV_ )(); - typedef int ( __cdecl *_PIFV_ )(); - #define INIRETSUCCESS_V - #define INIRETSUCCESS_I 0 - #define PVAPI_V void __cdecl - #define PVAPI_I int __cdecl - #else - typedef int ( __cdecl *_PVFV_ )(); - typedef int ( __cdecl *_PIFV_ )(); - #define INIRETSUCCESS_V 0 - #define INIRETSUCCESS_I 0 - #define PVAPI_V int __cdecl - #define PVAPI_I int __cdecl - #endif - - typedef void (NTAPI* _TLSCB)(HINSTANCE, DWORD, PVOID); - - //Symbols for connection to the runtime environment - - extern "C" - { - extern DWORD _tls_used; //the tls directory (located in .rdata segment) - extern _TLSCB __xl_a[], __xl_z[]; //tls initializers */ - } - - namespace - { - //Forward declarations - - static PVAPI_I on_tls_prepare(); - static PVAPI_V on_process_init(); - static PVAPI_V on_process_term(); - static void NTAPI on_tls_callback(HINSTANCE, DWORD, PVOID); - - //The .CRT$Xxx information is taken from Codeguru: - //http://www.codeguru.com/Cpp/misc/misc/threadsprocesses/article.php/c6945__2/ - -#if (_MSC_VER >= 1400) -#pragma section(".CRT$XIU",long,read) -#pragma section(".CRT$XCU",long,read) -#pragma section(".CRT$XTU",long,read) -#pragma section(".CRT$XLC",long,read) - __declspec(allocate(".CRT$XLC")) _TLSCB __xl_ca=on_tls_callback; - __declspec(allocate(".CRT$XIU"))_PIFV_ p_tls_prepare = on_tls_prepare; - __declspec(allocate(".CRT$XCU"))_PVFV_ p_process_init = on_process_init; - __declspec(allocate(".CRT$XTU"))_PVFV_ p_process_term = on_process_term; -#else - #if (_MSC_VER >= 1300) // 1300 == VC++ 7.0 - # pragma data_seg(push, old_seg) - #endif - //Callback to run tls glue code first. - //I don't think it is necessary to run it - //at .CRT$XIB level, since we are only - //interested in thread detachement. But - //this could be changed easily if required. - - #pragma data_seg(".CRT$XIU") - static _PIFV_ p_tls_prepare = on_tls_prepare; - #pragma data_seg() - - //Callback after all global ctors. - - #pragma data_seg(".CRT$XCU") - static _PVFV_ p_process_init = on_process_init; - #pragma data_seg() - - //Callback for tls notifications. - - #pragma data_seg(".CRT$XLB") - _TLSCB p_thread_callback = on_tls_callback; - #pragma data_seg() - //Callback for termination. - - #pragma data_seg(".CRT$XTU") - static _PVFV_ p_process_term = on_process_term; - #pragma data_seg() - #if (_MSC_VER >= 1300) // 1300 == VC++ 7.0 - # pragma data_seg(pop, old_seg) - #endif -#endif - -#ifdef BOOST_MSVC -#pragma warning(push) -#pragma warning(disable:4189) -#endif - - PVAPI_I on_tls_prepare() - { - //The following line has an important side effect: - //if the TLS directory is not already there, it will - //be created by the linker. In other words, it forces a tls - //directory to be generated by the linker even when static tls - //(i.e. __declspec(thread)) is not used. - //The volatile should prevent the optimizer - //from removing the reference. - - DWORD volatile dw = _tls_used; - - #if (_MSC_VER < 1300) // 1300 == VC++ 7.0 - _TLSCB* pfbegin = __xl_a; - _TLSCB* pfend = __xl_z; - _TLSCB* pfdst = pfbegin; - //pfdst = (_TLSCB*)_tls_used.AddressOfCallBacks; - - //The following loop will merge the address pointers - //into a contiguous area, since the tlssup code seems - //to require this (at least on MSVC 6) - - while (pfbegin < pfend) - { - if (*pfbegin != 0) - { - *pfdst = *pfbegin; - ++pfdst; - } - ++pfbegin; - } - - *pfdst = 0; - #endif - - return INIRETSUCCESS_I; - } -#ifdef BOOST_MSVC -#pragma warning(pop) -#endif - - PVAPI_V on_process_init() - { - //Schedule on_thread_exit() to be called for the main - //thread before destructors of global objects have been - //called. - - //It will not be run when 'quick' exiting the - //library; however, this is the standard behaviour - //for destructors of global objects, so that - //shouldn't be a problem. - - atexit(boost::on_thread_exit); - - //Call Boost process entry callback here - - boost::on_process_enter(); - - return INIRETSUCCESS_V; - } - - PVAPI_V on_process_term() - { - boost::on_process_exit(); - return INIRETSUCCESS_V; - } - - void NTAPI on_tls_callback(HINSTANCE /*h*/, DWORD dwReason, PVOID /*pv*/) - { - switch (dwReason) - { - case DLL_THREAD_DETACH: - boost::on_thread_exit(); - break; - } - } - -#if (_MSC_VER >= 1500) - BOOL WINAPI dll_callback(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) -#else - BOOL WINAPI dll_callback(HINSTANCE, DWORD dwReason, LPVOID) -#endif - { - switch (dwReason) - { - case DLL_THREAD_DETACH: - boost::on_thread_exit(); - break; - case DLL_PROCESS_DETACH: - boost::on_process_exit(); - break; - } - -#if (_MSC_VER >= 1500) - if( _pRawDllMainOrig ) - { - return _pRawDllMainOrig(hInstance, dwReason, lpReserved); - } -#endif - return true; - } - } //namespace - -extern "C" -{ - extern BOOL (WINAPI * const _pRawDllMain)(HINSTANCE, DWORD, LPVOID)=&dll_callback; -} -namespace boost -{ - void tss_cleanup_implemented() - { - /* - This function's sole purpose is to cause a link error in cases where - automatic tss cleanup is not implemented by Boost.Threads as a - reminder that user code is responsible for calling the necessary - functions at the appropriate times (and for implementing an a - tss_cleanup_implemented() function to eliminate the linker's - missing symbol error). - - If Boost.Threads later implements automatic tss cleanup in cases - where it currently doesn't (which is the plan), the duplicate - symbol error will warn the user that their custom solution is no - longer needed and can be removed. - */ - } -} - -#endif //defined(_MSC_VER) && !defined(UNDER_CE) - -#endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB) diff --git a/contrib/restricted/boost/libs/timer/.yandex_meta/licenses.list.txt b/contrib/restricted/boost/libs/timer/.yandex_meta/licenses.list.txt deleted file mode 100644 index 5dee7360cb..0000000000 --- a/contrib/restricted/boost/libs/timer/.yandex_meta/licenses.list.txt +++ /dev/null @@ -1,42 +0,0 @@ -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt) - - -====================BSL-1.0==================== -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 1994-2006, 2011 - - -====================COPYRIGHT==================== -// Copyright Beman Dawes 2007, 2011 - - -====================File: LICENSE_1_0.txt==================== -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -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, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. |