commit 48b0c33bf651baaaa972e81490b3896dd332437e Author: Georg Koppen <g...@torproject.org> Date: Mon Oct 17 11:52:19 2016 +0000
Revert "Bug 13893: Make Tor Browser compatible with EMET" This reverts commit 0348263efd1cb8a9eca8737f3dc7734ef75e0966. Firefox is not ready for GCC 6 yet. See #20381 for further details. --- gitian/descriptors/windows/gitian-utils.yml | 7 - gitian/patches/gcc_62_1.patch | 23 - gitian/patches/gcc_62_2.patch | 1198 --------------------------- gitian/versions.alpha | 6 +- gitian/versions.nightly | 6 +- 5 files changed, 6 insertions(+), 1234 deletions(-) diff --git a/gitian/descriptors/windows/gitian-utils.yml b/gitian/descriptors/windows/gitian-utils.yml index d3598e2..9c31834 100644 --- a/gitian/descriptors/windows/gitian-utils.yml +++ b/gitian/descriptors/windows/gitian-utils.yml @@ -35,8 +35,6 @@ files: - "nsis.tar.bz2" - "nsis-debian.tar.xz" - "nsis-missing-unistd-include.patch" -- "gcc_62_1.patch" -- "gcc_62_2.patch" script: | INSTDIR="$HOME/install" source versions @@ -81,11 +79,6 @@ script: | mkdir gcc cd gcc tar -xjvf ../gcc.tar.bz2 - cd gcc-* - # Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77459. - patch -p1 < ~/build/gcc_62_1.patch - patch -p1 < ~/build/gcc_62_2.patch - cd .. # We don't want to link against msvcrt.dll due to bug 9084. i686-w64-mingw32-g++ -dumpspecs > ~/build/msvcr100.spec sed 's/msvcrt/msvcr100/' -i ~/build/msvcr100.spec diff --git a/gitian/patches/gcc_62_1.patch b/gitian/patches/gcc_62_1.patch deleted file mode 100644 index 7ca36d8..0000000 --- a/gitian/patches/gcc_62_1.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 1ec6206ea80ceb5df843ea0bc4ef04d9ab17257e Mon Sep 17 00:00:00 2001 -From: Georg Koppen <g...@torproject.org> -Date: Wed, 14 Sep 2016 12:53:19 +0000 -Subject: [PATCH 1/2] Revert "2015-09-17 Catherine Moore - <c...@codesourcery.com>" - -This reverts commit a63a17505346bb3a91ce3de6fe238264c4d849ac. - -diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc -index f25304c..308802e 100644 ---- a/libstdc++-v3/src/c++11/debug.cc -+++ b/libstdc++-v3/src/c++11/debug.cc -@@ -32,7 +32,6 @@ - #include <debug/safe_local_iterator.h> - - #include <cassert> --#include <cstdio> - - #include <algorithm> // for std::min - #include <functional> // for _Hash_impl --- -2.9.3 - diff --git a/gitian/patches/gcc_62_2.patch b/gitian/patches/gcc_62_2.patch deleted file mode 100644 index 7dbd826..0000000 --- a/gitian/patches/gcc_62_2.patch +++ /dev/null @@ -1,1198 +0,0 @@ -From 0fbc32fdb5e0119877b0fd608d8855af0e4e376e Mon Sep 17 00:00:00 2001 -From: Georg Koppen <g...@torproject.org> -Date: Wed, 14 Sep 2016 12:54:30 +0000 -Subject: [PATCH 2/2] =?UTF-8?q?Revert=20"2015-09-17=20=20Fran=C3=A7ois=20D?= - =?UTF-8?q?umont=20=20<fdum...@gcc.gnu.org>"?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit 426075db14da88357dd104345b5edea369f1d5c6. - -diff --git a/libstdc++-v3/include/debug/formatter.h b/libstdc++-v3/include/debug/formatter.h -index 72db612..7d4f027 100644 ---- a/libstdc++-v3/include/debug/formatter.h -+++ b/libstdc++-v3/include/debug/formatter.h -@@ -132,13 +132,6 @@ namespace __gnu_debug - - class _Error_formatter - { -- // Tags denoting the type of parameter for construction -- struct _Is_iterator { }; -- struct _Is_iterator_value_type { }; -- struct _Is_sequence { }; -- struct _Is_instance { }; -- -- public: - /// Whether an iterator is constant, mutable, or unknown - enum _Constness - { -@@ -160,6 +153,13 @@ namespace __gnu_debug - __last_state - }; - -+ // Tags denoting the type of parameter for construction -+ struct _Is_iterator { }; -+ struct _Is_iterator_value_type { }; -+ struct _Is_sequence { }; -+ struct _Is_instance { }; -+ -+ public: - // A parameter that may be referenced by an error message - struct _Parameter - { -@@ -375,16 +375,15 @@ namespace __gnu_debug - - void - _M_print_field(const _Error_formatter* __formatter, -- const char* __name) const _GLIBCXX_DEPRECATED; -+ const char* __name) const; - - void -- _M_print_description(const _Error_formatter* __formatter) -- const _GLIBCXX_DEPRECATED; -+ _M_print_description(const _Error_formatter* __formatter) const; - }; - - template<typename _Iterator> -- _Error_formatter& -- _M_iterator(const _Iterator& __it, const char* __name = 0) -+ const _Error_formatter& -+ _M_iterator(const _Iterator& __it, const char* __name = 0) const - { - if (_M_num_parameters < std::size_t(__max_parameters)) - _M_parameters[_M_num_parameters++] = _Parameter(__it, __name, -@@ -393,59 +392,57 @@ namespace __gnu_debug - } - - template<typename _Iterator> -- _Error_formatter& -+ const _Error_formatter& - _M_iterator_value_type(const _Iterator& __it, -- const char* __name = 0) -+ const char* __name = 0) const - { -- if (_M_num_parameters < __max_parameters) -+ if (_M_num_parameters < std::size_t(__max_parameters)) - _M_parameters[_M_num_parameters++] = - _Parameter(__it, __name, _Is_iterator_value_type()); - return *this; - } - -- _Error_formatter& -- _M_integer(long __value, const char* __name = 0) -+ const _Error_formatter& -+ _M_integer(long __value, const char* __name = 0) const - { -- if (_M_num_parameters < __max_parameters) -+ if (_M_num_parameters < std::size_t(__max_parameters)) - _M_parameters[_M_num_parameters++] = _Parameter(__value, __name); - return *this; - } - -- _Error_formatter& -- _M_string(const char* __value, const char* __name = 0) -+ const _Error_formatter& -+ _M_string(const char* __value, const char* __name = 0) const - { -- if (_M_num_parameters < __max_parameters) -+ if (_M_num_parameters < std::size_t(__max_parameters)) - _M_parameters[_M_num_parameters++] = _Parameter(__value, __name); - return *this; - } - - template<typename _Sequence> -- _Error_formatter& -- _M_sequence(const _Sequence& __seq, const char* __name = 0) -+ const _Error_formatter& -+ _M_sequence(const _Sequence& __seq, const char* __name = 0) const - { -- if (_M_num_parameters < __max_parameters) -+ if (_M_num_parameters < std::size_t(__max_parameters)) - _M_parameters[_M_num_parameters++] = _Parameter(__seq, __name, - _Is_sequence()); - return *this; - } - - template<typename _Type> -- _Error_formatter& -- _M_instance(const _Type& __inst, const char* __name = 0) -+ const _Error_formatter& -+ _M_instance(const _Type& __inst, const char* __name = 0) const - { -- if (_M_num_parameters < __max_parameters) -+ if (_M_num_parameters < std::size_t(__max_parameters)) - _M_parameters[_M_num_parameters++] = _Parameter(__inst, __name, - _Is_instance()); - return *this; - } - -- _Error_formatter& -- _M_message(const char* __text) -+ const _Error_formatter& -+ _M_message(const char* __text) const - { _M_text = __text; return *this; } - -- // Kept const qualifier for backward compatibility, to keep the same -- // exported symbol. -- _Error_formatter& -+ const _Error_formatter& - _M_message(_Debug_msg_id __id) const throw (); - - _GLIBCXX_NORETURN void -@@ -453,38 +450,40 @@ namespace __gnu_debug - - template<typename _Tp> - void -- _M_format_word(char*, int, const char*, _Tp) -- const throw () _GLIBCXX_DEPRECATED; -+ _M_format_word(char*, int, const char*, _Tp) const throw (); - - void -- _M_print_word(const char* __word) const _GLIBCXX_DEPRECATED; -+ _M_print_word(const char* __word) const; - - void -- _M_print_string(const char* __string) const _GLIBCXX_DEPRECATED; -+ _M_print_string(const char* __string) const; - - private: -- _Error_formatter(const char* __file, unsigned int __line) -- : _M_file(__file), _M_line(__line), _M_num_parameters(0), _M_text(0) -- { } -+ _Error_formatter(const char* __file, std::size_t __line) -+ : _M_file(__file), _M_line(__line), _M_num_parameters(0), _M_text(0), -+ _M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false) -+ { _M_get_max_length(); } - - void -- _M_get_max_length() const throw () _GLIBCXX_DEPRECATED; -+ _M_get_max_length() const throw (); - - enum { __max_parameters = 9 }; - - const char* _M_file; -- unsigned int _M_line; -- _Parameter _M_parameters[__max_parameters]; -- unsigned int _M_num_parameters; -- const char* _M_text; -+ std::size_t _M_line; -+ mutable _Parameter _M_parameters[__max_parameters]; -+ mutable std::size_t _M_num_parameters; -+ mutable const char* _M_text; -+ mutable std::size_t _M_max_length; -+ enum { _M_indent = 4 } ; -+ mutable std::size_t _M_column; -+ mutable bool _M_first_line; -+ mutable bool _M_wordwrap; - - public: -- static _Error_formatter& -- _M_at(const char* __file, unsigned int __line) -- { -- static _Error_formatter __formatter(__file, __line); -- return __formatter; -- } -+ static _Error_formatter -+ _M_at(const char* __file, std::size_t __line) -+ { return _Error_formatter(__file, __line); } - }; - } // namespace __gnu_debug - -diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc -index 308802e..8f7eaa3 100644 ---- a/libstdc++-v3/src/c++11/debug.cc -+++ b/libstdc++-v3/src/c++11/debug.cc -@@ -22,19 +22,18 @@ - // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - // <http://www.gnu.org/licenses/>. - --#include <bits/move.h> --#include <bits/stl_iterator_base_types.h> -- --#include <debug/formatter.h> -+#include <debug/debug.h> - #include <debug/safe_base.h> - #include <debug/safe_unordered_base.h> - #include <debug/safe_iterator.h> - #include <debug/safe_local_iterator.h> -- -+#include <algorithm> - #include <cassert> -- --#include <algorithm> // for std::min --#include <functional> // for _Hash_impl -+#include <cstring> -+#include <cctype> -+#include <cstdio> -+#include <cstdlib> -+#include <functional> - - #include <cxxabi.h> // for __cxa_demangle - -@@ -525,123 +524,37 @@ namespace __gnu_debug - - namespace - { -- using _Error_formatter = __gnu_debug::_Error_formatter; -- using _Parameter = __gnu_debug::_Error_formatter::_Parameter; -- -- template<typename _Tp> -- int -- format_word(char* buf, int n, const char* fmt, _Tp s) -- { return std::min(__builtin_snprintf(buf, n, fmt, s), n - 1); } -- -- void -- get_max_length(std::size_t& max_length) -- { -- const char* nptr = std::getenv("GLIBCXX_DEBUG_MESSAGE_LENGTH"); -- if (nptr) -- { -- char* endptr; -- const unsigned long ret = std::strtoul(nptr, &endptr, 0); -- if (*nptr != '\0' && *endptr == '\0') -- max_length = ret; -- } -- } -- -- struct PrintContext -- { -- PrintContext() -- : _M_max_length(78), _M_column(1), _M_first_line(true), _M_wordwrap(false) -- { get_max_length(_M_max_length); } -- -- std::size_t _M_max_length; -- enum { _M_indent = 4 } ; -- std::size_t _M_column; -- bool _M_first_line; -- bool _M_wordwrap; -- }; -- -- void -- print_word(PrintContext& ctx, const char* word, -- std::ptrdiff_t count = -1) -- { -- size_t length = count >= 0 ? count : __builtin_strlen(word); -- if (length == 0) -- return; -- -- // Consider first '\n' at begining cause it impacts column. -- if (word[0] == '\n') -- { -- fprintf(stderr, "\n"); -- ctx._M_column = 1; -- ++word; -- --length; -- -- if (length == 0) -- return; -- } -- -- size_t visual_length -- = isspace(word[length - 1]) ? length - 1 : length; -- if (visual_length == 0 -- || !ctx._M_wordwrap -- || (ctx._M_column + visual_length < ctx._M_max_length) -- || (visual_length >= ctx._M_max_length && ctx._M_column == 1)) -- { -- // If this isn't the first line, indent -- if (ctx._M_column == 1 && !ctx._M_first_line) -- { -- char spacing[ctx._M_indent + 1]; -- for (int i = 0; i < ctx._M_indent; ++i) -- spacing[i] = ' '; -- spacing[ctx._M_indent] = '\0'; -- fprintf(stderr, "%s", spacing); -- ctx._M_column += ctx._M_indent; -- } -- -- int written = fprintf(stderr, "%s", word); -- -- if (word[length - 1] == '\n') -- { -- ctx._M_first_line = false; -- ctx._M_column = 1; -- } -- else -- ctx._M_column += written; -- } -- else -- { -- print_word(ctx, "\n", 1); -- print_word(ctx, word, count); -- } -- } -- - void -- print_type(PrintContext& ctx, -- const type_info* info, -- const char* unknown_name) -+ print_type(const __gnu_debug::_Error_formatter* __formatter, -+ const type_info* __info, -+ const char* __unknown_name) - { -- if (!info) -- print_word(ctx, unknown_name); -+ if (!__info) -+ __formatter->_M_print_word(__unknown_name); - else - { -- int status; -- char* demangled_name = -- __cxxabiv1::__cxa_demangle(info->name(), NULL, NULL, &status); -- print_word(ctx, status == 0 ? demangled_name : info->name()); -- free(demangled_name); -+ int __status; -+ char* __demangled_name = -+ __cxxabiv1::__cxa_demangle(__info->name(), NULL, NULL, &__status); -+ __formatter->_M_print_word(__status == 0 -+ ? __demangled_name : __info->name()); -+ free(__demangled_name); - } - } - - bool -- print_field(PrintContext& ctx, -- const char* name, const _Parameter::_Type& type) -+ print_field( -+ const __gnu_debug::_Error_formatter* __formatter, -+ const char* __name, -+ const __gnu_debug::_Error_formatter::_Parameter::_Type& __variant) - { -- if (__builtin_strcmp(name, "name") == 0) -+ if (strcmp(__name, "name") == 0) - { -- assert(type._M_name); -- print_word(ctx, type._M_name); -+ assert(__variant._M_name); -+ __formatter->_M_print_word(__variant._M_name); - } -- else if (__builtin_strcmp(name, "type") == 0) -- print_type(ctx, type._M_type, "<unknown type>"); -+ else if (strcmp(__name, "type") == 0) -+ print_type(__formatter, __variant._M_type, "<unknown type>"); - else - return false; - -@@ -649,17 +562,21 @@ namespace - } - - bool -- print_field(PrintContext& ctx, -- const char* name, const _Parameter::_Instance& inst) -+ print_field( -+ const __gnu_debug::_Error_formatter* __formatter, -+ const char* __name, -+ const __gnu_debug::_Error_formatter::_Parameter::_Instance& __variant) - { -- const _Parameter::_Type& type = inst; -- if (print_field(ctx, name, type)) -+ const __gnu_debug::_Error_formatter::_Parameter::_Type& __type = __variant; -+ if (print_field(__formatter, __name, __type)) - { } -- else if (__builtin_strcmp(name, "address") == 0) -+ else if (strcmp(__name, "address") == 0) - { -- char buf[64]; -- int ret = __builtin_sprintf(buf, "%p", inst._M_address); -- print_word(ctx, buf, ret); -+ const int __bufsize = 64; -+ char __buf[__bufsize]; -+ __formatter->_M_format_word(__buf, __bufsize, "%p", -+ __variant._M_address); -+ __formatter->_M_print_word(__buf); - } - else - return false; -@@ -668,390 +585,278 @@ namespace - } - - void -- print_field(PrintContext& ctx, const _Parameter& param, const char* name) -- { -- assert(param._M_kind != _Parameter::__unused_param); -- const int bufsize = 64; -- char buf[bufsize]; -- -- const auto& variant = param._M_variant; -- switch (param._M_kind) -- { -- case _Parameter::__iterator: -- { -- const auto& iterator = variant._M_iterator; -- if (print_field(ctx, name, iterator)) -- { } -- else if (__builtin_strcmp(name, "constness") == 0) -- { -- static const char* -- constness_names[_Error_formatter::__last_constness] = -- { -- "<unknown>", -- "constant", -- "mutable" -- }; -- print_word(ctx, constness_names[iterator._M_constness]); -- } -- else if (__builtin_strcmp(name, "state") == 0) -- { -- static const char* -- state_names[_Error_formatter::__last_state] = -- { -- "<unknown>", -- "singular", -- "dereferenceable (start-of-sequence)", -- "dereferenceable", -- "past-the-end", -- "before-begin" -- }; -- print_word(ctx, state_names[iterator._M_state]); -- } -- else if (__builtin_strcmp(name, "sequence") == 0) -- { -- assert(iterator._M_sequence); -- int written = __builtin_sprintf(buf, "%p", iterator._M_sequence); -- print_word(ctx, buf, written); -- } -- else if (__builtin_strcmp(name, "seq_type") == 0) -- print_type(ctx, iterator._M_seq_type, "<unknown seq_type>"); -- else -- assert(false); -- } -- break; -- -- case _Parameter::__sequence: -- if (!print_field(ctx, name, variant._M_sequence)) -- assert(false); -- break; -- -- case _Parameter::__integer: -- if (__builtin_strcmp(name, "name") == 0) -- { -- assert(variant._M_integer._M_name); -- print_word(ctx, variant._M_integer._M_name); -- } -- else -- assert(false); -- break; -- -- case _Parameter::__string: -- if (__builtin_strcmp(name, "name") == 0) -- { -- assert(variant._M_string._M_name); -- print_word(ctx, variant._M_string._M_name); -- } -- else -- assert(false); -- break; -- -- case _Parameter::__instance: -- if (!print_field(ctx, name, variant._M_instance)) -- assert(false); -- break; -- -- case _Parameter::__iterator_value_type: -- if (!print_field(ctx, name, variant._M_iterator_value_type)) -- assert(false); -- break; -- -- default: -- assert(false); -- break; -- } -- } -- -- void -- print_description(PrintContext& ctx, const _Parameter::_Type& type) -+ print_description( -+ const __gnu_debug::_Error_formatter* __formatter, -+ const __gnu_debug::_Error_formatter::_Parameter::_Type& __variant) - { -- if (type._M_name) -+ if (__variant._M_name) - { -- const int bufsize = 64; -- char buf[bufsize]; -- int written -- = format_word(buf, bufsize, "\"%s\"", type._M_name); -- print_word(ctx, buf, written); -+ const int __bufsize = 64; -+ char __buf[__bufsize]; -+ __formatter->_M_format_word(__buf, __bufsize, "\"%s\"", -+ __variant._M_name); -+ __formatter->_M_print_word(__buf); - } - -- print_word(ctx, " {\n"); -+ __formatter->_M_print_word(" {\n"); - -- if (type._M_type) -+ if (__variant._M_type) - { -- print_word(ctx, " type = "); -- print_type(ctx, type._M_type, "<unknown type>"); -- print_word(ctx, ";\n"); -+ __formatter->_M_print_word(" type = "); -+ print_type(__formatter, __variant._M_type, "<unknown type>"); -+ __formatter->_M_print_word(";\n"); - } - } - -+ - void -- print_description(PrintContext& ctx, const _Parameter::_Instance& inst) -+ print_description( -+ const __gnu_debug::_Error_formatter* __formatter, -+ const __gnu_debug::_Error_formatter::_Parameter::_Instance& __variant) - { -- const int bufsize = 64; -- char buf[bufsize]; -+ const int __bufsize = 64; -+ char __buf[__bufsize]; - -- if (inst._M_name) -+ if (__variant._M_name) - { -- int written -- = format_word(buf, bufsize, "\"%s\" ", inst._M_name); -- print_word(ctx, buf, written); -+ __formatter->_M_format_word(__buf, __bufsize, "\"%s\" ", -+ __variant._M_name); -+ __formatter->_M_print_word(__buf); - } - -- int written -- = __builtin_sprintf(buf, "@ 0x%p {\n", inst._M_address); -- print_word(ctx, buf, written); -+ __formatter->_M_format_word(__buf, __bufsize, "@ 0x%p {\n", -+ __variant._M_address); -+ __formatter->_M_print_word(__buf); - -- if (inst._M_type) -+ if (__variant._M_type) - { -- print_word(ctx, " type = "); -- print_type(ctx, inst._M_type, "<unknown type>"); -+ __formatter->_M_print_word(" type = "); -+ print_type(__formatter, __variant._M_type, "<unknown type>"); - } - } -+} - -+namespace __gnu_debug -+{ - void -- print_description(PrintContext& ctx, const _Parameter& param) -+ _Error_formatter::_Parameter:: -+ _M_print_field(const _Error_formatter* __formatter, const char* __name) const - { -- const int bufsize = 128; -- char buf[bufsize]; -+ assert(this->_M_kind != _Parameter::__unused_param); -+ const int __bufsize = 64; -+ char __buf[__bufsize]; - -- const auto& variant = param._M_variant; -- switch (param._M_kind) -- { -- case _Parameter::__iterator: -+ switch (_M_kind) -+ { -+ case __iterator: -+ if (print_field(__formatter, __name, _M_variant._M_iterator)) -+ { } -+ else if (strcmp(__name, "constness") == 0) - { -- const auto& ite = variant._M_iterator; -- -- print_word(ctx, "iterator "); -- print_description(ctx, ite); -- -- if (ite._M_type) -- { -- if (ite._M_constness != _Error_formatter::__unknown_constness) -- { -- print_word(ctx, " ("); -- print_field(ctx, param, "constness"); -- print_word(ctx, " iterator)"); -- } -- -- print_word(ctx, ";\n"); -- } -- -- if (ite._M_state != _Error_formatter::__unknown_state) -+ static const char* __constness_names[__last_constness] = - { -- print_word(ctx, " state = "); -- print_field(ctx, param, "state"); -- print_word(ctx, ";\n"); -- } -- -- if (ite._M_sequence) -+ "<unknown>", -+ "constant", -+ "mutable" -+ }; -+ __formatter->_M_print_word(__constness_names[_M_variant. -+ _M_iterator. -+ _M_constness]); -+ } -+ else if (strcmp(__name, "state") == 0) -+ { -+ static const char* __state_names[__last_state] = - { -- print_word(ctx, " references sequence "); -- if (ite._M_seq_type) -- { -- print_word(ctx, "with type '"); -- print_field(ctx, param, "seq_type"); -- print_word(ctx, "' "); -- } -- -- int written -- = __builtin_sprintf(buf, "@ 0x%p\n", ite._M_sequence); -- print_word(ctx, buf, written); -- } -- -- print_word(ctx, "}\n", 2); -+ "<unknown>", -+ "singular", -+ "dereferenceable (start-of-sequence)", -+ "dereferenceable", -+ "past-the-end", -+ "before-begin" -+ }; -+ __formatter->_M_print_word(__state_names[_M_variant. -+ _M_iterator._M_state]); - } -- break; -- -- case _Parameter::__sequence: -- print_word(ctx, "sequence "); -- print_description(ctx, variant._M_sequence); -- -- if (variant._M_sequence._M_type) -- print_word(ctx, ";\n", 2); -- -- print_word(ctx, "}\n", 2); -- break; -- -- case _Parameter::__instance: -- print_word(ctx, "instance "); -- print_description(ctx, variant._M_instance); -- -- if (variant._M_instance._M_type) -- print_word(ctx, ";\n", 2); -- -- print_word(ctx, "}\n", 2); -- break; -- -- case _Parameter::__iterator_value_type: -- print_word(ctx, "iterator::value_type "); -- print_description(ctx, variant._M_iterator_value_type); -- print_word(ctx, "}\n", 2); -- break; -- -- default: -- break; -- } -+ else if (strcmp(__name, "sequence") == 0) -+ { -+ assert(_M_variant._M_iterator._M_sequence); -+ __formatter->_M_format_word(__buf, __bufsize, "%p", -+ _M_variant._M_iterator._M_sequence); -+ __formatter->_M_print_word(__buf); -+ } -+ else if (strcmp(__name, "seq_type") == 0) -+ print_type(__formatter, _M_variant._M_iterator._M_seq_type, -+ "<unknown seq_type>"); -+ else -+ assert(false); -+ break; -+ case __sequence: -+ if (!print_field(__formatter, __name, _M_variant._M_sequence)) -+ assert(false); -+ break; -+ case __integer: -+ if (strcmp(__name, "name") == 0) -+ { -+ assert(_M_variant._M_integer._M_name); -+ __formatter->_M_print_word(_M_variant._M_integer._M_name); -+ } -+ else -+ assert(false); -+ break; -+ case __string: -+ if (strcmp(__name, "name") == 0) -+ { -+ assert(_M_variant._M_string._M_name); -+ __formatter->_M_print_word(_M_variant._M_string._M_name); -+ } -+ else -+ assert(false); -+ break; -+ case __instance: -+ if (!print_field(__formatter, __name, _M_variant._M_instance)) -+ assert(false); -+ break; -+ case __iterator_value_type: -+ if (!print_field(__formatter, __name, _M_variant._M_iterator_value_type)) -+ assert(false); -+ break; -+ default: -+ assert(false); -+ break; -+ } - } - - void -- print_string(PrintContext& ctx, const char* string, -- const _Parameter* parameters, std::size_t num_parameters) -+ _Error_formatter::_Parameter:: -+ _M_print_description(const _Error_formatter* __formatter) const - { -- const char* start = string; -- const int bufsize = 128; -- char buf[bufsize]; -- int bufindex = 0; -+ const int __bufsize = 128; -+ char __buf[__bufsize]; - -- while (*start) -+ switch (_M_kind) - { -- if (isspace(*start)) -- { -- buf[bufindex++] = *start++; -- buf[bufindex] = '\0'; -- print_word(ctx, buf, bufindex); -- bufindex = 0; -- continue; -- } -+ case __iterator: -+ __formatter->_M_print_word("iterator "); -+ print_description(__formatter, _M_variant._M_iterator); - -- if (*start != '%') -+ if (_M_variant._M_iterator._M_type) - { -- // Normal char. -- buf[bufindex++] = *start++; -- continue; -- } -- -- if (*++start == '%') -- { -- // Escaped '%' -- buf[bufindex++] = *start++; -- continue; -+ if (_M_variant._M_iterator._M_constness != __unknown_constness) -+ { -+ __formatter->_M_print_word(" ("); -+ _M_print_field(__formatter, "constness"); -+ __formatter->_M_print_word(" iterator)"); -+ } -+ __formatter->_M_print_word(";\n"); - } - -- // We are on a parameter property reference, we need to flush buffer -- // first. -- if (bufindex != 0) -+ if (_M_variant._M_iterator._M_state != __unknown_state) - { -- buf[bufindex] = '\0'; -- print_word(ctx, buf, bufindex); -- bufindex = 0; -+ __formatter->_M_print_word(" state = "); -+ _M_print_field(__formatter, "state"); -+ __formatter->_M_print_word(";\n"); - } - -- // Get the parameter number -- assert(*start >= '1' && *start <= '9'); -- size_t param_index = *start - '0' - 1; -- assert(param_index < num_parameters); -- const auto& param = parameters[param_index]; -- -- // '.' separates the parameter number from the field -- // name, if there is one. -- ++start; -- if (*start != '.') -+ if (_M_variant._M_iterator._M_sequence) - { -- assert(*start == ';'); -- ++start; -- if (param._M_kind == _Parameter::__integer) -+ __formatter->_M_print_word(" references sequence "); -+ if (_M_variant._M_iterator._M_seq_type) - { -- int written -- = __builtin_sprintf(buf, "%ld", -- param._M_variant._M_integer._M_value); -- print_word(ctx, buf, written); -+ __formatter->_M_print_word("with type `"); -+ _M_print_field(__formatter, "seq_type"); -+ __formatter->_M_print_word("' "); - } -- else if (param._M_kind == _Parameter::__string) -- print_string(ctx, param._M_variant._M_string._M_value, -- parameters, num_parameters); -- continue; -- } - -- // Extract the field name we want -- const int max_field_len = 16; -- char field[max_field_len]; -- int field_idx = 0; -- ++start; -- while (*start != ';') -- { -- assert(*start); -- assert(field_idx < max_field_len - 1); -- field[field_idx++] = *start++; -+ __formatter->_M_format_word(__buf, __bufsize, "@ 0x%p\n", -+ _M_variant._M_iterator._M_sequence); -+ __formatter->_M_print_word(__buf); - } -- ++start; -- field[field_idx] = '\0'; - -- print_field(ctx, param, field); -- } -+ __formatter->_M_print_word("}\n"); -+ break; -+ case __sequence: -+ __formatter->_M_print_word("sequence "); -+ print_description(__formatter, _M_variant._M_sequence); - -- // Might need to flush. -- if (bufindex) -- { -- buf[bufindex] = '\0'; -- print_word(ctx, buf, bufindex); -+ if (_M_variant._M_sequence._M_type) -+ __formatter->_M_print_word(";\n"); -+ -+ __formatter->_M_print_word("}\n"); -+ break; -+ case __instance: -+ __formatter->_M_print_word("instance "); -+ print_description(__formatter, _M_variant._M_instance); -+ -+ if (_M_variant._M_instance._M_type) -+ __formatter->_M_print_word(";\n"); -+ -+ __formatter->_M_print_word("}\n"); -+ break; -+ case __iterator_value_type: -+ __formatter->_M_print_word("iterator::value_type "); -+ print_description(__formatter, _M_variant._M_iterator_value_type); -+ __formatter->_M_print_word("}\n"); -+ break; -+ default: -+ break; - } - } --} - --namespace __gnu_debug --{ -- _Error_formatter& -+ const _Error_formatter& - _Error_formatter::_M_message(_Debug_msg_id __id) const throw () -- { -- return const_cast<_Error_formatter*>(this) -- ->_M_message(_S_debug_messages[__id]); -- } -+ { return this->_M_message(_S_debug_messages[__id]); } - - void - _Error_formatter::_M_error() const - { -- const int bufsize = 128; -- char buf[bufsize]; -+ const int __bufsize = 128; -+ char __buf[__bufsize]; - - // Emit file & line number information -- bool go_to_next_line = false; -- PrintContext ctx; -+ _M_column = 1; -+ _M_wordwrap = false; - if (_M_file) - { -- int written = format_word(buf, bufsize, "%s:", _M_file); -- print_word(ctx, buf, written); -- go_to_next_line = true; -+ _M_format_word(__buf, __bufsize, "%s:", _M_file); -+ _M_print_word(__buf); -+ _M_column += strlen(__buf); - } - - if (_M_line > 0) - { -- int written = __builtin_sprintf(buf, "%u:", _M_line); -- print_word(ctx, buf, written); -- go_to_next_line = true; -+ _M_format_word(__buf, __bufsize, "%u:", _M_line); -+ _M_print_word(__buf); -+ _M_column += strlen(__buf); - } - -- if (go_to_next_line) -- print_word(ctx, "\n", 1); -- -- if (ctx._M_max_length) -- ctx._M_wordwrap = true; -- -- print_word(ctx, "Error: "); -+ if (_M_max_length) -+ _M_wordwrap = true; -+ _M_print_word("error: "); - - // Print the error message - assert(_M_text); -- print_string(ctx, _M_text, _M_parameters, _M_num_parameters); -- print_word(ctx, ".\n", 2); -+ _M_print_string(_M_text); -+ _M_print_word(".\n"); - - // Emit descriptions of the objects involved in the operation -- ctx._M_first_line = true; -- ctx._M_wordwrap = false; -- bool has_header = false; -- for (unsigned int i = 0; i < _M_num_parameters; ++i) -+ _M_wordwrap = false; -+ bool __has_noninteger_parameters = false; -+ for (unsigned int __i = 0; __i < _M_num_parameters; ++__i) - { -- switch (_M_parameters[i]._M_kind) -+ switch (_M_parameters[__i]._M_kind) - { - case _Parameter::__iterator: - case _Parameter::__sequence: - case _Parameter::__instance: - case _Parameter::__iterator_value_type: -- if (!has_header) -+ if (!__has_noninteger_parameters) - { -- print_word(ctx, "\nObjects involved in the operation:\n"); -- has_header = true; -+ _M_first_line = true; -+ _M_print_word("\nObjects involved in the operation:\n"); -+ __has_noninteger_parameters = true; - } -- print_description(ctx, _M_parameters[i]); -+ _M_parameters[__i]._M_print_description(this); - break; -- - default: - break; - } -@@ -1060,39 +865,172 @@ namespace __gnu_debug - abort(); - } - -- // Deprecated methods kept for backward compatibility. -- void -- _Error_formatter::_Parameter::_M_print_field( -- const _Error_formatter*, const char*) const -- { } -- -- void -- _Error_formatter::_Parameter::_M_print_description(const _Error_formatter*) const -- { } -- - template<typename _Tp> - void -- _Error_formatter::_M_format_word(char*, int, const char*, _Tp) -- const throw () -- { } -+ _Error_formatter::_M_format_word(char* __buf, -+ int __n __attribute__ ((__unused__)), -+ const char* __fmt, _Tp __s) const throw () -+ { -+#ifdef _GLIBCXX_USE_C99 -+ std::snprintf(__buf, __n, __fmt, __s); -+#else -+ std::sprintf(__buf, __fmt, __s); -+#endif -+ } - - void -- _Error_formatter::_M_print_word(const char*) const -- { } -+ _Error_formatter::_M_print_word(const char* __word) const -+ { -+ if (!_M_wordwrap) -+ { -+ fprintf(stderr, "%s", __word); -+ return; -+ } -+ -+ size_t __length = strlen(__word); -+ if (__length == 0) -+ return; -+ -+ size_t __visual_length -+ = __word[__length - 1] == '\n' ? __length - 1 : __length; -+ if (__visual_length == 0 -+ || (_M_column + __visual_length < _M_max_length) -+ || (__visual_length >= _M_max_length && _M_column == 1)) -+ { -+ // If this isn't the first line, indent -+ if (_M_column == 1 && !_M_first_line) -+ { -+ char __spacing[_M_indent + 1]; -+ for (int i = 0; i < _M_indent; ++i) -+ __spacing[i] = ' '; -+ __spacing[_M_indent] = '\0'; -+ fprintf(stderr, "%s", __spacing); -+ _M_column += _M_indent; -+ } -+ -+ fprintf(stderr, "%s", __word); -+ -+ if (__word[__length - 1] == '\n') -+ { -+ _M_first_line = false; -+ _M_column = 1; -+ } -+ else -+ _M_column += __length; -+ } -+ else -+ { -+ _M_print_word("\n"); -+ _M_print_word(__word); -+ } -+ } - - void -- _Error_formatter::_M_print_string(const char*) const -- { } -+ _Error_formatter:: -+ _M_print_string(const char* __string) const -+ { -+ const char* __start = __string; -+ const char* __finish = __start; -+ const int __bufsize = 128; -+ char __buf[__bufsize]; -+ -+ while (*__start) -+ { -+ if (*__start != '%') -+ { -+ // [__start, __finish) denotes the next word -+ __finish = __start; -+ while (isalnum(*__finish)) -+ ++__finish; -+ if (__start == __finish) -+ ++__finish; -+ if (isspace(*__finish)) -+ ++__finish; -+ -+ const ptrdiff_t __len = __finish - __start; -+ assert(__len < __bufsize); -+ memcpy(__buf, __start, __len); -+ __buf[__len] = '\0'; -+ _M_print_word(__buf); -+ __start = __finish; -+ -+ // Skip extra whitespace -+ while (*__start == ' ') -+ ++__start; -+ -+ continue; -+ } -+ -+ ++__start; -+ assert(*__start); -+ if (*__start == '%') -+ { -+ _M_print_word("%"); -+ ++__start; -+ continue; -+ } -+ -+ // Get the parameter number -+ assert(*__start >= '1' && *__start <= '9'); -+ size_t __param_index = *__start - '0' - 1; -+ assert(__param_index < _M_num_parameters); -+ const auto& __param = _M_parameters[__param_index]; -+ -+ // '.' separates the parameter number from the field -+ // name, if there is one. -+ ++__start; -+ if (*__start != '.') -+ { -+ assert(*__start == ';'); -+ ++__start; -+ __buf[0] = '\0'; -+ if (__param._M_kind == _Parameter::__integer) -+ { -+ _M_format_word(__buf, __bufsize, "%ld", -+ __param._M_variant._M_integer._M_value); -+ _M_print_word(__buf); -+ } -+ else if (__param._M_kind == _Parameter::__string) -+ _M_print_string(__param._M_variant._M_string._M_value); -+ continue; -+ } -+ -+ // Extract the field name we want -+ enum { __max_field_len = 16 }; -+ char __field[__max_field_len]; -+ int __field_idx = 0; -+ ++__start; -+ while (*__start != ';') -+ { -+ assert(*__start); -+ assert(__field_idx < __max_field_len-1); -+ __field[__field_idx++] = *__start++; -+ } -+ ++__start; -+ __field[__field_idx] = 0; -+ -+ __param._M_print_field(this, __field); -+ } -+ } - - void - _Error_formatter::_M_get_max_length() const throw () -- { } -+ { -+ const char* __nptr = std::getenv("GLIBCXX_DEBUG_MESSAGE_LENGTH"); -+ if (__nptr) -+ { -+ char* __endptr; -+ const unsigned long __ret = std::strtoul(__nptr, &__endptr, 0); -+ if (*__nptr != '\0' && *__endptr == '\0') -+ _M_max_length = __ret; -+ } -+ } - - // Instantiations. - template - void - _Error_formatter::_M_format_word(char*, int, const char*, -- const void*) const; -+ const void*) const; - - template - void -@@ -1101,10 +1039,10 @@ namespace __gnu_debug - template - void - _Error_formatter::_M_format_word(char*, int, const char*, -- std::size_t) const; -+ std::size_t) const; - - template - void - _Error_formatter::_M_format_word(char*, int, const char*, -- const char*) const; -+ const char*) const; - } // namespace __gnu_debug --- -2.9.3 - diff --git a/gitian/versions.alpha b/gitian/versions.alpha index f0b32d9..898e781 100755 --- a/gitian/versions.alpha +++ b/gitian/versions.alpha @@ -25,7 +25,7 @@ LIBEVENT_TAG=release-2.0.22-stable CMAKE_TAG=v2.8.12.2 LLVM_TAG=8f188e0ea735ac9383a65a0d1c846eb790c2ec74 # r247539 CLANG_TAG=592b43b609b42cffd1531a700c140e10766bf049 # r247539 -MINGW_TAG=4e270fefffda8f8123c0d64b77a6855dc3c732b1 # fix Fx compilation +MINGW_TAG=a0cd5afeb60be3be0860e9a203314c10485bb9b8 PYPTLIB_TAG=pyptlib-0.0.6 OBFSPROXY_TAG=obfsproxy-0.2.12 LIBFTE_TAG=85ef8ae58dbf0d02ea26b627e343784b5574c428 # sketch master with fix @@ -49,7 +49,7 @@ GMP_VER=5.1.3 FIREFOX_LANG_VER=$FIREFOX_VERSION FIREFOX_LANG_BUILD=build1 BINUTILS_VER=2.24 -GCC_VER=6.2.0 +GCC_VER=5.1.0 CLANG_VER=r247539 PYTHON_VER=2.7.5 PYCRYPTO_VER=2.6.1 @@ -117,7 +117,7 @@ GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959 GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00 NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7 NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a -GCC_HASH=9944589fc722d3e66308c0ce5257788ebd7872982a718aa2516123940671b7c5 +GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8 NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5 NOTOJPFONT_HASH=3e8146c4ce0945f255cb9dbc12b392380af80bd117e0a60eae555c99c7e618da diff --git a/gitian/versions.nightly b/gitian/versions.nightly index 20c4ae4..f6dbb68 100755 --- a/gitian/versions.nightly +++ b/gitian/versions.nightly @@ -32,7 +32,7 @@ LIBEVENT_TAG=release-2.0.22-stable CMAKE_TAG=v2.8.12.2 LLVM_TAG=8f188e0ea735ac9383a65a0d1c846eb790c2ec74 # r247539 CLANG_TAG=592b43b609b42cffd1531a700c140e10766bf049 # r247539 -MINGW_TAG=4e270fefffda8f8123c0d64b77a6855dc3c732b1 # fix Fx compilation +MINGW_TAG=a0cd5afeb60be3be0860e9a203314c10485bb9b8 PYPTLIB_TAG=master OBFSPROXY_TAG=master LIBFTE_TAG=master @@ -56,7 +56,7 @@ GMP_VER=5.1.3 FIREFOX_LANG_VER=$FIREFOX_VERSION FIREFOX_LANG_BUILD=build1 BINUTILS_VER=2.24 -GCC_VER=6.2.0 +GCC_VER=5.1.0 CLANG_VER=r247539 PYTHON_VER=2.7.5 PYCRYPTO_VER=2.6.1 @@ -124,7 +124,7 @@ GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959 GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00 NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7 NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a -GCC_HASH=9944589fc722d3e66308c0ce5257788ebd7872982a718aa2516123940671b7c5 +GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8 NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5 NOTOJPFONT_HASH=3e8146c4ce0945f255cb9dbc12b392380af80bd117e0a60eae555c99c7e618da _______________________________________________ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits