On Tue, 31 Mar 2020, Vineet Gupta via Libc-alpha wrote: > On 3/27/20 11:42 PM, Vineet Gupta via Libc-alpha wrote: > >>> +++ b/sysdeps/arc/Versions > >>> @@ -0,0 +1,6 @@ > >>> +libc { > >>> + GLIBC_2.32 { > >>> + __syscall_error; > >> > >> Why does __syscall_error need a public symbol version? If it's used by a > >> library other than libc, that means it needs to be exported at some symbol > >> version - but it only needs a public version (as opposed to GLIBC_PRIVATE) > >> if it might be used by user programs linked with glibc (if it's used in > >> crt*.o, lib*_nonshared.a, or inline functions in installed headers, for > >> example - or in libgcc.a, libstdc++.a, etc. (GCC static libraries)). > > > > We'll historically I've preferred an out-of-line errno setter in the syscall > > wrappers and those are used in libpthread et all as well but not expected to be > > used by user programs. See my sysdeps.h > > Ok so this will not be called directly from user programs, but indeed > could end up in non shared libs and/or inline functions in headers, so I > suppose this is fine ? What inline function or object in lib*_nonshared.a / crt*.o / GCC static library has a reference to this symbol? If there's an inline function referring to this in an installed header, we can consider whether that inline function *should* be referring to it. Similarly if there's a reference in crt*.o / lib*_nonshared.a / GCC static libraries, we can consider if that reference *should* be there or if the function in question should actually be calling some function from libc.so that does the syscall there. -- Joseph S. Myers joseph@xxxxxxxxxxxxxxxx _______________________________________________ linux-snps-arc mailing list linux-snps-arc@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/linux-snps-arc