Skip to content

Commit 69be18c

Browse files
misccorobertmaynardwmaxey
authored
Symbol visibility is now invariant in regards to __cuda_std__ definition (#1832) (#1864)
* Explicitly ensure all chrono types have default visibility Now that steady_clock and system_clock have default visibility, dependent types such as sys_time also have default visibility as was requested by the usage of `_LIBCUDACXX_INLINE_VISIBILITY`. * Do not override `_LIBCUDACXX_FUNC_VIS` and `_LIBCUDACXX_TYPE_VIS` * Do not define `_LIBCUDACXX_TYPE_VIS` for windows * Unconditionally define `_LIBCUDACXX_FUNC_VIS` * Just drop `_LIBCUDACXX_FUNC_VIS` * Do not mess with the docs * Fix formatting --------- Co-authored-by: Robert Maynard <[email protected]> Co-authored-by: Wesley Maxey <[email protected]>
1 parent 323bfd7 commit 69be18c

File tree

6 files changed

+56
-70
lines changed

6 files changed

+56
-70
lines changed

libcudacxx/include/cuda/std/__functional/bind.h

+10-10
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,16 @@ struct __ph
7676
{};
7777

7878
# if defined(_LIBCUDACXX_BUILDING_LIBRARY)
79-
_LIBCUDACXX_FUNC_VIS extern const __ph<1> _1;
80-
_LIBCUDACXX_FUNC_VIS extern const __ph<2> _2;
81-
_LIBCUDACXX_FUNC_VIS extern const __ph<3> _3;
82-
_LIBCUDACXX_FUNC_VIS extern const __ph<4> _4;
83-
_LIBCUDACXX_FUNC_VIS extern const __ph<5> _5;
84-
_LIBCUDACXX_FUNC_VIS extern const __ph<6> _6;
85-
_LIBCUDACXX_FUNC_VIS extern const __ph<7> _7;
86-
_LIBCUDACXX_FUNC_VIS extern const __ph<8> _8;
87-
_LIBCUDACXX_FUNC_VIS extern const __ph<9> _9;
88-
_LIBCUDACXX_FUNC_VIS extern const __ph<10> _10;
79+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<1> _1;
80+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<2> _2;
81+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<3> _3;
82+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<4> _4;
83+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<5> _5;
84+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<6> _6;
85+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<7> _7;
86+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<8> _8;
87+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<9> _9;
88+
_LIBCUDACXX_INLINE_VISIBILITY extern const __ph<10> _10;
8989
# else
9090
/* _LIBCUDACXX_INLINE_VAR */ constexpr __ph<1> _1{};
9191
/* _LIBCUDACXX_INLINE_VAR */ constexpr __ph<2> _2{};

libcudacxx/include/cuda/std/detail/libcxx/include/__config

+3-21
Original file line numberDiff line numberDiff line change
@@ -1049,8 +1049,6 @@ typedef __char32_t char32_t;
10491049
# define _LIBCUDACXX_EXPORTED_FROM_ABI __declspec(dllimport)
10501050
# endif
10511051

1052-
# define _LIBCUDACXX_TYPE_VIS _LIBCUDACXX_DLL_VIS
1053-
# define _LIBCUDACXX_FUNC_VIS _LIBCUDACXX_DLL_VIS
10541052
# define _LIBCUDACXX_EXCEPTION_ABI _LIBCUDACXX_DLL_VIS
10551053
# define _LIBCUDACXX_HIDDEN
10561054
# define _LIBCUDACXX_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
@@ -1076,14 +1074,6 @@ typedef __char32_t char32_t;
10761074
# endif
10771075
# endif
10781076

1079-
# ifndef _LIBCUDACXX_FUNC_VIS
1080-
# if !defined(_LIBCUDACXX_DISABLE_VISIBILITY_ANNOTATIONS)
1081-
# define _LIBCUDACXX_FUNC_VIS _CCCL_VISIBILITY_DEFAULT
1082-
# else
1083-
# define _LIBCUDACXX_FUNC_VIS
1084-
# endif
1085-
# endif
1086-
10871077
# ifndef _LIBCUDACXX_TYPE_VIS
10881078
# if !defined(_LIBCUDACXX_DISABLE_VISIBILITY_ANNOTATIONS)
10891079
# define _LIBCUDACXX_TYPE_VIS _CCCL_VISIBILITY_DEFAULT
@@ -1113,8 +1103,8 @@ typedef __char32_t char32_t;
11131103
# endif
11141104

11151105
# ifndef _LIBCUDACXX_OVERRIDABLE_FUNC_VIS
1116-
# define _LIBCUDACXX_OVERRIDABLE_FUNC_VIS _LIBCUDACXX_FUNC_VIS
1117-
# endif
1106+
# define _LIBCUDACXX_OVERRIDABLE_FUNC_VIS _LIBCUDACXX_INLINE_VISIBILITY
1107+
# endif // _LIBCUDACXX_OVERRIDABLE_FUNC_VIS
11181108

11191109
# ifndef _LIBCUDACXX_EXCEPTION_ABI
11201110
# if !defined(_LIBCUDACXX_DISABLE_VISIBILITY_ANNOTATIONS)
@@ -1440,22 +1430,14 @@ typedef unsigned int char32_t;
14401430
# endif
14411431

14421432
# ifndef _LIBCUDACXX_HAS_NO_ASAN
1443-
extern "C" _LIBCUDACXX_FUNC_VIS void
1433+
extern "C" _LIBCUDACXX_INLINE_VISIBILITY void
14441434
__sanitizer_annotate_contiguous_container(const void*, const void*, const void*, const void*);
14451435
# endif
14461436

14471437
# ifndef _LIBCUDACXX_WEAK
14481438
# define _LIBCUDACXX_WEAK __attribute__((__weak__))
14491439
# endif
14501440

1451-
// Redefine some macros for internal use
1452-
# if defined(__cuda_std__)
1453-
# undef _LIBCUDACXX_FUNC_VIS
1454-
# define _LIBCUDACXX_FUNC_VIS _LIBCUDACXX_INLINE_VISIBILITY
1455-
# undef _LIBCUDACXX_TYPE_VIS
1456-
# define _LIBCUDACXX_TYPE_VIS
1457-
# endif // __cuda_std__
1458-
14591441
// Thread API
14601442
# ifndef _LIBCUDACXX_HAS_THREAD_API_EXTERNAL
14611443
# if defined(_CCCL_COMPILER_NVRTC) || defined(__EMSCRIPTEN__)

libcudacxx/include/cuda/std/detail/libcxx/include/__debug

+3-3
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,11 @@ private:
205205
_LIBCUDACXX_HIDDEN __i_node* __insert_iterator(void* __i);
206206
_LIBCUDACXX_HIDDEN __i_node* __find_iterator(const void* __i) const;
207207

208-
friend _LIBCUDACXX_FUNC_VIS __libcpp_db* __get_db();
208+
friend _LIBCUDACXX_INLINE_VISIBILITY __libcpp_db* __get_db();
209209
};
210210

