Hi!

A bit late, I know..., but while I was reviewing another
'libgomp/libgomp.map' change, I noticed in
commit r15-3249-g0beac1db38855eae0f71fa982ed05069d3873a9c:

On 2024-08-23T14:52:36+0200, Tobias Burnus <[email protected]> wrote:
> --- a/libgomp/libgomp.map
> +++ b/libgomp/libgomp.map
> @@ -428,6 +428,21 @@ GOMP_5.1.2 {
>       GOMP_target_map_indirect_ptr;
>  } GOMP_5.1.1;
>  
> +GOMP_5.1.3 {
> +  global:
> +     omp_get_num_interop_properties;
> +     omp_get_interop_int;
> +     omp_get_interop_ptr;
> +     omp_get_interop_str;
> +     omp_get_interop_name;
> +     omp_get_interop_type_desc;
> +     omp_get_interop_rc_desc;
> +     omp_get_interop_str_;
> +     omp_get_interop_name_;
> +     omp_get_interop_type_desc_;
> +     omp_get_interop_rc_desc_;
> +} GOMP_5.1.2;

These are symbols defined by the OpenMP standard, so should have been put
into 'OMP_[...]' instead of 'GOMP_[...]' namespace?

..., and then similarly for the symbols that got added in
commit r15-3730-gbf4a5efa80ef8438deb0a99c9a02b1f550aaf814
"OpenMP: Add get_device_from_uid/omp_get_uid_from_device routines",
commit r15-3799-gcdb9aa0f623ec7899da445a47f4a502b2987dc7b
"OpenMP: Fix omp_get_device_from_uid, minor cleanup", and
commit r16-1055-g4e47e2f833732c5d9a3c3e69dc753f99b3a56737
"libgomp: Add OpenMP's omp_target_memset/omp_target_memset_async".

We could still fix up the latter one: GCC 16 has not yet been released,
but for the GCC 15 ones, to the extent that I understand symbol
versioning, we're now stuck with these 'GOMP_[...]' symbol versions,
right?  (We could add the 'OMP_[...]' ones, but would have to keep the
'GOMP_[...]' ones for compatibility, so there's probably not much point
in doing that?)


Outside of this specific issue, it's not clear to me why we have
'OMP_[...]' vs. 'GOMP_[...]' symbol versions (later similarly adopted for
'OACC_[...]' vs. 'GOACC_[...]') that are numbered according to the OpenMP
(and OpenACC) specification releases, instead of having 'omp_[...]' as
well as 'GOMP_[...]' symbols alike versioned with [...], 'GCC_14',
'GCC_15', [...] symbol versions, or even some arbitrary 'LIBGOMP_1',
'LIBGOMP_2', [...]?  (Like all other GCC libraries are using variants
thereof.)


Grüße
 Thomas

Reply via email to