[PATCH] D31739: Add markup for libc++ dylib availability

Mehdi AMINI via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 5 20:04:40 PDT 2017


mehdi_amini created this revision.

Libc++ is used as a system library on macOS and iOS (amongst others). In order
for users to be able to compile a binary that is intended to be deployed to an
older version of the platform, clang provides the
`availability attribute <https://clang.llvm.org/docs/AttributeReference.html#availability>`_
that can be placed on declarations to describe the lifecycle of a symbol in the
library.

See docs/DesignDocs/AvailabilityMarkup.rst for more information.


https://reviews.llvm.org/D31739

Files:
  docs/DesignDocs/AvailabilityMarkup.rst
  docs/index.rst
  include/__config
  include/__locale
  include/exception
  include/experimental/dynarray
  include/experimental/optional
  include/future
  include/istream
  include/memory
  include/new
  include/ostream
  include/shared_mutex
  include/streambuf
  include/typeinfo
  test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp
  test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp
  test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp
  test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp
  test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp
  test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp
  test/libcxx/debug/containers/db_associative_container_tests.pass.cpp
  test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp
  test/libcxx/debug/containers/db_string.pass.cpp
  test/libcxx/debug/containers/db_unord_container_tests.pass.cpp
  test/libcxx/debug/debug_abort.pass.cpp
  test/libcxx/debug/debug_throw.pass.cpp
  test/libcxx/debug/debug_throw_register.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default_throws_bad_alloc.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp
  test/libcxx/experimental/containers/sequences/dynarray/lit.local.cfg
  test/libcxx/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp
  test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp
  test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp
  test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp
  test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp
  test/std/experimental/any/any.class/any.assign/copy.pass.cpp
  test/std/experimental/any/any.class/any.assign/move.pass.cpp
  test/std/experimental/any/any.class/any.assign/value.pass.cpp
  test/std/experimental/any/any.class/any.cons/copy.pass.cpp
  test/std/experimental/any/any.class/any.cons/move.pass.cpp
  test/std/experimental/any/any.class/any.cons/value.pass.cpp
  test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp
  test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp
  test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp
  test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp
  test/std/experimental/any/any.nonmembers/swap.pass.cpp
  test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp
  test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp
  test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp
  test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp
  test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp
  test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp
  test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp
  test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp
  test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp
  test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp
  test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp
  test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp
  test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp
  test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp
  test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp
  test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp
  test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp
  test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp
  test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp
  test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp
  test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp
  test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp
  test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp
  test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp
  test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp
  test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp
  test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp
  test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp
  test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp
  test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp
  test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp
  test/std/numerics/rand/rand.device/ctor.pass.cpp
  test/std/numerics/rand/rand.device/eval.pass.cpp
  test/std/re/re.traits/translate_nocase.pass.cpp
  test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp
  test/std/strings/string.conversions/stof.pass.cpp
  test/std/strings/string.conversions/stol.pass.cpp
  test/std/strings/string.conversions/stoll.pass.cpp
  test/std/strings/string.conversions/stoul.pass.cpp
  test/std/strings/string.conversions/stoull.pass.cpp
  test/std/thread/futures/futures.future_error/what.pass.cpp
  test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg
  test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg
  test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg
  test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
  test/std/utilities/any/any.class/any.assign/copy.pass.cpp
  test/std/utilities/any/any.class/any.assign/move.pass.cpp
  test/std/utilities/any/any.class/any.assign/value.pass.cpp
  test/std/utilities/any/any.class/any.cons/copy.pass.cpp
  test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp
  test/std/utilities/any/any.class/any.cons/move.pass.cpp
  test/std/utilities/any/any.class/any.cons/value.pass.cpp
  test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp
  test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp
  test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp
  test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp
  test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp
  test/std/utilities/any/any.nonmembers/make_any.pass.cpp
  test/std/utilities/any/any.nonmembers/swap.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp
  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp
  test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp
  test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp
  test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp
  test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp
  test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp
  test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp
  test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp
  test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp
  test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp
  test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp
  test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp
  test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp
  test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp
  test/std/utilities/variant/variant.get/get_index.pass.cpp
  test/std/utilities/variant/variant.get/get_type.pass.cpp
  test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp
  test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp
  test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp
  test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
  test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp
  test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp
  test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp
  test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp
  test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp
  test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp
  test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp
  test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp
  test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp
  test/std/utilities/variant/variant.visit/visit.pass.cpp
  utils/libcxx/test/config.py

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D31739.94316.patch
Type: text/x-patch
Size: 138460 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170406/dcfc2f45/attachment-0001.bin>


More information about the cfe-commits mailing list