diff options
author | François Dumont <fdumont@gcc.gnu.org> | 2018-05-08 19:46:59 +0000 |
---|---|---|
committer | François Dumont <fdumont@gcc.gnu.org> | 2018-05-08 19:46:59 +0000 |
commit | 90aabc7e9be942324952d8705e753ff02cf631a3 (patch) | |
tree | add19c3d5a6dd615a4bc7e3857c1086d1bdb19c4 | |
parent | a5277405c8ec3cc34a48c1498abcfc3145046477 (diff) | |
download | gcc-90aabc7e9be942324952d8705e753ff02cf631a3.zip gcc-90aabc7e9be942324952d8705e753ff02cf631a3.tar.gz gcc-90aabc7e9be942324952d8705e753ff02cf631a3.tar.bz2 |
macros.h (__glibcxx_check_valid_range_at): New.
2018-05-08 François Dumont <fdumont@gcc.gnu.org>
* include/debug/macros.h (__glibcxx_check_valid_range_at): New.
* include/debug/functions.h (__check_valid_range): Use latter.
* include/debug/macros.h (__glibcxx_check_valid_constructor_range): New,
use latter.
* include/debug/deque
(deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
* include/debug/forward_list
(forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)):
Likewise.
* include/debug/list
(list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
* include/debug/list
(list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
* include/debug/map.h
(map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
(map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
Likewise.
* include/debug/multimap.h
(multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
(multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&,
const _Alloc&)): Likewise.
* include/debug/set.h
(set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
(set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)):
Likewise.
* include/debug/multiset.h
(multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise.
(multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&,
const _Alloc&)): Likewise.
* include/debug/string
(basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)):
Likewise.
* include/debug/unordered_map
(unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)):
Likewise.
(unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter,
const _Alloc&)): Likewise.
* include/debug/unordered_set
(unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)):
Likewise.
(unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter,
const _Alloc&)): Likewise.
* include/debug/vector
(vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter.
From-SVN: r260053
-rw-r--r-- | libstdc++-v3/ChangeLog | 45 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/deque | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/forward_list | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/functions.h | 9 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/list | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/macros.h | 11 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/map.h | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/multimap.h | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/multiset.h | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/set.h | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/string | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/unordered_map | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/unordered_set | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/vector | 4 |
14 files changed, 96 insertions, 37 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 87bd39c..bf1e803 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,50 @@ 2018-05-08 François Dumont <fdumont@gcc.gnu.org> + * include/debug/macros.h (__glibcxx_check_valid_range_at): New. + * include/debug/functions.h (__check_valid_range): Use latter. + * include/debug/macros.h (__glibcxx_check_valid_constructor_range): New, + use latter. + * include/debug/deque + (deque::deque<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter. + * include/debug/forward_list + (forward_list::forward_list<_Iter>(_Iter, _Iter, const _Alloc&)): + Likewise. + * include/debug/list + (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise. + * include/debug/list + (list::list<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise. + * include/debug/map.h + (map::map<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise. + (map::map<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)): + Likewise. + * include/debug/multimap.h + (multimap::multimap<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise. + (multimap::multimap<_Iter>(_Iter, _Iter, const _Compare&, + const _Alloc&)): Likewise. + * include/debug/set.h + (set::set<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise. + (set::set<_Iter>(_Iter, _Iter, const _Compare&, const _Alloc&)): + Likewise. + * include/debug/multiset.h + (multiset::multiset<_Iter>(_Iter, _Iter, const _Alloc&)): Likewise. + (multiset::multiset<_Iter>(_Iter, _Iter, const _Compare&, + const _Alloc&)): Likewise. + * include/debug/string + (basic_string::basic_string<_Iter>(_Iter, _Iter, const _Alloc&)): + Likewise. + * include/debug/unordered_map + (unordered_map::unordered_map<_Iter>(_Iter, _Iter, const _Alloc&)): + Likewise. + (unordered_multimap::unordered_multimap<_Iter>(_Iter, _Iter, + const _Alloc&)): Likewise. + * include/debug/unordered_set + (unordered_set::unordered_set<_Iter>(_Iter, _Iter, const _Alloc&)): + Likewise. + (unordered_multiset::unordered_multiset<_Iter>(_Iter, _Iter, + const _Alloc&)): Likewise. + * include/debug/vector + (vector::vector<_Iter>(_Iter, _Iter, const _Alloc&)): Use latter. + * include/debug/formatter.h (_Error_formatter::_M_function): New. (_Error_formatter(const char*, unsigned int)): Adapt. (_Error_formatter::_M_at): Rename in... diff --git a/libstdc++-v3/include/debug/deque b/libstdc++-v3/include/debug/deque index 90110e7..93b82cf 100644 --- a/libstdc++-v3/include/debug/deque +++ b/libstdc++-v3/include/debug/deque @@ -130,8 +130,8 @@ namespace __debug #endif deque(_InputIterator __first, _InputIterator __last, const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __a) { } diff --git a/libstdc++-v3/include/debug/forward_list b/libstdc++-v3/include/debug/forward_list index d454948..633af1a 100644 --- a/libstdc++-v3/include/debug/forward_list +++ b/libstdc++-v3/include/debug/forward_list @@ -241,8 +241,8 @@ namespace __debug typename = std::_RequireInputIter<_InputIterator>> forward_list(_InputIterator __first, _InputIterator __last, const allocator_type& __al = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __al) { } diff --git a/libstdc++-v3/include/debug/functions.h b/libstdc++-v3/include/debug/functions.h index 57cc682..3a2ba74 100644 --- a/libstdc++-v3/include/debug/functions.h +++ b/libstdc++-v3/include/debug/functions.h @@ -87,10 +87,13 @@ namespace __gnu_debug template<typename _InputIterator> inline _InputIterator __check_valid_range(const _InputIterator& __first, - const _InputIterator& __last - __attribute__((__unused__))) + const _InputIterator& __last, + const char* __file, + unsigned int __line, + const char* __function) { - __glibcxx_check_valid_range(__first, __last); + __glibcxx_check_valid_range_at(__first, __last, + __file, __line, __function); return __first; } diff --git a/libstdc++-v3/include/debug/list b/libstdc++-v3/include/debug/list index 13a7486..e37ebf1 100644 --- a/libstdc++-v3/include/debug/list +++ b/libstdc++-v3/include/debug/list @@ -131,8 +131,8 @@ namespace __debug #endif list(_InputIterator __first, _InputIterator __last, const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __a) { } diff --git a/libstdc++-v3/include/debug/macros.h b/libstdc++-v3/include/debug/macros.h index 6f901bc..824d399 100644 --- a/libstdc++-v3/include/debug/macros.h +++ b/libstdc++-v3/include/debug/macros.h @@ -60,12 +60,23 @@ _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__valid_range(_First, _Last), \ ._M_iterator(_First, #_First) \ ._M_iterator(_Last, #_Last)) +#define __glibcxx_check_valid_range_at(_First,_Last,_File,_Line,_Func) \ +_GLIBCXX_DEBUG_VERIFY_AT_F(__gnu_debug::__valid_range(_First, _Last), \ + _M_message(__gnu_debug::__msg_valid_range) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last), \ + _File,_Line,_Func) + #define __glibcxx_check_valid_range2(_First,_Last,_Dist) \ _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__valid_range(_First, _Last, _Dist), \ _M_message(__gnu_debug::__msg_valid_range) \ ._M_iterator(_First, #_First) \ ._M_iterator(_Last, #_Last)) +#define __glibcxx_check_valid_constructor_range(_First,_Last) \ + __gnu_debug::__check_valid_range(_First, _Last, \ + __FILE__, __LINE__, __PRETTY_FUNCTION__) + // Verify that [_First, _Last) forms a non-empty iterator range. #define __glibcxx_check_non_empty_range(_First,_Last) \ _GLIBCXX_DEBUG_VERIFY(_First != _Last, \ diff --git a/libstdc++-v3/include/debug/map.h b/libstdc++-v3/include/debug/map.h index 414b4dc..3f0649a 100644 --- a/libstdc++-v3/include/debug/map.h +++ b/libstdc++-v3/include/debug/map.h @@ -114,8 +114,8 @@ namespace __debug template<typename _InputIterator> map(_InputIterator __first, _InputIterator __last, const allocator_type& __a) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __a) { } @@ -133,8 +133,8 @@ namespace __debug map(_InputIterator __first, _InputIterator __last, const _Compare& __comp = _Compare(), const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __comp, __a) { } diff --git a/libstdc++-v3/include/debug/multimap.h b/libstdc++-v3/include/debug/multimap.h index 8d6358b..e709eb7 100644 --- a/libstdc++-v3/include/debug/multimap.h +++ b/libstdc++-v3/include/debug/multimap.h @@ -114,8 +114,8 @@ namespace __debug template<typename _InputIterator> multimap(_InputIterator __first, _InputIterator __last, const allocator_type& __a) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __a) { } ~multimap() = default; @@ -129,8 +129,8 @@ namespace __debug multimap(_InputIterator __first, _InputIterator __last, const _Compare& __comp = _Compare(), const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __comp, __a) { } diff --git a/libstdc++-v3/include/debug/multiset.h b/libstdc++-v3/include/debug/multiset.h index 4e1406e..461f4f6 100644 --- a/libstdc++-v3/include/debug/multiset.h +++ b/libstdc++-v3/include/debug/multiset.h @@ -114,8 +114,8 @@ namespace __debug template<typename _InputIterator> multiset(_InputIterator __first, _InputIterator __last, const allocator_type& __a) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __a) { } ~multiset() = default; @@ -129,8 +129,8 @@ namespace __debug multiset(_InputIterator __first, _InputIterator __last, const _Compare& __comp = _Compare(), const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __comp, __a) { } diff --git a/libstdc++-v3/include/debug/set.h b/libstdc++-v3/include/debug/set.h index a886860..2ac8f1c 100644 --- a/libstdc++-v3/include/debug/set.h +++ b/libstdc++-v3/include/debug/set.h @@ -113,8 +113,8 @@ namespace __debug template<typename _InputIterator> set(_InputIterator __first, _InputIterator __last, const allocator_type& __a) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __a) { } ~set() = default; @@ -128,8 +128,8 @@ namespace __debug set(_InputIterator __first, _InputIterator __last, const _Compare& __comp = _Compare(), const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __comp, __a) { } diff --git a/libstdc++-v3/include/debug/string b/libstdc++-v3/include/debug/string index 2b3677b..0aa5e9c 100644 --- a/libstdc++-v3/include/debug/string +++ b/libstdc++-v3/include/debug/string @@ -138,8 +138,8 @@ template<typename _CharT, typename _Traits = std::char_traits<_CharT>, template<typename _InputIterator> basic_string(_InputIterator __begin, _InputIterator __end, const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__begin, - __end)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__begin, __end)), __gnu_debug::__base(__end), __a) { } #if __cplusplus < 201103L diff --git a/libstdc++-v3/include/debug/unordered_map b/libstdc++-v3/include/debug/unordered_map index 687a46c..e4f7c5c 100644 --- a/libstdc++-v3/include/debug/unordered_map +++ b/libstdc++-v3/include/debug/unordered_map @@ -99,8 +99,8 @@ namespace __debug const hasher& __hf = hasher(), const key_equal& __eql = key_equal(), const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __n, __hf, __eql, __a) { } @@ -785,8 +785,8 @@ namespace __debug const hasher& __hf = hasher(), const key_equal& __eql = key_equal(), const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __n, __hf, __eql, __a) { } diff --git a/libstdc++-v3/include/debug/unordered_set b/libstdc++-v3/include/debug/unordered_set index 9b2ac9d..adafdb7 100644 --- a/libstdc++-v3/include/debug/unordered_set +++ b/libstdc++-v3/include/debug/unordered_set @@ -99,8 +99,8 @@ namespace __debug const hasher& __hf = hasher(), const key_equal& __eql = key_equal(), const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __n, __hf, __eql, __a) { } @@ -662,8 +662,8 @@ namespace __debug const hasher& __hf = hasher(), const key_equal& __eql = key_equal(), const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __n, __hf, __eql, __a) { } diff --git a/libstdc++-v3/include/debug/vector b/libstdc++-v3/include/debug/vector index 5289265..8d60da3 100644 --- a/libstdc++-v3/include/debug/vector +++ b/libstdc++-v3/include/debug/vector @@ -182,8 +182,8 @@ namespace __debug #endif vector(_InputIterator __first, _InputIterator __last, const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), + : _Base(__gnu_debug::__base( + __glibcxx_check_valid_constructor_range(__first, __last)), __gnu_debug::__base(__last), __a) { } #if __cplusplus < 201103L |