This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] [powerpc] Use DIRECT_SYSVIPC_SYSCALLS


On 10/10/19 11:49 AM, Adhemerval Zanella wrote:
> On 10/10/2019 13:35, Paul Clarke wrote:
>> On 10/10/19 10:13 AM, Adhemerval Zanella wrote:
>>> On 10/10/2019 03:07, Florian Weimer wrote:
>>>>> diff --git a/sysdeps/unix/sysv/linux/semop.c b/sysdeps/unix/sysv/linux/semop.c
>>>>> index 687fdcb..e15bd5e 100644
>>>>> --- a/sysdeps/unix/sysv/linux/semop.c
>>>>> +++ b/sysdeps/unix/sysv/linux/semop.c
>>>>> @@ -26,7 +26,7 @@
>>>>>  int
>>>>>  semop (int semid, struct sembuf *sops, size_t nsops)
>>>>>  {
>>>>> -#ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
>>>>> +#if defined (__ASSUME_DIRECT_SYSVIPC_SYSCALLS) && defined (__NR_semop)
>>>>>    return INLINE_SYSCALL_CALL (semop, semid, sops, nsops);
>>>>>  #else
>>>>>    return INLINE_SYSCALL_CALL (ipc, IPCOP_semop, semid, nsops, 0, sops);
>>>>
>>>> Sorry, but I think this is wrong: If a future kernel version defines
>>>> __NR_semop, we suddenly build glibc in such a way that it is
>>>> incompatible with kernel 5.0 on POWER (assuming that the user requests
>>>> the 5.0 baseline).
>>>>
>>>> I think the best way forward here is to fix the kernel to provide the
>>>> semop system call on POWER, and change __ASSUME_DIRECT_SYSVIPC_SYSCALLS
>>>> so that it requires that kernel version as the minimum on POWER.
>>>>
>>>> If you do not want to do that, maybe the right solution is a sysdeps
>>>> override for POWER, unconditionally using IPCOP_semop for now, with a
>>>> comment why this is necessary.
>>>
>>> I have sent a similar patch some months ago that addresses it not only
>>> for powerpc, but in all architecture that have wired up the sysvc syscalls
>>> on linux 5.1 [1][2].  My understanding back them was that it was added in
>>> fact for Linux 5.1 instead of 5.0 (as perf kernel commit 0d6040d4681735dfc47).
>>
>> That commit is in v5.0:
>> --
>> $ git checkout v5.0
>> ...
>> Note: checking out 'v5.0'.
>> ...
>> HEAD is now at 1c163f4c7b3f Linux 5.0
>> $ git log 0d6040d4681735dfc47 -1
>> commit 0d6040d4681735dfc47565de288525de405a5c99
>> Author: Arnd Bergmann <arnd@arndb.de>
>> Date:   Mon Dec 31 14:38:26 2018 +0100
>>
>>     arch: add split IPC system calls where needed
> 
> I am [not] sure this command gives you the correct answer, afaik this command
> gives you the first tag containing the commit:
> 
> $ git describe --contains 0d6040d4681735dfc47
> v5.1-rc1~160^2~3^2~4
> 
> In fact a simple test to check if 'semget' is present at the system call
> table shows:
> 
> $ git checkout v5.0
> [...]
> HEAD is now at 1c163f4c7b3f Linux 5.0
> $ grep semget arch/powerpc/kernel/syscalls/syscall.tbl
> $ 

Ack.  My git-fu is still developing...

PC


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]