From 1268f609aafd78796a66f13fa7eac88efe0cb097 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Thu, 8 Apr 2021 10:44:48 -0400 Subject: Begin updating packaging for Abseil 20210324 Bump package versions and names to reflect the new Abseil LTS. Remove patches that have been incorporated upstream, and refresh other patches. --- debian/changelog | 5 +- debian/control | 4 +- debian/copyright | 6 +- debian/gbp.conf | 2 +- debian/libabsl20200923.install | 74 ---- debian/libabsl20200923.lintian-overrides | 17 - debian/libabsl20200923.shlibs | 74 ---- debian/libabsl20210324.install | 74 ++++ debian/libabsl20210324.lintian-overrides | 17 + debian/libabsl20210324.shlibs | 74 ++++ debian/patches/configure.diff | 16 +- debian/patches/cpu-frequency.diff | 54 --- debian/patches/disable-double-double-tests.diff | 489 ------------------------ debian/patches/endian-hash.diff | 111 ------ debian/patches/endian-random.diff | 249 ------------ debian/patches/fix-hppa.diff | 26 -- debian/patches/fma-contraction.diff | 63 --- debian/patches/latomic.diff | 2 +- debian/patches/nan-narrowing.diff | 25 -- debian/patches/ppc-float-conversion.diff | 268 ------------- debian/patches/series | 8 - 21 files changed, 181 insertions(+), 1477 deletions(-) delete mode 100644 debian/libabsl20200923.install delete mode 100644 debian/libabsl20200923.lintian-overrides delete mode 100644 debian/libabsl20200923.shlibs create mode 100644 debian/libabsl20210324.install create mode 100644 debian/libabsl20210324.lintian-overrides create mode 100644 debian/libabsl20210324.shlibs delete mode 100644 debian/patches/cpu-frequency.diff delete mode 100644 debian/patches/disable-double-double-tests.diff delete mode 100644 debian/patches/endian-hash.diff delete mode 100644 debian/patches/endian-random.diff delete mode 100644 debian/patches/fix-hppa.diff delete mode 100644 debian/patches/fma-contraction.diff delete mode 100644 debian/patches/nan-narrowing.diff delete mode 100644 debian/patches/ppc-float-conversion.diff diff --git a/debian/changelog b/debian/changelog index c821ca3c..e48b1b5d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,11 @@ -abseil (0~20200923.3-4) UNRELEASED; urgency=medium +abseil (0~20210324.0-1) UNRELEASED; urgency=medium + * New upstream release. * Correct debian/watch search URLs to avoid picking up rc versions. * Mangle upstream version in debian/watch to match manual mangling in debian/changelog. - -- Benjamin Barenblat Thu, 08 Apr 2021 10:14:59 -0400 + -- Benjamin Barenblat Thu, 08 Apr 2021 10:28:01 -0400 abseil (0~20200923.3-3) unstable; urgency=medium diff --git a/debian/control b/debian/control index ea2a5fd3..7c552426 100644 --- a/debian/control +++ b/debian/control @@ -37,7 +37,7 @@ Architecture: any Multi-Arch: same Section: libdevel Depends: - libabsl20200923 (= ${binary:Version}), + libabsl20210324 (= ${binary:Version}), ${misc:Depends}, Recommends: cmake (>= 2.6), g++ (>= 4.7) Description: ${source:Synopsis} (development files) @@ -46,7 +46,7 @@ Description: ${source:Synopsis} (development files) This package contains header files and other data necessary for developing with Abseil. -Package: libabsl20200923 +Package: libabsl20210324 Architecture: any Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} diff --git a/debian/copyright b/debian/copyright index 78336c12..986a4261 100644 --- a/debian/copyright +++ b/debian/copyright @@ -8,17 +8,13 @@ License: Apache-2.0 Files: * Copyright: 2000-2017 Google Inc. - 2017-2020 The Abseil Authors + 2017-2021 The Abseil Authors License: Apache-2.0 Files: debian/* Copyright: 2020 Google LLC License: Apache-2.0 -Files: debian/patches/fix-hppa.diff -Copyright: 2020 John David Anglin -License: Apache-2.0 - License: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the diff --git a/debian/gbp.conf b/debian/gbp.conf index c24fe094..aa383957 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -13,4 +13,4 @@ # the License. [DEFAULT] -upstream-tag = 20200923.3 +upstream-tag = 20210324.0 diff --git a/debian/libabsl20200923.install b/debian/libabsl20200923.install deleted file mode 100644 index e5967b9d..00000000 --- a/debian/libabsl20200923.install +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. - -usr/lib/*/libabsl_bad_any_cast_impl.so.* -usr/lib/*/libabsl_bad_optional_access.so.* -usr/lib/*/libabsl_bad_variant_access.so.* -usr/lib/*/libabsl_base.so.* -usr/lib/*/libabsl_city.so.* -usr/lib/*/libabsl_civil_time.so.* -usr/lib/*/libabsl_cord.so.* -usr/lib/*/libabsl_debugging_internal.so.* -usr/lib/*/libabsl_demangle_internal.so.* -usr/lib/*/libabsl_examine_stack.so.* -usr/lib/*/libabsl_exponential_biased.so.* -usr/lib/*/libabsl_failure_signal_handler.so.* -usr/lib/*/libabsl_flags.so.* -usr/lib/*/libabsl_flags_commandlineflag.so.* -usr/lib/*/libabsl_flags_commandlineflag_internal.so.* -usr/lib/*/libabsl_flags_config.so.* -usr/lib/*/libabsl_flags_internal.so.* -usr/lib/*/libabsl_flags_marshalling.so.* -usr/lib/*/libabsl_flags_parse.so.* -usr/lib/*/libabsl_flags_private_handle_accessor.so.* -usr/lib/*/libabsl_flags_program_name.so.* -usr/lib/*/libabsl_flags_reflection.so.* -usr/lib/*/libabsl_flags_usage.so.* -usr/lib/*/libabsl_flags_usage_internal.so.* -usr/lib/*/libabsl_graphcycles_internal.so.* -usr/lib/*/libabsl_hash.so.* -usr/lib/*/libabsl_hashtablez_sampler.so.* -usr/lib/*/libabsl_int128.so.* -usr/lib/*/libabsl_leak_check.so.* -usr/lib/*/libabsl_leak_check_disable.so.* -usr/lib/*/libabsl_log_severity.so.* -usr/lib/*/libabsl_malloc_internal.so.* -usr/lib/*/libabsl_periodic_sampler.so.* -usr/lib/*/libabsl_random_distributions.so.* -usr/lib/*/libabsl_random_internal_distribution_test_util.so.* -usr/lib/*/libabsl_random_internal_platform.so.* -usr/lib/*/libabsl_random_internal_pool_urbg.so.* -usr/lib/*/libabsl_random_internal_randen.so.* -usr/lib/*/libabsl_random_internal_randen_hwaes.so.* -usr/lib/*/libabsl_random_internal_randen_hwaes_impl.so.* -usr/lib/*/libabsl_random_internal_randen_slow.so.* -usr/lib/*/libabsl_random_internal_seed_material.so.* -usr/lib/*/libabsl_random_seed_gen_exception.so.* -usr/lib/*/libabsl_random_seed_sequences.so.* -usr/lib/*/libabsl_raw_hash_set.so.* -usr/lib/*/libabsl_raw_logging_internal.so.* -usr/lib/*/libabsl_scoped_set_env.so.* -usr/lib/*/libabsl_spinlock_wait.so.* -usr/lib/*/libabsl_stacktrace.so.* -usr/lib/*/libabsl_status.so.* -usr/lib/*/libabsl_statusor.so.* -usr/lib/*/libabsl_str_format_internal.so.* -usr/lib/*/libabsl_strerror.so.* -usr/lib/*/libabsl_strings.so.* -usr/lib/*/libabsl_strings_internal.so.* -usr/lib/*/libabsl_symbolize.so.* -usr/lib/*/libabsl_synchronization.so.* -usr/lib/*/libabsl_throw_delegate.so.* -usr/lib/*/libabsl_time.so.* -usr/lib/*/libabsl_time_zone.so.* diff --git a/debian/libabsl20200923.lintian-overrides b/debian/libabsl20200923.lintian-overrides deleted file mode 100644 index 1fed50f7..00000000 --- a/debian/libabsl20200923.lintian-overrides +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. - -libabsl20200923: no-symbols-control-file usr/lib/*/libabsl_* -libabsl20200923: package-name-doesnt-match-sonames libabsl-* -libabsl20200923: spelling-error-in-binary usr/lib/*/libabsl_flags_usage_internal.so* helpfull helpful diff --git a/debian/libabsl20200923.shlibs b/debian/libabsl20200923.shlibs deleted file mode 100644 index e84201fb..00000000 --- a/debian/libabsl20200923.shlibs +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -# -libabsl_bad_any_cast_impl 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_bad_optional_access 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_bad_variant_access 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_base 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_city 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_civil_time 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_cord 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_debugging_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_demangle_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_examine_stack 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_exponential_biased 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_failure_signal_handler 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_commandlineflag 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_commandlineflag_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_config 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_marshalling 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_parse 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_private_handle_accessor 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_program_name 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_reflection 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_usage 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_flags_usage_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_graphcycles_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_hash 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_hashtablez_sampler 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_int128 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_leak_check 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_leak_check_disable 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_log_severity 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_malloc_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_periodic_sampler 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_distributions 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_internal_distribution_test_util 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_internal_platform 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_internal_pool_urbg 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_internal_randen 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_internal_randen_hwaes 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_internal_randen_hwaes_impl 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_internal_randen_slow 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_internal_seed_material 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_seed_gen_exception 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_random_seed_sequences 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_raw_hash_set 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_raw_logging_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_scoped_set_env 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_spinlock_wait 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_stacktrace 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_status 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_statusor 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_str_format_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_strerror 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_strings 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_strings_internal 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_symbolize 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_synchronization 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_throw_delegate 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_time 20200923 libabsl20200923 (>= 0~20200923-1) -libabsl_time_zone 20200923 libabsl20200923 (>= 0~20200923-1) diff --git a/debian/libabsl20210324.install b/debian/libabsl20210324.install new file mode 100644 index 00000000..e5967b9d --- /dev/null +++ b/debian/libabsl20210324.install @@ -0,0 +1,74 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +usr/lib/*/libabsl_bad_any_cast_impl.so.* +usr/lib/*/libabsl_bad_optional_access.so.* +usr/lib/*/libabsl_bad_variant_access.so.* +usr/lib/*/libabsl_base.so.* +usr/lib/*/libabsl_city.so.* +usr/lib/*/libabsl_civil_time.so.* +usr/lib/*/libabsl_cord.so.* +usr/lib/*/libabsl_debugging_internal.so.* +usr/lib/*/libabsl_demangle_internal.so.* +usr/lib/*/libabsl_examine_stack.so.* +usr/lib/*/libabsl_exponential_biased.so.* +usr/lib/*/libabsl_failure_signal_handler.so.* +usr/lib/*/libabsl_flags.so.* +usr/lib/*/libabsl_flags_commandlineflag.so.* +usr/lib/*/libabsl_flags_commandlineflag_internal.so.* +usr/lib/*/libabsl_flags_config.so.* +usr/lib/*/libabsl_flags_internal.so.* +usr/lib/*/libabsl_flags_marshalling.so.* +usr/lib/*/libabsl_flags_parse.so.* +usr/lib/*/libabsl_flags_private_handle_accessor.so.* +usr/lib/*/libabsl_flags_program_name.so.* +usr/lib/*/libabsl_flags_reflection.so.* +usr/lib/*/libabsl_flags_usage.so.* +usr/lib/*/libabsl_flags_usage_internal.so.* +usr/lib/*/libabsl_graphcycles_internal.so.* +usr/lib/*/libabsl_hash.so.* +usr/lib/*/libabsl_hashtablez_sampler.so.* +usr/lib/*/libabsl_int128.so.* +usr/lib/*/libabsl_leak_check.so.* +usr/lib/*/libabsl_leak_check_disable.so.* +usr/lib/*/libabsl_log_severity.so.* +usr/lib/*/libabsl_malloc_internal.so.* +usr/lib/*/libabsl_periodic_sampler.so.* +usr/lib/*/libabsl_random_distributions.so.* +usr/lib/*/libabsl_random_internal_distribution_test_util.so.* +usr/lib/*/libabsl_random_internal_platform.so.* +usr/lib/*/libabsl_random_internal_pool_urbg.so.* +usr/lib/*/libabsl_random_internal_randen.so.* +usr/lib/*/libabsl_random_internal_randen_hwaes.so.* +usr/lib/*/libabsl_random_internal_randen_hwaes_impl.so.* +usr/lib/*/libabsl_random_internal_randen_slow.so.* +usr/lib/*/libabsl_random_internal_seed_material.so.* +usr/lib/*/libabsl_random_seed_gen_exception.so.* +usr/lib/*/libabsl_random_seed_sequences.so.* +usr/lib/*/libabsl_raw_hash_set.so.* +usr/lib/*/libabsl_raw_logging_internal.so.* +usr/lib/*/libabsl_scoped_set_env.so.* +usr/lib/*/libabsl_spinlock_wait.so.* +usr/lib/*/libabsl_stacktrace.so.* +usr/lib/*/libabsl_status.so.* +usr/lib/*/libabsl_statusor.so.* +usr/lib/*/libabsl_str_format_internal.so.* +usr/lib/*/libabsl_strerror.so.* +usr/lib/*/libabsl_strings.so.* +usr/lib/*/libabsl_strings_internal.so.* +usr/lib/*/libabsl_symbolize.so.* +usr/lib/*/libabsl_synchronization.so.* +usr/lib/*/libabsl_throw_delegate.so.* +usr/lib/*/libabsl_time.so.* +usr/lib/*/libabsl_time_zone.so.* diff --git a/debian/libabsl20210324.lintian-overrides b/debian/libabsl20210324.lintian-overrides new file mode 100644 index 00000000..090227b0 --- /dev/null +++ b/debian/libabsl20210324.lintian-overrides @@ -0,0 +1,17 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +libabsl20210324: no-symbols-control-file usr/lib/*/libabsl_* +libabsl20210324: package-name-doesnt-match-sonames libabsl-* +libabsl20210324: spelling-error-in-binary usr/lib/*/libabsl_flags_usage_internal.so* helpfull helpful diff --git a/debian/libabsl20210324.shlibs b/debian/libabsl20210324.shlibs new file mode 100644 index 00000000..4f30c3d0 --- /dev/null +++ b/debian/libabsl20210324.shlibs @@ -0,0 +1,74 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# +libabsl_bad_any_cast_impl 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_bad_optional_access 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_bad_variant_access 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_base 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_city 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_civil_time 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_cord 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_debugging_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_demangle_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_examine_stack 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_exponential_biased 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_failure_signal_handler 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_commandlineflag 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_commandlineflag_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_config 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_marshalling 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_parse 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_private_handle_accessor 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_program_name 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_reflection 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_usage 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_flags_usage_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_graphcycles_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_hash 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_hashtablez_sampler 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_int128 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_leak_check 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_leak_check_disable 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_log_severity 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_malloc_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_periodic_sampler 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_distributions 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_internal_distribution_test_util 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_internal_platform 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_internal_pool_urbg 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_internal_randen 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_internal_randen_hwaes 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_internal_randen_hwaes_impl 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_internal_randen_slow 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_internal_seed_material 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_seed_gen_exception 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_random_seed_sequences 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_raw_hash_set 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_raw_logging_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_scoped_set_env 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_spinlock_wait 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_stacktrace 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_status 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_statusor 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_str_format_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_strerror 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_strings 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_strings_internal 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_symbolize 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_synchronization 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_throw_delegate 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_time 20210324 libabsl20210324 (>= 0~20210324.0-1) +libabsl_time_zone 20210324 libabsl20210324 (>= 0~20210324.0-1) diff --git a/debian/patches/configure.diff b/debian/patches/configure.diff index 5c47b152..786994b0 100644 --- a/debian/patches/configure.diff +++ b/debian/patches/configure.diff @@ -22,16 +22,16 @@ Configure Abseil for Debian. --- a/CMake/AbseilHelpers.cmake +++ b/CMake/AbseilHelpers.cmake -@@ -217,6 +217,9 @@ +@@ -263,7 +263,8 @@ + if(ABSL_ENABLE_INSTALL) + set_target_properties(${_NAME} PROPERTIES OUTPUT_NAME "absl_${_NAME}" +- SOVERSION "2103.0.0" ++ SOVERSION 20210324 ++ VERSION "20210324.0.0" ) endif() -+ -+ set_property(TARGET ${_NAME} PROPERTY SOVERSION 20200923) -+ set_property(TARGET ${_NAME} PROPERTY VERSION "20200923.0.1") else() - # Generating header-only library - add_library(${_NAME} INTERFACE) --- a/absl/base/options.h +++ b/absl/base/options.h @@ -100,7 +100,7 @@ @@ -74,8 +74,8 @@ Configure Abseil for Debian. // allowed. #define ABSL_OPTION_USE_INLINE_NAMESPACE 1 --#define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_2020_09_23 -+#define ABSL_OPTION_INLINE_NAMESPACE_NAME debian1 +-#define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_20210324 ++#define ABSL_OPTION_INLINE_NAMESPACE_NAME debian2 // ABSL_OPTION_HARDENED // diff --git a/debian/patches/cpu-frequency.diff b/debian/patches/cpu-frequency.diff deleted file mode 100644 index adfba7e0..00000000 --- a/debian/patches/cpu-frequency.diff +++ /dev/null @@ -1,54 +0,0 @@ -From: Benjamin Barenblat -Subject: Ignore missing CPU frequency on more architectures -Forwarded: yes -Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/1918ad2ae38aa32c74b558b322479a8efdd76363 - -Linux on MIPS, PA-RISC, RISC-V, and SystemZ doesn’t expose the nominal CPU -frequency via /sys, so don’t worry if `NominalCPUFrequency` returns 1.0 on those -platforms. - -Some POWER machines expose the CPU frequency; others do not. Since we can’t -predict which type of machine the tests will run on, simply disable testing for -`NominalCPUFrequency` on POWER. - -The author works at Google. Upstream applied this patch as Piper revision -347079873 and exported it to GitHub; the Applied-Upstream URL above points to -the exported commit. - ---- a/absl/base/internal/sysinfo_test.cc -+++ b/absl/base/internal/sysinfo_test.cc -@@ -37,17 +37,28 @@ TEST(SysinfoTest, NumCPUs) { - << "NumCPUs() should not have the default value of 0"; - } - -+// Ensure that NominalCPUFrequency returns a reasonable value, or 1.00 on -+// platforms where the CPU frequency is not available through sysfs. -+// -+// POWER is particularly problematic here; some Linux kernels expose the CPU -+// frequency, while others do not. Since we can't predict a priori what a given -+// machine is going to do, just disable this test on POWER on Linux. -+#if !(defined(__linux) && (defined(__ppc64__) || defined(__PPC64__))) - TEST(SysinfoTest, NominalCPUFrequency) { --#if !(defined(__aarch64__) && defined(__linux__)) && !defined(__EMSCRIPTEN__) -- EXPECT_GE(NominalCPUFrequency(), 1000.0) -- << "NominalCPUFrequency() did not return a reasonable value"; --#else -- // Aarch64 cannot read the CPU frequency from sysfs, so we get back 1.0. -- // Emscripten does not have a sysfs to read from at all. -+ // Linux only exposes the CPU frequency on certain architectures, and -+ // Emscripten doesn't expose it at all. -+#if defined(__linux__) && \ -+ (defined(__aarch64__) || defined(__hppa__) || defined(__mips__) || \ -+ defined(__riscv) || defined(__s390x__)) || \ -+ defined(__EMSCRIPTEN__) - EXPECT_EQ(NominalCPUFrequency(), 1.0) - << "CPU frequency detection was fixed! Please update unittest."; -+#else -+ EXPECT_GE(NominalCPUFrequency(), 1000.0) -+ << "NominalCPUFrequency() did not return a reasonable value"; - #endif - } -+#endif - - TEST(SysinfoTest, GetTID) { - EXPECT_EQ(GetTID(), GetTID()); // Basic compile and equality test. diff --git a/debian/patches/disable-double-double-tests.diff b/debian/patches/disable-double-double-tests.diff deleted file mode 100644 index e80a8a78..00000000 --- a/debian/patches/disable-double-double-tests.diff +++ /dev/null @@ -1,489 +0,0 @@ -From: Benjamin Barenblat -Subject: Stop testing with double-double random variables -Forwarded: yes -Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/ab21820d47e4f83875dda008b600514d3520fd35 - -On POWER, long double is often represented as a pair of doubles added -together (double-double arithmetic). We’ve already special-cased -double-double arithmetic in a number of tests, but compiler -bugs [1, 2, 3] have now triggered both false positives and false -negatives, which suggests testing with double doubles is unlikely to -yield useful signal. Remove the special casing and detect if we’re on a -double-double system; if so, just don’t test long doubles. - -[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99048 -[2] https://bugs.llvm.org/show_bug.cgi?id=49131 -[3] https://bugs.llvm.org/show_bug.cgi?id=49132 - -The author works at Google. Upstream applied this patch as Piper -revision 360793161 and exported it to GitHub; the the Applied-Upstream -URL above points to the exported commit. - ---- a/CMake/AbseilDll.cmake -+++ b/CMake/AbseilDll.cmake -@@ -126,6 +126,7 @@ set(ABSL_INTERNAL_DLL_FILES - "meta/type_traits.h" - "numeric/int128.cc" - "numeric/int128.h" -+ "numeric/internal/representation.h" - "random/bernoulli_distribution.h" - "random/beta_distribution.h" - "random/bit_gen_ref.h" ---- a/absl/numeric/BUILD.bazel -+++ b/absl/numeric/BUILD.bazel -@@ -72,3 +72,15 @@ - "@com_github_google_benchmark//:benchmark_main", - ], - ) -+ -+cc_library( -+ name = "representation", -+ hdrs = [ -+ "internal/representation.h", -+ ], -+ copts = ABSL_DEFAULT_COPTS, -+ linkopts = ABSL_DEFAULT_LINKOPTS, -+ deps = [ -+ "//absl/base:config", -+ ], -+) ---- a/absl/numeric/CMakeLists.txt -+++ b/absl/numeric/CMakeLists.txt -@@ -59,3 +59,15 @@ - absl::int128 - PUBLIC - ) -+ -+absl_cc_library( -+ NAME -+ numeric_representation -+ HDRS -+ "internal/representation.h" -+ COPTS -+ ${ABSL_DEFAULT_COPTS} -+ DEPS -+ absl::config -+ PUBLIC -+) ---- /dev/null -+++ b/absl/numeric/internal/representation.h -@@ -0,0 +1,55 @@ -+// Copyright 2021 The Abseil Authors -+// -+// Licensed under the Apache License, Version 2.0 (the "License"); -+// you may not use this file except in compliance with the License. -+// You may obtain a copy of the License at -+// -+// https://www.apache.org/licenses/LICENSE-2.0 -+// -+// Unless required by applicable law or agreed to in writing, software -+// distributed under the License is distributed on an "AS IS" BASIS, -+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+// See the License for the specific language governing permissions and -+// limitations under the License. -+ -+#ifndef ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ -+#define ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ -+ -+#include -+ -+#include "absl/base/config.h" -+ -+namespace absl { -+ABSL_NAMESPACE_BEGIN -+namespace numeric_internal { -+ -+// Returns true iff long double is represented as a pair of doubles added -+// together. -+inline constexpr bool IsDoubleDouble() { -+ // A double-double value always has exactly twice the precision of a double -+ // value--one double carries the high digits and one double carries the low -+ // digits. This property is not shared with any other common floating-point -+ // representation, so this test won't trigger false positives. For reference, -+ // this table gives the number of bits of precision of each common -+ // floating-point representation: -+ // -+ // type precision -+ // IEEE single 24 b -+ // IEEE double 53 -+ // x86 long double 64 -+ // double-double 106 -+ // IEEE quadruple 113 -+ // -+ // Note in particular that a quadruple-precision float has greater precision -+ // than a double-double float despite taking up the same amount of memory; the -+ // quad has more of its bits allocated to the mantissa than the double-double -+ // has. -+ return std::numeric_limits::digits == -+ 2 * std::numeric_limits::digits; -+} -+ -+} // namespace numeric_internal -+ABSL_NAMESPACE_END -+} // namespace absl -+ -+#endif // ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ ---- a/absl/random/BUILD.bazel -+++ b/absl/random/BUILD.bazel -@@ -187,6 +187,7 @@ cc_test(name = "beta_distribution_test", - ":distributions", - ":random", - "//absl/base:raw_logging_internal", -+ "//absl/numeric:representation", - "//absl/random/internal:distribution_test_util", - "//absl/random/internal:pcg_engine", - "//absl/random/internal:sequence_urbg", -@@ -307,6 +308,7 @@ cc_test(name = "exponential_distribution_test", - ":random", - "//absl/base:core_headers", - "//absl/base:raw_logging_internal", -+ "//absl/numeric:representation", - "//absl/random/internal:distribution_test_util", - "//absl/random/internal:pcg_engine", - "//absl/random/internal:sequence_urbg", -@@ -330,6 +332,7 @@ cc_test(name = "gaussian_distribution_test", - ":random", - "//absl/base:core_headers", - "//absl/base:raw_logging_internal", -+ "//absl/numeric:representation", - "//absl/random/internal:distribution_test_util", - "//absl/random/internal:sequence_urbg", - "//absl/strings", -@@ -376,6 +379,7 @@ cc_test(name = "uniform_real_distribution_test", - ":distributions", - ":random", - "//absl/base:raw_logging_internal", -+ "//absl/numeric:representation", - "//absl/random/internal:distribution_test_util", - "//absl/random/internal:pcg_engine", - "//absl/random/internal:sequence_urbg", ---- a/absl/random/CMakeLists.txt -+++ b/absl/random/CMakeLists.txt -@@ -259,6 +259,7 @@ absl_cc_test(NAME random_beta_distribution_test - LINKOPTS - ${ABSL_DEFAULT_LINKOPTS} - DEPS -+ absl::numeric_representation - absl::random_distributions - absl::random_random - absl::random_internal_distribution_test_util -@@ -381,6 +382,7 @@ absl_cc_test(NAME random_exponential_distribution_test - ${ABSL_DEFAULT_LINKOPTS} - DEPS - absl::core_headers -+ absl::numeric_representation - absl::random_distributions - absl::random_internal_distribution_test_util - absl::random_internal_pcg_engine -@@ -404,6 +406,7 @@ absl_cc_test(NAME random_gaussian_distribution_test - ${ABSL_DEFAULT_LINKOPTS} - DEPS - absl::core_headers -+ absl::numeric_representation - absl::random_distributions - absl::random_internal_distribution_test_util - absl::random_internal_sequence_urbg -@@ -446,6 +449,7 @@ absl_cc_test(NAME random_uniform_real_distribution_test - LINKOPTS - ${ABSL_DEFAULT_LINKOPTS} - DEPS -+ absl::numeric_representation - absl::random_distributions - absl::random_internal_distribution_test_util - absl::random_internal_pcg_engine ---- a/absl/random/beta_distribution_test.cc -+++ b/absl/random/beta_distribution_test.cc -@@ -21,12 +21,14 @@ - #include - #include - #include -+#include - #include - #include - - #include "gmock/gmock.h" - #include "gtest/gtest.h" - #include "absl/base/internal/raw_logging.h" -+#include "absl/numeric/internal/representation.h" - #include "absl/random/internal/chi_square.h" - #include "absl/random/internal/distribution_test_util.h" - #include "absl/random/internal/pcg_engine.h" -@@ -42,7 +44,15 @@ - template - class BetaDistributionInterfaceTest : public ::testing::Test {}; - --using RealTypes = ::testing::Types; -+// double-double arithmetic is not supported well by either GCC or Clang; see -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99048, -+// https://bugs.llvm.org/show_bug.cgi?id=49131, and -+// https://bugs.llvm.org/show_bug.cgi?id=49132. Don't bother running these tests -+// with double doubles until compiler support is better. -+using RealTypes = -+ std::conditional, -+ ::testing::Types>::type; - TYPED_TEST_CASE(BetaDistributionInterfaceTest, RealTypes); - - TYPED_TEST(BetaDistributionInterfaceTest, SerializeTest) { -@@ -53,9 +63,6 @@ TYPED_TEST(BetaDistributionInterfaceTest, SerializeTest { - const TypeParam kLargeA = - std::exp(std::log((std::numeric_limits::max)()) - - std::log(std::log((std::numeric_limits::max)()))); -- const TypeParam kLargeAPPC = std::exp( -- std::log((std::numeric_limits::max)()) - -- std::log(std::log((std::numeric_limits::max)())) - 10.0f); - using param_type = typename absl::beta_distribution::param_type; - - constexpr int kCount = 1000; -@@ -76,9 +83,6 @@ TYPED_TEST(BetaDistributionInterfaceTest, SerializeTest { - kLargeA, // - std::nextafter(kLargeA, TypeParam(0)), // - std::nextafter(kLargeA, std::numeric_limits::max()), -- kLargeAPPC, // -- std::nextafter(kLargeAPPC, TypeParam(0)), -- std::nextafter(kLargeAPPC, std::numeric_limits::max()), - // Boundary cases. - std::numeric_limits::max(), - std::numeric_limits::epsilon(), -@@ -125,28 +129,6 @@ TYPED_TEST(BetaDistributionInterfaceTest, SerializeTest { - - ss >> after; - --#if defined(__powerpc64__) || defined(__PPC64__) || defined(__powerpc__) || \ -- defined(__ppc__) || defined(__PPC__) -- if (std::is_same::value) { -- // Roundtripping floating point values requires sufficient precision -- // to reconstruct the exact value. It turns out that long double -- // has some errors doing this on ppc. -- if (alpha <= std::numeric_limits::max() && -- alpha >= std::numeric_limits::lowest()) { -- EXPECT_EQ(static_cast(before.alpha()), -- static_cast(after.alpha())) -- << ss.str(); -- } -- if (beta <= std::numeric_limits::max() && -- beta >= std::numeric_limits::lowest()) { -- EXPECT_EQ(static_cast(before.beta()), -- static_cast(after.beta())) -- << ss.str(); -- } -- continue; -- } --#endif -- - EXPECT_EQ(before.alpha(), after.alpha()); - EXPECT_EQ(before.beta(), after.beta()); - EXPECT_EQ(before, after) // ---- a/absl/random/exponential_distribution_test.cc -+++ b/absl/random/exponential_distribution_test.cc -@@ -30,6 +30,7 @@ - #include "gtest/gtest.h" - #include "absl/base/internal/raw_logging.h" - #include "absl/base/macros.h" -+#include "absl/numeric/internal/representation.h" - #include "absl/random/internal/chi_square.h" - #include "absl/random/internal/distribution_test_util.h" - #include "absl/random/internal/pcg_engine.h" -@@ -50,7 +51,15 @@ - #if defined(__EMSCRIPTEN__) - using RealTypes = ::testing::Types; - #else --using RealTypes = ::testing::Types; -+// double-double arithmetic is not supported well by either GCC or Clang; see -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99048, -+// https://bugs.llvm.org/show_bug.cgi?id=49131, and -+// https://bugs.llvm.org/show_bug.cgi?id=49132. Don't bother running these tests -+// with double doubles until compiler support is better. -+using RealTypes = -+ std::conditional, -+ ::testing::Types>::type; - #endif // defined(__EMSCRIPTEN__) - TYPED_TEST_CASE(ExponentialDistributionTypedTest, RealTypes); - -@@ -130,23 +139,6 @@ TYPED_TEST(ExponentialDistributionTypedTest, SerializeTest) { - - ss >> after; - --#if defined(__powerpc64__) || defined(__PPC64__) || defined(__powerpc__) || \ -- defined(__ppc__) || defined(__PPC__) -- if (std::is_same::value) { -- // Roundtripping floating point values requires sufficient precision to -- // reconstruct the exact value. It turns out that long double has some -- // errors doing this on ppc, particularly for values -- // near {1.0 +/- epsilon}. -- if (lambda <= std::numeric_limits::max() && -- lambda >= std::numeric_limits::lowest()) { -- EXPECT_EQ(static_cast(before.lambda()), -- static_cast(after.lambda())) -- << ss.str(); -- } -- continue; -- } --#endif -- - EXPECT_EQ(before.lambda(), after.lambda()) // - << ss.str() << " " // - << (ss.good() ? "good " : "") // ---- a/absl/random/gaussian_distribution_test.cc -+++ b/absl/random/gaussian_distribution_test.cc -@@ -21,12 +21,14 @@ - #include - #include - #include -+#include - #include - - #include "gmock/gmock.h" - #include "gtest/gtest.h" - #include "absl/base/internal/raw_logging.h" - #include "absl/base/macros.h" -+#include "absl/numeric/internal/representation.h" - #include "absl/random/internal/chi_square.h" - #include "absl/random/internal/distribution_test_util.h" - #include "absl/random/internal/sequence_urbg.h" -@@ -43,7 +45,15 @@ - template - class GaussianDistributionInterfaceTest : public ::testing::Test {}; - --using RealTypes = ::testing::Types; -+// double-double arithmetic is not supported well by either GCC or Clang; see -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99048, -+// https://bugs.llvm.org/show_bug.cgi?id=49131, and -+// https://bugs.llvm.org/show_bug.cgi?id=49132. Don't bother running these tests -+// with double doubles until compiler support is better. -+using RealTypes = -+ std::conditional, -+ ::testing::Types>::type; - TYPED_TEST_CASE(GaussianDistributionInterfaceTest, RealTypes); - - TYPED_TEST(GaussianDistributionInterfaceTest, SerializeTest) { -@@ -129,32 +139,6 @@ TYPED_TEST(GaussianDistributionInterfaceTest, SerializeTest) { - - ss >> after; - --#if defined(__powerpc64__) || defined(__PPC64__) || defined(__powerpc__) || \ -- defined(__ppc__) || defined(__PPC__) || defined(__EMSCRIPTEN__) -- if (std::is_same::value) { -- // Roundtripping floating point values requires sufficient precision -- // to reconstruct the exact value. It turns out that long double -- // has some errors doing this on ppc, particularly for values -- // near {1.0 +/- epsilon}. -- // -- // Emscripten is even worse, implementing long double as a 128-bit -- // type, but shipping with a strtold() that doesn't support that. -- if (mean <= std::numeric_limits::max() && -- mean >= std::numeric_limits::lowest()) { -- EXPECT_EQ(static_cast(before.mean()), -- static_cast(after.mean())) -- << ss.str(); -- } -- if (stddev <= std::numeric_limits::max() && -- stddev >= std::numeric_limits::lowest()) { -- EXPECT_EQ(static_cast(before.stddev()), -- static_cast(after.stddev())) -- << ss.str(); -- } -- continue; -- } --#endif -- - EXPECT_EQ(before.mean(), after.mean()); - EXPECT_EQ(before.stddev(), after.stddev()) // - << ss.str() << " " // ---- a/absl/random/uniform_real_distribution_test.cc -+++ b/absl/random/uniform_real_distribution_test.cc -@@ -20,11 +20,13 @@ - #include - #include - #include -+#include - #include - - #include "gmock/gmock.h" - #include "gtest/gtest.h" - #include "absl/base/internal/raw_logging.h" -+#include "absl/numeric/internal/representation.h" - #include "absl/random/internal/chi_square.h" - #include "absl/random/internal/distribution_test_util.h" - #include "absl/random/internal/pcg_engine.h" -@@ -58,7 +60,15 @@ - #if defined(__EMSCRIPTEN__) - using RealTypes = ::testing::Types; - #else --using RealTypes = ::testing::Types; -+// double-double arithmetic is not supported well by either GCC or Clang; see -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99048, -+// https://bugs.llvm.org/show_bug.cgi?id=49131, and -+// https://bugs.llvm.org/show_bug.cgi?id=49132. Don't bother running these tests -+// with double doubles until compiler support is better. -+using RealTypes = -+ std::conditional, -+ ::testing::Types>::type; - #endif // defined(__EMSCRIPTEN__) - - TYPED_TEST_SUITE(UniformRealDistributionTest, RealTypes); ---- a/absl/strings/BUILD.bazel -+++ b/absl/strings/BUILD.bazel -@@ -645,6 +645,7 @@ cc_library(name = "str_format_internal", - "//absl/functional:function_ref", - "//absl/meta:type_traits", - "//absl/numeric:int128", -+ "//absl/numeric:representation", - "//absl/types:optional", - "//absl/types:span", - ], ---- a/absl/strings/CMakeLists.txt -+++ b/absl/strings/CMakeLists.txt -@@ -396,6 +396,7 @@ absl_cc_library(NAME str_format_internal - absl::strings - absl::config - absl::core_headers -+ absl::numeric_representation - absl::type_traits - absl::int128 - absl::span ---- a/absl/strings/internal/str_format/float_conversion.cc -+++ b/absl/strings/internal/str_format/float_conversion.cc -@@ -15,6 +15,7 @@ - #include "absl/functional/function_ref.h" - #include "absl/meta/type_traits.h" - #include "absl/numeric/int128.h" -+#include "absl/numeric/internal/representation.h" - #include "absl/strings/numbers.h" - #include "absl/types/optional.h" - #include "absl/types/span.h" -@@ -25,6 +26,8 @@ - - namespace { - -+using ::absl::numeric_internal::IsDoubleDouble; -+ - // The code below wants to avoid heap allocations. - // To do so it needs to allocate memory on the stack. - // `StackArray` will allocate memory on the stack in the form of a uint32_t -@@ -98,13 +101,6 @@ - return next_carry % divisor; - } - --constexpr bool IsDoubleDouble() { -- // This is the `double-double` representation of `long double`. -- // We do not handle it natively. Fallback to snprintf. -- return std::numeric_limits::digits == -- 2 * std::numeric_limits::digits; --} -- - using MaxFloatType = - typename std::conditional::type; - -@@ -1391,6 +1387,8 @@ - bool ConvertFloatImpl(long double v, const FormatConversionSpecImpl &conv, - FormatSinkImpl *sink) { - if (IsDoubleDouble()) { -+ // This is the `double-double` representation of `long double`. We do not -+ // handle it natively. Fallback to snprintf. - return FallbackToSnprintf(v, conv, sink); - } - diff --git a/debian/patches/endian-hash.diff b/debian/patches/endian-hash.diff deleted file mode 100644 index 01c1b6b0..00000000 --- a/debian/patches/endian-hash.diff +++ /dev/null @@ -1,111 +0,0 @@ -From: Benjamin Barenblat -Subject: Remove endian-sensitivity from hash slow path -Forwarded: yes -Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/9c6a50fdd80bb39fabd95faeda84f04062685ff3 - -Prior to this commit, the Abseil hash fast path was endian-agnostic, but -the slow path assumed a little-endian platform. Change the slow path to -be endian-correct, ensuring that values produced by the fast and slow -paths are equal even on big-endian systems. - -The author works at Google. Upstream applied this patch as Piper revision -355424258 and exported it to GitHub; the Applied-Upstream URL above points to -the exported commit. - ---- a/absl/hash/BUILD.bazel -+++ b/absl/hash/BUILD.bazel -@@ -37,6 +37,7 @@ cc_library(name = "hash", - linkopts = ABSL_DEFAULT_LINKOPTS, - deps = [ - ":city", -+ "//absl/base:config", - "//absl/base:core_headers", - "//absl/base:endian", - "//absl/container:fixed_array", ---- a/absl/hash/CMakeLists.txt -+++ b/absl/hash/CMakeLists.txt -@@ -25,6 +25,7 @@ absl_cc_library(NAME hash - COPTS - ${ABSL_DEFAULT_COPTS} - DEPS -+ absl::config - absl::core_headers - absl::endian - absl::fixed_array ---- a/absl/hash/internal/hash.h -+++ b/absl/hash/internal/hash.h -@@ -38,7 +38,8 @@ - #include - #include - --#include "absl/base/internal/endian.h" -+#include "absl/base/config.h" -+#include "absl/base/internal/unaligned_access.h" - #include "absl/base/port.h" - #include "absl/container/fixed_array.h" - #include "absl/meta/type_traits.h" -@@ -804,26 +805,54 @@ class ABSL_DLL CityHashState - size_t len); - - // Reads 9 to 16 bytes from p. -- // The first 8 bytes are in .first, the rest (zero padded) bytes are in -- // .second. -+ // The least significant 8 bytes are in .first, the rest (zero padded) bytes -+ // are in .second. - static std::pair Read9To16(const unsigned char* p, - size_t len) { -- uint64_t high = little_endian::Load64(p + len - 8); -- return {little_endian::Load64(p), high >> (128 - len * 8)}; -+ uint64_t low_mem = absl::base_internal::UnalignedLoad64(p); -+ uint64_t high_mem = absl::base_internal::UnalignedLoad64(p + len - 8); -+#ifdef ABSL_IS_LITTLE_ENDIAN -+ uint64_t most_significant = high_mem; -+ uint64_t least_significant = low_mem; -+#else -+ uint64_t most_significant = low_mem; -+ uint64_t least_significant = high_mem; -+#endif -+ return {least_significant, most_significant >> (128 - len * 8)}; - } - - // Reads 4 to 8 bytes from p. Zero pads to fill uint64_t. - static uint64_t Read4To8(const unsigned char* p, size_t len) { -- return (static_cast(little_endian::Load32(p + len - 4)) -- << (len - 4) * 8) | -- little_endian::Load32(p); -+ uint32_t low_mem = absl::base_internal::UnalignedLoad32(p); -+ uint32_t high_mem = absl::base_internal::UnalignedLoad32(p + len - 4); -+#ifdef ABSL_IS_LITTLE_ENDIAN -+ uint32_t most_significant = high_mem; -+ uint32_t least_significant = low_mem; -+#else -+ uint32_t most_significant = low_mem; -+ uint32_t least_significant = high_mem; -+#endif -+ return (static_cast(most_significant) << (len - 4) * 8) | -+ least_significant; - } - - // Reads 1 to 3 bytes from p. Zero pads to fill uint32_t. - static uint32_t Read1To3(const unsigned char* p, size_t len) { -- return static_cast((p[0]) | // -- (p[len / 2] << (len / 2 * 8)) | // -- (p[len - 1] << ((len - 1) * 8))); -+ unsigned char mem0 = p[0]; -+ unsigned char mem1 = p[len / 2]; -+ unsigned char mem2 = p[len - 1]; -+#ifdef ABSL_IS_LITTLE_ENDIAN -+ unsigned char significant2 = mem2; -+ unsigned char significant1 = mem1; -+ unsigned char significant0 = mem0; -+#else -+ unsigned char significant2 = mem0; -+ unsigned char significant1 = mem1; -+ unsigned char significant0 = mem2; -+#endif -+ return static_cast(significant0 | // -+ (significant1 << (len / 2 * 8)) | // -+ (significant2 << ((len - 1) * 8))); - } - - ABSL_ATTRIBUTE_ALWAYS_INLINE static uint64_t Mix(uint64_t state, uint64_t v) { diff --git a/debian/patches/endian-random.diff b/debian/patches/endian-random.diff deleted file mode 100644 index 9fe2b166..00000000 --- a/debian/patches/endian-random.diff +++ /dev/null @@ -1,249 +0,0 @@ -From: Benjamin Barenblat -Subject: Remove endian-sensitivity from Abseil's RNG -Forwarded: yes -Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/c36d825d9a5443f81d2656685ae021d6326da90c - -Ensure that the Abseil random number generator produces identical output -on both big- and little-endian platforms by byte-swapping appropriately -on big-endian systems. - -The author works at Google. Upstream applied this patch as Piper -revision 355635051 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. - ---- a/absl/base/BUILD.bazel -+++ b/absl/base/BUILD.bazel -@@ -479,6 +479,7 @@ - copts = ABSL_DEFAULT_COPTS, - linkopts = ABSL_DEFAULT_LINKOPTS, - deps = [ -+ ":base", - ":config", - ":core_headers", - ], ---- a/absl/base/CMakeLists.txt -+++ b/absl/base/CMakeLists.txt -@@ -418,6 +418,7 @@ - COPTS - ${ABSL_DEFAULT_COPTS} - DEPS -+ absl::base - absl::config - absl::core_headers - PUBLIC ---- a/absl/base/internal/endian.h -+++ b/absl/base/internal/endian.h -@@ -26,6 +26,7 @@ - #endif - - #include -+#include "absl/base/casts.h" - #include "absl/base/config.h" - #include "absl/base/internal/unaligned_access.h" - #include "absl/base/port.h" -@@ -173,6 +174,36 @@ - - #endif /* ENDIAN */ - -+inline uint8_t FromHost(uint8_t x) { return x; } -+inline uint16_t FromHost(uint16_t x) { return FromHost16(x); } -+inline uint32_t FromHost(uint32_t x) { return FromHost32(x); } -+inline uint64_t FromHost(uint64_t x) { return FromHost64(x); } -+inline uint8_t ToHost(uint8_t x) { return x; } -+inline uint16_t ToHost(uint16_t x) { return ToHost16(x); } -+inline uint32_t ToHost(uint32_t x) { return ToHost32(x); } -+inline uint64_t ToHost(uint64_t x) { return ToHost64(x); } -+ -+inline int8_t FromHost(int8_t x) { return x; } -+inline int16_t FromHost(int16_t x) { -+ return bit_cast(FromHost16(bit_cast(x))); -+} -+inline int32_t FromHost(int32_t x) { -+ return bit_cast(FromHost32(bit_cast(x))); -+} -+inline int64_t FromHost(int64_t x) { -+ return bit_cast(FromHost64(bit_cast(x))); -+} -+inline int8_t ToHost(int8_t x) { return x; } -+inline int16_t ToHost(int16_t x) { -+ return bit_cast(ToHost16(bit_cast(x))); -+} -+inline int32_t ToHost(int32_t x) { -+ return bit_cast(ToHost32(bit_cast(x))); -+} -+inline int64_t ToHost(int64_t x) { -+ return bit_cast(ToHost64(bit_cast(x))); -+} -+ - // Functions to do unaligned loads and stores in little-endian order. - inline uint16_t Load16(const void *p) { - return ToHost16(ABSL_INTERNAL_UNALIGNED_LOAD16(p)); -@@ -233,6 +264,36 @@ - - #endif /* ENDIAN */ - -+inline uint8_t FromHost(uint8_t x) { return x; } -+inline uint16_t FromHost(uint16_t x) { return FromHost16(x); } -+inline uint32_t FromHost(uint32_t x) { return FromHost32(x); } -+inline uint64_t FromHost(uint64_t x) { return FromHost64(x); } -+inline uint8_t ToHost(uint8_t x) { return x; } -+inline uint16_t ToHost(uint16_t x) { return ToHost16(x); } -+inline uint32_t ToHost(uint32_t x) { return ToHost32(x); } -+inline uint64_t ToHost(uint64_t x) { return ToHost64(x); } -+ -+inline int8_t FromHost(int8_t x) { return x; } -+inline int16_t FromHost(int16_t x) { -+ return bit_cast(FromHost16(bit_cast(x))); -+} -+inline int32_t FromHost(int32_t x) { -+ return bit_cast(FromHost32(bit_cast(x))); -+} -+inline int64_t FromHost(int64_t x) { -+ return bit_cast(FromHost64(bit_cast(x))); -+} -+inline int8_t ToHost(int8_t x) { return x; } -+inline int16_t ToHost(int16_t x) { -+ return bit_cast(ToHost16(bit_cast(x))); -+} -+inline int32_t ToHost(int32_t x) { -+ return bit_cast(ToHost32(bit_cast(x))); -+} -+inline int64_t ToHost(int64_t x) { -+ return bit_cast(ToHost64(bit_cast(x))); -+} -+ - // Functions to do unaligned loads and stores in big-endian order. - inline uint16_t Load16(const void *p) { - return ToHost16(ABSL_INTERNAL_UNALIGNED_LOAD16(p)); ---- a/absl/random/CMakeLists.txt -+++ b/absl/random/CMakeLists.txt -@@ -611,6 +611,7 @@ - ${ABSL_DEFAULT_LINKOPTS} - DEPS - absl::config -+ absl::endian - TESTONLY - ) - -@@ -758,6 +759,7 @@ - LINKOPTS - ${ABSL_DEFAULT_LINKOPTS} - DEPS -+ absl::endian - absl::random_internal_iostream_state_saver - absl::random_internal_randen - absl::raw_logging_internal -@@ -1119,6 +1121,7 @@ - LINKOPTS - ${ABSL_DEFAULT_LINKOPTS} - DEPS -+ absl::endian - absl::random_internal_randen_slow - gtest_main - ) ---- a/absl/random/internal/BUILD.bazel -+++ b/absl/random/internal/BUILD.bazel -@@ -124,7 +124,10 @@ - ], - copts = ABSL_DEFAULT_COPTS, - linkopts = ABSL_DEFAULT_LINKOPTS, -- deps = ["//absl/base:config"], -+ deps = [ -+ "//absl/base:config", -+ "//absl/base:endian", -+ ], - ) - - cc_library( -@@ -241,6 +244,7 @@ - deps = [ - ":iostream_state_saver", - ":randen", -+ "//absl/base:endian", - "//absl/meta:type_traits", - ], - ) -@@ -606,6 +610,7 @@ - ":platform", - ":randen_slow", - "@com_google_googletest//:gtest_main", -+ "//absl/base:endian", - ], - ) - ---- a/absl/random/internal/explicit_seed_seq.h -+++ b/absl/random/internal/explicit_seed_seq.h -@@ -23,6 +23,7 @@ - #include - - #include "absl/base/config.h" -+#include "absl/base/internal/endian.h" - - namespace absl { - ABSL_NAMESPACE_BEGIN -@@ -73,7 +74,7 @@ - template - void generate(OutIterator begin, OutIterator end) { - for (size_t index = 0; begin != end; begin++) { -- *begin = state_.empty() ? 0 : state_[index++]; -+ *begin = state_.empty() ? 0 : little_endian::FromHost32(state_[index++]); - if (index >= state_.size()) { - index = 0; - } ---- a/absl/random/internal/randen_engine.h -+++ b/absl/random/internal/randen_engine.h -@@ -23,6 +23,7 @@ - #include - #include - -+#include "absl/base/internal/endian.h" - #include "absl/meta/type_traits.h" - #include "absl/random/internal/iostream_state_saver.h" - #include "absl/random/internal/randen.h" -@@ -76,7 +77,7 @@ - impl_.Generate(state_); - } - -- return state_[next_++]; -+ return little_endian::ToHost(state_[next_++]); - } - - template -@@ -181,7 +182,8 @@ - // In the case that `elem` is `uint8_t`, it must be cast to something - // larger so that it prints as an integer rather than a character. For - // simplicity, apply the cast all circumstances. -- os << static_cast(elem) << os.fill(); -+ os << static_cast(little_endian::FromHost(elem)) -+ << os.fill(); - } - os << engine.next_; - return os; -@@ -200,7 +202,7 @@ - // necessary to read a wider type and then cast it to uint8_t. - numeric_type value; - is >> value; -- elem = static_cast(value); -+ elem = little_endian::ToHost(static_cast(value)); - } - is >> next; - if (is.fail()) { ---- a/absl/random/internal/randen_slow_test.cc -+++ b/absl/random/internal/randen_slow_test.cc -@@ -17,6 +17,7 @@ - #include - - #include "gtest/gtest.h" -+#include "absl/base/internal/endian.h" - #include "absl/random/internal/randen_traits.h" - - namespace { -@@ -56,7 +57,7 @@ - - uint64_t* id = d.state; - for (const auto& elem : kGolden) { -- EXPECT_EQ(elem, *id++); -+ EXPECT_EQ(absl::little_endian::FromHost64(elem), *id++); - } - } - diff --git a/debian/patches/fix-hppa.diff b/debian/patches/fix-hppa.diff deleted file mode 100644 index 915efff4..00000000 --- a/debian/patches/fix-hppa.diff +++ /dev/null @@ -1,26 +0,0 @@ -From: John David Anglin -Subject: Fix build on hppa -Bug-Debian: https://bugs.debian.org/971768 -Reviewed-by: Benjamin Barenblat - ---- a/absl/base/internal/direct_mmap.h -+++ b/absl/base/internal/direct_mmap.h -@@ -74,6 +74,7 @@ - inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd, - off64_t offset) noexcept { - #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ -+ (defined(__hppa__) && !defined(__LP64__)) || \ - (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ - (defined(__PPC__) && !defined(__PPC64__)) || \ - (defined(__riscv) && __riscv_xlen == 32) || \ ---- a/absl/debugging/internal/examine_stack.cc -+++ b/absl/debugging/internal/examine_stack.cc -@@ -48,6 +48,8 @@ - return reinterpret_cast(context->uc_mcontext.pc); - #elif defined(__arm__) - return reinterpret_cast(context->uc_mcontext.arm_pc); -+#elif defined(__hppa__) -+ return reinterpret_cast(context->uc_mcontext.sc_iaoq[0]); - #elif defined(__i386__) - if (14 < ABSL_ARRAYSIZE(context->uc_mcontext.gregs)) - return reinterpret_cast(context->uc_mcontext.gregs[14]); diff --git a/debian/patches/fma-contraction.diff b/debian/patches/fma-contraction.diff deleted file mode 100644 index 95181a36..00000000 --- a/debian/patches/fma-contraction.diff +++ /dev/null @@ -1,63 +0,0 @@ -From: Benjamin Barenblat -Subject: Make tests tolerant of FMA contraction -Forwarded: yes -Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/b0735979d778a768caee207f01f327535cbd2140 - -Weaken Duration.ToDoubleSecondsCheckEdgeCases and -Duration.ToDoubleSecondsCheckRandom to make them less sensitive to fused -multiply/add contraction. - -The author works at Google. Upstream applied this patch as Piper -revision 360297653 and exported it to GitHub; the the Applied-Upstream URL -above points to the exported commit. - ---- a/absl/time/duration_test.cc -+++ b/absl/time/duration_test.cc -@@ -1369,10 +1369,13 @@ - EXPECT_THAT(ToTimeval(absl::Nanoseconds(2000)), TimevalMatcher(tv)); - } - --void VerifySameAsMul(double time_as_seconds, int* const misses) { -+void VerifyApproxSameAsMul(double time_as_seconds, int* const misses) { - auto direct_seconds = absl::Seconds(time_as_seconds); - auto mul_by_one_second = time_as_seconds * absl::Seconds(1); -- if (direct_seconds != mul_by_one_second) { -+ // These are expected to differ by up to one tick due to fused multiply/add -+ // contraction. -+ if (absl::AbsDuration(direct_seconds - mul_by_one_second) > -+ absl::time_internal::MakeDuration(0, 1u)) { - if (*misses > 10) return; - ASSERT_LE(++(*misses), 10) << "Too many errors, not reporting more."; - EXPECT_EQ(direct_seconds, mul_by_one_second) -@@ -1384,7 +1387,8 @@ - // For a variety of interesting durations, we find the exact point - // where one double converts to that duration, and the very next double - // converts to the next duration. For both of those points, verify that --// Seconds(point) returns the same duration as point * Seconds(1.0) -+// Seconds(point) returns a duration near point * Seconds(1.0). (They may -+// not be exactly equal due to fused multiply/add contraction.) - TEST(Duration, ToDoubleSecondsCheckEdgeCases) { - constexpr uint32_t kTicksPerSecond = absl::time_internal::kTicksPerSecond; - constexpr auto duration_tick = absl::time_internal::MakeDuration(0, 1u); -@@ -1423,8 +1427,8 @@ - } - // Now low_edge is the highest double that converts to Duration d, - // and high_edge is the lowest double that converts to Duration after_d. -- VerifySameAsMul(low_edge, &misses); -- VerifySameAsMul(high_edge, &misses); -+ VerifyApproxSameAsMul(low_edge, &misses); -+ VerifyApproxSameAsMul(high_edge, &misses); - } - } - } -@@ -1444,8 +1448,8 @@ - int misses = 0; - for (int i = 0; i < 1000000; ++i) { - double d = std::exp(uniform(gen)); -- VerifySameAsMul(d, &misses); -- VerifySameAsMul(-d, &misses); -+ VerifyApproxSameAsMul(d, &misses); -+ VerifyApproxSameAsMul(-d, &misses); - } - } - diff --git a/debian/patches/latomic.diff b/debian/patches/latomic.diff index d78c7469..50e170e4 100644 --- a/debian/patches/latomic.diff +++ b/debian/patches/latomic.diff @@ -9,7 +9,7 @@ if anything needs libatomic and add the DT_NEEDED entry where necessary. --- a/absl/copts/AbseilConfigureCopts.cmake +++ b/absl/copts/AbseilConfigureCopts.cmake -@@ -64,4 +64,8 @@ +@@ -63,4 +63,8 @@ set(ABSL_TEST_COPTS "") endif() diff --git a/debian/patches/nan-narrowing.diff b/debian/patches/nan-narrowing.diff deleted file mode 100644 index c7ec9325..00000000 --- a/debian/patches/nan-narrowing.diff +++ /dev/null @@ -1,25 +0,0 @@ -From: Benjamin Barenblat -Subject: Avoid libgcc -NaN narrowing bug -Forwarded: yes -Applied-Upstream: https://github.com/abseil/abseil-cpp/commit/1bae23e32ba1f1af7c7d1488a69a351ec96dc98d - -When testing -NaN parsing, avoid narrowing -NaN from double to float. This -avoids a bug in libgcc (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98251). - -The author works at Google. Upstream applied this patch as Piper revision -347654751 and exported it to GitHub; the Applied-Upstream URL above points to -the exported commit. - ---- a/absl/strings/charconv_test.cc -+++ b/absl/strings/charconv_test.cc -@@ -653,7 +653,9 @@ TEST(FromChars, NaNFloats) { - negative_from_chars_float); - EXPECT_TRUE(std::signbit(negative_from_chars_float)); - EXPECT_FALSE(Identical(negative_from_chars_float, from_chars_float)); -- from_chars_float = std::copysign(from_chars_float, -1.0); -+ // Use the (float, float) overload of std::copysign to prevent narrowing; -+ // see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98251. -+ from_chars_float = std::copysign(from_chars_float, -1.0f); - EXPECT_TRUE(Identical(negative_from_chars_float, from_chars_float)); - } - } diff --git a/debian/patches/ppc-float-conversion.diff b/debian/patches/ppc-float-conversion.diff deleted file mode 100644 index f0ff9595..00000000 --- a/debian/patches/ppc-float-conversion.diff +++ /dev/null @@ -1,268 +0,0 @@ -From: Samuel Benzaquen -Subject: Fix float conversion for PPC. -Origin: backport, https://github.com/abseil/abseil-cpp/commit/c36d825d9a5443f81d2656685ae021d6326da90c - -In PPC `long double` is a double-double representation which behaves weirdly -wrt numeric_limits. Don't take `long double` into account when we are not -handling `long double` natively anyway. - -Fix the convert test to always run the conversion even if we are not going to -compare against libc's printf result. This allows exercising the code itself to -make sure we don't trigger assertions or UB found by sanitizers. - -The author works at Google. Upstream applied this patch as Piper revision -355857729 and exported it to GitHub; the Applied-Upstream URL above points to -the exported commit. - ---- a/absl/strings/internal/str_format/convert_test.cc -+++ b/absl/strings/internal/str_format/convert_test.cc -@@ -540,7 +540,8 @@ - } - - template --void TestWithMultipleFormatsHelper(const std::vector &floats) { -+void TestWithMultipleFormatsHelper(const std::vector &floats, -+ const std::set &skip_verify) { - const NativePrintfTraits &native_traits = VerifyNativeImplementation(); - // Reserve the space to ensure we don't allocate memory in the output itself. - std::string str_format_result; -@@ -588,7 +589,16 @@ - AppendPack(&str_format_result, format, absl::MakeSpan(args)); - } - -- if (string_printf_result != str_format_result) { -+#ifdef _MSC_VER -+ // MSVC has a different rounding policy than us so we can't test our -+ // implementation against the native one there. -+ continue; -+#elif defined(__APPLE__) -+ // Apple formats NaN differently (+nan) vs. (nan) -+ if (std::isnan(d)) continue; -+#endif -+ if (string_printf_result != str_format_result && -+ skip_verify.find(d) == skip_verify.end()) { - // We use ASSERT_EQ here because failures are usually correlated and a - // bug would print way too many failed expectations causing the test - // to time out. -@@ -602,12 +612,6 @@ - } - - TEST_F(FormatConvertTest, Float) { --#ifdef _MSC_VER -- // MSVC has a different rounding policy than us so we can't test our -- // implementation against the native one there. -- return; --#endif // _MSC_VER -- - std::vector floats = {0.0f, - -0.0f, - .9999999f, -@@ -621,7 +625,8 @@ - std::numeric_limits::epsilon(), - std::numeric_limits::epsilon() + 1.0f, - std::numeric_limits::infinity(), -- -std::numeric_limits::infinity()}; -+ -std::numeric_limits::infinity(), -+ std::nanf("")}; - - // Some regression tests. - floats.push_back(0.999999989f); -@@ -650,21 +655,14 @@ - std::sort(floats.begin(), floats.end()); - floats.erase(std::unique(floats.begin(), floats.end()), floats.end()); - --#ifndef __APPLE__ -- // Apple formats NaN differently (+nan) vs. (nan) -- floats.push_back(std::nan("")); --#endif -- -- TestWithMultipleFormatsHelper(floats); -+ TestWithMultipleFormatsHelper(floats, {}); - } - - TEST_F(FormatConvertTest, Double) { --#ifdef _MSC_VER -- // MSVC has a different rounding policy than us so we can't test our -- // implementation against the native one there. -- return; --#endif // _MSC_VER -- -+ // For values that we know won't match the standard library implementation we -+ // skip verification, but still run the algorithm to catch asserts/sanitizer -+ // bugs. -+ std::set skip_verify; - std::vector doubles = {0.0, - -0.0, - .99999999999999, -@@ -678,7 +676,8 @@ - std::numeric_limits::epsilon(), - std::numeric_limits::epsilon() + 1, - std::numeric_limits::infinity(), -- -std::numeric_limits::infinity()}; -+ -std::numeric_limits::infinity(), -+ std::nan("")}; - - // Some regression tests. - doubles.push_back(0.99999999999999989); -@@ -708,33 +707,29 @@ - "5084551339423045832369032229481658085593321233482747978262041447231" - "68738177180919299881250404026184124858368.000000"; - -- if (!gcc_bug_22142) { -- for (int exp = -300; exp <= 300; ++exp) { -- const double all_ones_mantissa = 0x1fffffffffffff; -- doubles.push_back(std::ldexp(all_ones_mantissa, exp)); -+ for (int exp = -300; exp <= 300; ++exp) { -+ const double all_ones_mantissa = 0x1fffffffffffff; -+ doubles.push_back(std::ldexp(all_ones_mantissa, exp)); -+ if (gcc_bug_22142) { -+ skip_verify.insert(doubles.back()); - } - } - - if (gcc_bug_22142) { -- for (auto &d : doubles) { -- using L = std::numeric_limits; -- double d2 = std::abs(d); -- if (d2 == L::max() || d2 == L::min() || d2 == L::denorm_min()) { -- d = 0; -- } -- } -+ using L = std::numeric_limits; -+ skip_verify.insert(L::max()); -+ skip_verify.insert(L::min()); // NOLINT -+ skip_verify.insert(L::denorm_min()); -+ skip_verify.insert(-L::max()); -+ skip_verify.insert(-L::min()); // NOLINT -+ skip_verify.insert(-L::denorm_min()); - } - - // Remove duplicates to speed up the logic below. - std::sort(doubles.begin(), doubles.end()); - doubles.erase(std::unique(doubles.begin(), doubles.end()), doubles.end()); - --#ifndef __APPLE__ -- // Apple formats NaN differently (+nan) vs. (nan) -- doubles.push_back(std::nan("")); --#endif -- -- TestWithMultipleFormatsHelper(doubles); -+ TestWithMultipleFormatsHelper(doubles, skip_verify); - } - - TEST_F(FormatConvertTest, DoubleRound) { -@@ -1055,11 +1050,6 @@ - } - - TEST_F(FormatConvertTest, LongDouble) { --#ifdef _MSC_VER -- // MSVC has a different rounding policy than us so we can't test our -- // implementation against the native one there. -- return; --#endif // _MSC_VER - const NativePrintfTraits &native_traits = VerifyNativeImplementation(); - const char *const kFormats[] = {"%", "%.3", "%8.5", "%9", "%.5000", - "%.60", "%+", "% ", "%-10"}; -@@ -1120,10 +1110,18 @@ - for (auto d : doubles) { - FormatArgImpl arg(d); - UntypedFormatSpecImpl format(fmt_str); -+ std::string result = FormatPack(format, {&arg, 1}); -+ -+#ifdef _MSC_VER -+ // MSVC has a different rounding policy than us so we can't test our -+ // implementation against the native one there. -+ continue; -+#endif // _MSC_VER -+ - // We use ASSERT_EQ here because failures are usually correlated and a - // bug would print way too many failed expectations causing the test to - // time out. -- ASSERT_EQ(StrPrint(fmt_str.c_str(), d), FormatPack(format, {&arg, 1})) -+ ASSERT_EQ(StrPrint(fmt_str.c_str(), d), result) - << fmt_str << " " << StrPrint("%.18Lg", d) << " " - << StrPrint("%La", d) << " " << StrPrint("%.1080Lf", d); - } ---- a/absl/strings/internal/str_format/float_conversion.cc -+++ b/absl/strings/internal/str_format/float_conversion.cc -@@ -98,12 +98,22 @@ - return next_carry % divisor; - } - -+constexpr bool IsDoubleDouble() { -+ // This is the `double-double` representation of `long double`. -+ // We do not handle it natively. Fallback to snprintf. -+ return std::numeric_limits::digits == -+ 2 * std::numeric_limits::digits; -+} -+ -+using MaxFloatType = -+ typename std::conditional::type; -+ - // Generates the decimal representation for an integer of the form `v * 2^exp`, - // where `v` and `exp` are both positive integers. - // It generates the digits from the left (ie the most significant digit first) - // to allow for direct printing into the sink. - // --// Requires `0 <= exp` and `exp <= numeric_limits::max_exponent`. -+// Requires `0 <= exp` and `exp <= numeric_limits::max_exponent`. - class BinaryToDecimal { - static constexpr int ChunksNeeded(int exp) { - // We will left shift a uint128 by `exp` bits, so we need `128+exp` total -@@ -118,10 +128,10 @@ - static void RunConversion(uint128 v, int exp, - absl::FunctionRef f) { - assert(exp > 0); -- assert(exp <= std::numeric_limits::max_exponent); -+ assert(exp <= std::numeric_limits::max_exponent); - static_assert( - StackArray::kMaxCapacity >= -- ChunksNeeded(std::numeric_limits::max_exponent), -+ ChunksNeeded(std::numeric_limits::max_exponent), - ""); - - StackArray::RunWithCapacity( -@@ -218,14 +228,14 @@ - - // Converts a value of the form `x * 2^-exp` into a sequence of decimal digits. - // Requires `-exp < 0` and --// `-exp >= limits::min_exponent - limits::digits`. -+// `-exp >= limits::min_exponent - limits::digits`. - class FractionalDigitGenerator { - public: - // Run the conversion for `v * 2^exp` and call `f(generator)`. - // This function will allocate enough stack space to perform the conversion. - static void RunConversion( - uint128 v, int exp, absl::FunctionRef f) { -- using Limits = std::numeric_limits; -+ using Limits = std::numeric_limits; - assert(-exp < 0); - assert(-exp >= Limits::min_exponent - 128); - static_assert(StackArray::kMaxCapacity >= -@@ -858,10 +868,10 @@ - // This buffer holds the "0x1.ab1de3" portion of "0x1.ab1de3pe+2". Compute the - // size with long double which is the largest of the floats. - constexpr size_t kBufSizeForHexFloatRepr = -- 2 // 0x -- + std::numeric_limits::digits / 4 // number of hex digits -- + 1 // round up -- + 1; // "." (dot) -+ 2 // 0x -+ + std::numeric_limits::digits / 4 // number of hex digits -+ + 1 // round up -+ + 1; // "." (dot) - char digits_buffer[kBufSizeForHexFloatRepr]; - char *digits_iter = digits_buffer; - const char *const digits = -@@ -1380,10 +1390,7 @@ - - bool ConvertFloatImpl(long double v, const FormatConversionSpecImpl &conv, - FormatSinkImpl *sink) { -- if (std::numeric_limits::digits == -- 2 * std::numeric_limits::digits) { -- // This is the `double-double` representation of `long double`. -- // We do not handle it natively. Fallback to snprintf. -+ if (IsDoubleDouble()) { - return FallbackToSnprintf(v, conv, sink); - } - diff --git a/debian/patches/series b/debian/patches/series index efe60449..9dec17a0 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,11 +1,3 @@ configure.diff -fix-hppa.diff std-hash.diff latomic.diff -cpu-frequency.diff -nan-narrowing.diff -endian-hash.diff -endian-random.diff -ppc-float-conversion.diff -fma-contraction.diff -disable-double-double-tests.diff -- cgit v1.2.3