211-
_LIBCUDACXX_FUNC_VIS __libcpp_db* __get_db();
212-
_LIBCUDACXX_FUNC_VIS const __libcpp_db* __get_const_db();
211+
_LIBCUDACXX_INLINE_VISIBILITY __libcpp_db* __get_db();
212+
_LIBCUDACXX_INLINE_VISIBILITY const __libcpp_db* __get_const_db();
213213

214214
_LIBCUDACXX_END_NAMESPACE_STD
215215

libcudacxx/include/cuda/std/detail/libcxx/include/__threading_support

+2-3
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ _CCCL_PUSH_MACROS
5656
# endif
5757

5858
# if defined(_LIBCUDACXX_HAS_THREAD_LIBRARY_EXTERNAL) || defined(_LIBCUDACXX_BUILDING_THREAD_LIBRARY_EXTERNAL)
59-
# define _LIBCUDACXX_THREAD_ABI_VISIBILITY _LIBCUDACXX_FUNC_VIS
59+
# define _LIBCUDACXX_THREAD_ABI_VISIBILITY _LIBCUDACXX_INLINE_VISIBILITY
6060
# else
6161
# define _LIBCUDACXX_THREAD_ABI_VISIBILITY inline _LIBCUDACXX_INLINE_VISIBILITY
6262
# endif
@@ -687,8 +687,7 @@ struct alignas(64) __libcpp_contention_t
687687
# endif
688688
};
689689

