]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/ChangeLog
libstdc++: Fix regressions in unique_ptr::swap (PR 93562)
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
CommitLineData
9962493c
JW
12020-02-04 Jonathan Wakely <jwakely@redhat.com>
2
3 PR libstdc++/93562
4 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
5 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
6 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
7
20fa702b
AB
82020-02-01 Andrew Burgess <andrew.burgess@embecosm.com>
9
10 * configure: Regenerate.
11
6e5a1963
PP
122020-01-31 Patrick Palka <ppalka@redhat.com>
13
14 * testsuite/24_iterators/range_operations/distance.cc: Do not assume
15 test_range::end() returns the same type as test_range::begin().
16 * testsuite/24_iterators/range_operations/next.cc: Likewise.
17 * testsuite/24_iterators/range_operations/prev.cc: Likewise.
18 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
19 Always return a sentinel<I>.
20
5cd2e126
JW
212020-01-29 Jonathan Wakely <jwakely@redhat.com>
22
0a8f4feb
JW
23 PR libstdc++/92895
24 * include/std/stop_token (stop_token::stop_possible()): Call new
25 _M_stop_possible() function.
26 (stop_token::stop_requested()): Do not use stop_possible().
27 (stop_token::binary_semaphore): New class, as temporary stand-in for
28 std::binary_semaphore.
29 (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
30 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
31 New data members for symchronization with stop_callback destruction.
32 (stop_token::_Stop_cb::_Stop_cb): Make non-template.
33 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
34 Remove.
35 (stop_token::_Stop_cb::_M_run): New member function.
36 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
37 Remove.
38 (stop_token::_Stop_state::_M_owners): New data member to track
39 reference count for ownership.
40 (stop_token::_Stop_state::_M_value): New data member combining a
41 spinlock, the stop requested flag, and the reference count for
42 associated stop_source objects.
43 (stop_token::_Stop_state::_M_requester): New data member for
44 synchronization with stop_callback destruction.
45 (stop_token::_Stop_state::_M_stop_possible()): New member function.
46 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
47 of _M_value.
48 (stop_token::_Stop_state::_M_add_owner)
49 (stop_token::_Stop_state::_M_release_ownership)
50 (stop_token::_Stop_state::_M_add_ssrc)
51 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
52 updating reference counts.
53 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
54 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
55 (stop_token::_Stop_state::_M_try_lock)
56 (stop_token::_Stop_state::_M_try_lock_and_stop)
57 (stop_token::_Stop_state::_M_do_try_lock): New member functions for
58 managing spinlock.
59 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
60 read and update state. Release lock while running callbacks. Use new
61 data members to synchronize with callback destruction.
62 (stop_token::_Stop_state::_M_remove_callback): Likewise.
63 (stop_token::_Stop_state::_M_register_callback): Use atomic operations
64 to read and update state.
65 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
66 replacing shared_ptr.
67 (stop_source::stop_source(const stop_source&)): Update reference count.
68 (stop_source::operator=(const stop_source&)): Likewise.
69 (stop_source::~stop_source()): Likewise.
70 (stop_source::stop_source(stop_source&&)): Define as defaulted.
71 (stop_source::operator=(stop_source&&)): Establish postcondition on
72 parameter.
73 (stop_callback): Enforce preconditions on template parameter. Replace
74 base class with data member of new _Cb_impl type.
75 (stop_callback::stop_callback(const stop_token&, Cb&&))
76 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
77 (stop_callback::_Cb_impl): New type wrapping _Callback member and
78 defining the _S_execute member function.
79 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
80 test.
81 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
82 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
83 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
84 New test.
85 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
86 test.
87 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
88 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
89 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
90 test.
91
f214ffb3
JW
92 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
93 three_way_comparable_with.
94 (__detail::__3way_cmp_with): Remove workaround for fixed bug.
95 (compare_three_way::operator()): Remove redundant constraint from
96 requires-clause.
97 (__detail::_Synth3way::operator()): Use three_way_comparable_with
98 instead of workaround.
99 * testsuite/18_support/comparisons/object/93479.cc: Prune extra
100 output due to simplified constraints on compare_three_way::operator().
101
83b02010
JW
102 PR libstdc++/93479
103 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
104 * testsuite/18_support/comparisons/object/93479.cc: New test.
105
5cd2e126
JW
106 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
107 returns the same type as test_range::begin(). Add comments.
108 * testsuite/std/ranges/access/rbegin.cc: Likewise.
109 * testsuite/std/ranges/access/rend.cc: Likewise.
110 * testsuite/std/ranges/range.cc: Do not assume the sentinel for
111 test_range is the same as its iterator type.
112 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
113 operator- overloads to satisfy sized_sentinel_for when the iterator
114 satisfies random_access_iterator.
115
759812fd
JW
1162020-01-28 Jonathan Wakely <jwakely@redhat.com>
117
72a9fd20
JW
118 PR libstdc++/93470
119 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
120 static assertion to object types.
121
759812fd
JW
122 PR libstdc++/93325
123 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
124 clock_gettime instead of explicit glibc version check.
125 * configure: Regenerate.
126
a5d81aaa
JW
1272020-01-28 Martin Liska <mliska@suse.cz>
128
129 PR libstdc++/93478
130 * include/std/atomic: Fix typo.
131 * include/std/optional: Likewise.
132
1332020-01-27 Andrew Burgess <andrew.burgess@embecosm.com>
134
135 * configure: Regenerate.
136
389cd88c
JW
1372020-01-27 Jonathan Wakely <jwakely@redhat.com>
138
139 PR libstdc++/93426
140 * include/std/span (span): Fix deduction guide.
141 * testsuite/23_containers/span/deduction.cc: New test.
142
482eeff5
JW
1432020-01-24 Jonathan Wakely <jwakely@redhat.com>
144
145 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
146 (__cmp_cat::_Ord::equivalent): Add enumerator.
147 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
148 and greater.
149 (partial_ordering, weak_ordering, strong_ordering): Remove
150 constructors taking __cmp_cat::_Eq parameters. Use renamed
151 enumerators.
152
e8e66971
MR
1532020-01-24 Maciej W. Rozycki <macro@wdc.com>
154
155 * acinclude.m4: Handle `--with-toolexeclibdir='.
156 * Makefile.in: Regenerate.
157 * aclocal.m4: Regenerate.
158 * configure: Regenerate.
159 * doc/Makefile.in: Regenerate.
160 * include/Makefile.in: Regenerate.
161 * libsupc++/Makefile.in: Regenerate.
162 * po/Makefile.in: Regenerate.
163 * python/Makefile.in: Regenerate.
164 * src/Makefile.in: Regenerate.
165 * src/c++11/Makefile.in: Regenerate.
166 * src/c++17/Makefile.in: Regenerate.
167 * src/c++98/Makefile.in: Regenerate.
168 * src/filesystem/Makefile.in: Regenerate.
169 * testsuite/Makefile.in: Regenerate.
170
7a900bce
AO
1712020-01-23 Alexandre Oliva <oliva@adacore.com>
172
f9e84b31
AO
173 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
174 * configure: Rebuild.
175
7a900bce
AO
176 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
177
04681fca
JW
1782020-01-23 Jonathan Wakely <jwakely@redhat.com>
179
180 PR libstdc++/91947
181 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
182 rule.
183 * include/Makefile.in: Regenerate.
184
c784f162
JW
1852020-01-20 Jonathan Wakely <jwakely@redhat.com>
186
187 * doc/xml/faq.xml: Fix grammar.
188 * doc/xml/manual/appendix_contributing.xml: Improve instructions.
189 * doc/xml/manual/spine.xml: Update copyright years.
190 * doc/html/*: Regenerate.
191
f4d83eba
ER
1922020-01-19 Eric S. Raymond <esr@thyrsus.com>
193
194 * doc/xml/faq.xml: Update for SVN -> Git transition.
195 * doc/xml/manual/appendix_contributing.xml: Likewise.
196 * doc/xml/manual/status_cxx1998.xml: Likewise.
197 * doc/xml/manual/status_cxx2011.xml: Likewise.
198 * doc/xml/manual/status_cxx2014.xml: Likewise.
199 * doc/xml/manual/status_cxx2017.xml: Likewise.
200 * doc/xml/manual/status_cxx2020.xml: Likewise.
201 * doc/xml/manual/status_cxxtr1.xml: Likewise.
202 * doc/xml/manual/status_cxxtr24733.xml: Likewise.
203
49789fd0
IS
2042020-01-18 Iain Sandoe <iain@sandoe.co.uk>
205
206 * include/Makefile.am: Add coroutine to the std set.
207 * include/Makefile.in: Regenerated.
208 * include/std/coroutine: New file.
209
0ba6a850
JW
2102020-01-17 Jonathan Wakely <jwakely@redhat.com>
211
212 PR libstdc++/92376
213 * include/bits/c++config: Only do PSTL config when the header is
214 present, to fix freestanding.
215 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
216 functions if they were detected by configure.
217
98d56ea8
JW
2182020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de>
219 Matthew Bauer <mjbauer95@gmail.com>
220 Jonathan Wakely <jwakely@redhat.com>
221
222 PR bootstrap/64271 (partial)
223 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
224 to unsigned short.
225 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
226 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
227 definitions with NetBSD upstream.
228 (ctype_base::blank): Use _CTYPE_BL.
229 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
230 Declaration.
231 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
232 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
233 parameters to unsigned char.
234 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
235
d9165389
FD
2362020-01-16 François Dumont <fdumont@gcc.gnu.org>
237
238 PR libstdc++/91263
239 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
240 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
241 (_Equality_base): Remove.
242 (_Equality<>::_M_equal): Review implementation. Use
243 std::is_permutation.
244 * testsuite/23_containers/unordered_multiset/operators/1.cc
245 (Hash, Equal, test02, test03): New.
246 * testsuite/23_containers/unordered_set/operators/1.cc
247 (Hash, Equal, test02, test03): New.
248
2a0f6c61
JW
2492020-01-15 Jonathan Wakely <jwakely@redhat.com>
250
251 PR libstdc++/93267
252 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
253 Move here from <bits/range_access.h> and define using __int128 when
254 available.
255 (__is_integer_like, __is_signed_integer_like): Move here from
256 <bits/range_access.h>.
257 (weakly_incrementable): Use __is_signed_integer_like.
258 * include/bits/range_access.h (__max_diff_type, __max_size_type)
259 (__is_integer_like, __is_signed_integer_like): Move to
260 <bits/iterator_concepts.h>.
261 (__make_unsigned_like_t): Move here from <ranges>.
262 * include/std/ranges (__make_unsigned_like_t): Move to
263 <bits/range_access.h>.
264 (iota_view): Replace using-directive with using-declarations.
265 * testsuite/std/ranges/iota/93267.cc: New test.
266 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
267
e4379a93
JW
2682020-01-13 Jonathan Wakely <jwakely@redhat.com>
269
fe7cc34f
JW
270 PR libstdc++/93244
271 * include/bits/fs_path.h (path::generic_string<C,A>)
272 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
273 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
274 root-dir is converted to forward slash in generic pathname.
275 * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
276 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
277
e4379a93
JW
278 PR libstdc++/58605
279 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
280 Define.
281 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
282 (__atomic_float): Add default member initializer for C++20.
283 * include/std/atomic (atomic): Likewise.
284 (atomic::atomic()): Remove noexcept-specifier on default constructor.
285 * include/std/version (__cpp_lib_atomic_value_initialization): Define.
286 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
287 number.
288 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
289 * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
290 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
291 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
292 expected result for is_trivially_default_constructible.
293 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
294 * testsuite/29_atomics/atomic_float/value_init.cc: New test.
295 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
296 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
297 * testsuite/29_atomics/atomic_integral/cons/value_init.cc
298 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
299 expected results for is_trivially_default_constructible.
300 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
301 new test generator.
302
7918cb93
JW
3032020-01-10 Jonathan Wakely <jwakely@redhat.com>
304
68be73fc
JW
305 * testsuite/util/testsuite_iterators.h: Improve comment.
306
78f02e80
JW
307 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
308 initialization syntax.
309
7918cb93
JW
310 PR libstdc++/92285
311 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
312 of base class independent of __cplusplus value.
313 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
314 type defined in the base class
315 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
316 * testsuite/24_iterators/istreambuf_iterator/requirements/
317 base_classes.cc: Adjust expected base class for C++98.
318
acd43917
OH
3192020-01-09 Olivier Hainque <hainque@adacore.com>
320
321 * doc/xml/manual/appendix_contributing.xml: Document _C2
322 as a reserved identifier, by VxWorks.
323 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
324 * include/bits/stl_multimap.h: Likewise.
325
caa39b2e
JW
3262020-01-09 Jonathan Wakely <jwakely@redhat.com>
327
1a788638
JW
328 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
329 (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
330 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
331 partial specialization to disambiguate the two constrained
332 specializations.
333
caa39b2e
JW
334 * include/experimental/type_traits (experimental::is_pod_v): Disable
335 -Wdeprecated-declarations warnings around reference to std::is_pod.
336 * include/std/type_traits (is_pod_v): Likewise.
337 * testsuite/18_support/max_align_t/requirements/2.cc: Also check
338 is_standard_layout and is_trivial. Do not check is_pod for C++20.
339 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
340 Add -Wno-deprecated for C++20.
341 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
342 * testsuite/20_util/is_pod/value.cc: Likewise.
343 * testsuite/experimental/type_traits/value.cc: Likewise.
344
1a6c5064
JTM
3452020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com>
346
347 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
348 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
349 * testuite/20_util/is_pod/deprecated-2a.cc: New test.
350
d574c8aa
JW
3512020-01-09 Jonathan Wakely <jwakely@redhat.com>
352
160e95dc
JW
353 PR libstdc++/93205
354 * include/bits/random.h (operator>>): Check stream operation succeeds.
355 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
356 typedefs.
357 (operator>>): Remove redundant __istream_type typedefs. Check stream
358 operations succeed.
359 (__extract_params): New function to fill a vector from a stream.
360 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
361
d574c8aa
JW
362 PR libstdc++/93208
363 * config/abi/pre/gnu.ver: Add new exports.
364 * include/std/memory_resource (memory_resource::~memory_resource()):
365 Do not define inline.
366 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
367 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
368 Define.
369 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
370 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
371
b9c84e95
FD
3722020-01-09 François Dumont <fdumont@gcc.gnu.org>
373
374 PR libstdc++/92124
375 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
376 template alias.
377 (_Hashtable<>::__fwd_value_for): New.
378 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
379 parameter.
380 (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
381 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
382 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
383 with std::move.
384 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
385 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
386 Adapt.
387 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
388 Adapt.
389 * testsuite/23_containers/unordered_set/92124.cc: New.
390
fff148b7
JW
3912020-01-08 Jonathan Wakely <jwakely@redhat.com>
392
393 PR libstdc++/93201
394 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
395 detailed error reporting for remove_all. Check result of recursive
396 call before incrementing iterator.
397 (remove_all(const path&), remove_all(const path&, error_code&)): Use
398 do_remove_all.
399 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
400 result of recursive call before incrementing iterator.
401 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
402 are reported correctly.
403 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
404
9e3c1eb7
TR
4052020-01-07 Thomas Rodgers <trodgers@redhat.com>
406
407 * include/std/condition_variable
408 (condition_variable_any::wait_on): Rename to match current draft
409 standard.
410 (condition_variable_any::wait_on_until): Likewise.
411 (condition_variable_any::wait_on_for): Likewise.
412 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
413 Adjust tests to account for renamed methods.
414
6af8819b
FD
4152020-01-07 François Dumont <fdumont@gcc.gnu.org>
416
417 PR libstdc++/92124
418 * include/bits/stl_tree.h
419 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
420 std::move_if_noexcept by std::move.
421 * testsuite/23_containers/map/92124.cc: New.
422 * testsuite/23_containers/set/92124.cc: New.
423
f31a99f7
JW
4242020-01-06 Jonathan Wakely <jwakely@redhat.com>
425
a4a1f965
JW
426 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
427 (stop_source): Likewise (LWG 3362).
428 * testsuite/30_threads/stop_token/stop_source.cc: Test equality
429 comparisons.
430
f31a99f7
JW
431 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
432 (lexicographical_compare_three_way): Do not depend on
433 __cpp_lib_concepts.
434 * include/std/version (__cpp_lib_three_way_comparison): Only define
435 when __cpp_lib_concepts is defined.
436 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
437
b4e70137
JW
4382020-01-03 Jonathan Wakely <jwakely@redhat.com>
439
440 * include/bits/stl_algobase.h (lexicographical_compare_three_way):
441 Only define four-argument overload when __cpp_lib_concepts is defined.
442
a8497ec6
JDA
4432020-01-01 John David Anglin <danglin@gcc.gnu.org>
444
445 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
446
8d9254fc 4472020-01-01 Jakub Jelinek <jakub@redhat.com>
5624e564
JJ
448
449 Update copyright years.
b4df5e92 450\f
8d9254fc 451Copyright (C) 2020 Free Software Foundation, Inc.
b4df5e92
JW
452
453Copying and distribution of this file, with or without modification,
454are permitted in any medium without royalty provided the copyright
455notice and this notice are preserved.