690-
_LIBCUDACXX_FUNC_VIS
691-
__libcpp_contention_t* __libcpp_contention_state(void const volatile* p) noexcept;
690+
_LIBCUDACXX_INLINE_VISIBILITY __libcpp_contention_t* __libcpp_contention_state(void const volatile* p) noexcept;
692691

693692
# endif // _LIBCUDACXX_HAS_NO_THREAD_CONTENTION_TABLE
694693

libcudacxx/include/cuda/std/detail/libcxx/include/algorithm

+37-32
Original file line numberDiff line numberDiff line change
@@ -1986,55 +1986,60 @@ inline _LIBCUDACXX_INLINE_VISIBILITY void sort(__wrap_iter<_Tp*> __first, __wrap
19861986
_CUDA_VSTD::sort<_Tp*, _Comp_ref>(__first.base(), __last.base(), __comp);
19871987
}
19881988

1989-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, char*>(char*, char*, __less&))
1990-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&))
1991-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, signed*>(signed*, signed*, __less&))
1989+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, char*>(char*, char*, __less&))
1990+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&))
1991+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, signed*>(signed*, signed*, __less&))
19921992
_LIBCUDACXX_EXTERN_TEMPLATE(
1993-
_LIBCUDACXX_FUNC_VIS void __sort<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&))
1994-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, short*>(short*, short*, __less&))
1993+
_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, unsigned char*>(unsigned char*, unsigned char*, __less&))
1994+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, short*>(short*, short*, __less&))
19951995
_LIBCUDACXX_EXTERN_TEMPLATE(
1996-
_LIBCUDACXX_FUNC_VIS void __sort<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&))
1997-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, int*>(int*, int*, __less&))
1998-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, unsigned*>(unsigned*, unsigned*, __less&))
1999-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, long*>(long*, long*, __less&))
1996+
_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, unsigned short*>(unsigned short*, unsigned short*, __less&))
1997+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, int*>(int*, int*, __less&))
1998+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, unsigned*>(unsigned*, unsigned*, __less&))
1999+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, long*>(long*, long*, __less&))
20002000
_LIBCUDACXX_EXTERN_TEMPLATE(
2001-
_LIBCUDACXX_FUNC_VIS void __sort<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&))
2002-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, long long*>(long long*, long long*, __less&))
2001+
_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, unsigned long*>(unsigned long*, unsigned long*, __less&))
20032002
_LIBCUDACXX_EXTERN_TEMPLATE(
2004-
_LIBCUDACXX_FUNC_VIS void __sort<__less&, unsigned long long*>(unsigned long long*, unsigned long long*, __less&))
2005-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, float*>(float*, float*, __less&))
2006-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, double*>(double*, double*, __less&))
2007-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS void __sort<__less&, long double*>(long double*, long double*, __less&))
2003+
_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, long long*>(long long*, long long*, __less&))
2004+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, unsigned long long*>(
2005+
unsigned long long*, unsigned long long*, __less&))
2006+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, float*>(float*, float*, __less&))
2007+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, double*>(double*, double*, __less&))
2008+
_LIBCUDACXX_EXTERN_TEMPLATE(
2009+
_LIBCUDACXX_INLINE_VISIBILITY void __sort<__less&, long double*>(long double*, long double*, __less&))
20082010

2009-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, char*>(char*, char*, __less&))
20102011
_LIBCUDACXX_EXTERN_TEMPLATE(
2011-
_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&))
2012+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, char*>(char*, char*, __less&))
20122013
_LIBCUDACXX_EXTERN_TEMPLATE(
2013-
_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, signed char*>(signed char*, signed char*, __less&))
2014-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned char*>(
2014+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, wchar_t*>(wchar_t*, wchar_t*, __less&))
2015+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, signed char*>(
2016+
signed char*, signed char*, __less&))
2017+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, unsigned char*>(
20152018
unsigned char*, unsigned char*, __less&))
20162019
_LIBCUDACXX_EXTERN_TEMPLATE(
2017-
_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, short*>(short*, short*, __less&))
2018-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned short*>(
2020+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, short*>(short*, short*, __less&))
2021+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, unsigned short*>(
20192022
unsigned short*, unsigned short*, __less&))
2020-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, int*>(int*, int*, __less&))
20212023
_LIBCUDACXX_EXTERN_TEMPLATE(
2022-
_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned*>(unsigned*, unsigned*, __less&))
2023-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, long*>(long*, long*, __less&))
2024-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned long*>(
2024+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, int*>(int*, int*, __less&))
2025+
_LIBCUDACXX_EXTERN_TEMPLATE(
2026+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, unsigned*>(unsigned*, unsigned*, __less&))
2027+
_LIBCUDACXX_EXTERN_TEMPLATE(
2028+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, long*>(long*, long*, __less&))
2029+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, unsigned long*>(
20252030
unsigned long*, unsigned long*, __less&))
20262031
_LIBCUDACXX_EXTERN_TEMPLATE(
2027-
_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, long long*>(long long*, long long*, __less&))
2028-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, unsigned long long*>(
2032+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, long long*>(long long*, long long*, __less&))
2033+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, unsigned long long*>(
20292034
unsigned long long*, unsigned long long*, __less&))
20302035
_LIBCUDACXX_EXTERN_TEMPLATE(
2031-
_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, float*>(float*, float*, __less&))
2032-
_LIBCUDACXX_EXTERN_TEMPLATE(
2033-
_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, double*>(double*, double*, __less&))
2036+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, float*>(float*, float*, __less&))
20342037
_LIBCUDACXX_EXTERN_TEMPLATE(
2035-
_LIBCUDACXX_FUNC_VIS bool __insertion_sort_incomplete<__less&, long double*>(long double*, long double*, __less&))
2038+
_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, double*>(double*, double*, __less&))
2039+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY bool __insertion_sort_incomplete<__less&, long double*>(
2040+
long double*, long double*, __less&))
20362041

2037-
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_FUNC_VIS unsigned __sort5<__less&, long double*>(
2042+
_LIBCUDACXX_EXTERN_TEMPLATE(_LIBCUDACXX_INLINE_VISIBILITY unsigned __sort5<__less&, long double*>(
20382043
long double*, long double*, long double*, long double*, long double*, __less&))
20392044

20402045
// inplace_merge

libcudacxx/include/cuda/std/detail/libcxx/include/chrono

+1-1
Original file line numberDiff line numberDiff line change
@@ -3720,7 +3720,7 @@ struct _FilesystemClock
37203720

37213721
_LIBCUDACXX_EXPORTED_FROM_ABI static _CCCL_CONSTEXPR_CXX14 const bool is_steady = false;
37223722

3723-
_LIBCUDACXX_AVAILABILITY_FILESYSTEM _LIBCUDACXX_FUNC_VIS static time_point now() noexcept;
3723+
_LIBCUDACXX_AVAILABILITY_FILESYSTEM _LIBCUDACXX_INLINE_VISIBILITY static time_point now() noexcept;
37243724

37253725
_LIBCUDACXX_INLINE_VISIBILITY static time_t to_time_t(const time_point& __t) noexcept
37263726
{

0 commit comments

Comments
 (0)