[v8,1/8] nptl: Add C11 threads thrd_* functions

Message ID a1a4f04c-7d4b-789a-0ebe-ffa4c17aaa3c@redhat.com
State Not applicable
Headers

Commit Message

Florian Weimer July 12, 2018, 12:18 p.m. UTC
  On 07/11/2018 06:24 PM, Adhemerval Zanella wrote:
> 
> 
> On 11/07/2018 12:49, Szabolcs Nagy wrote:
>> On 10/07/18 20:26, Adhemerval Zanella wrote:
>>>
>>>
>>> On 06/07/2018 09:46, Florian Weimer wrote:
>>>> On 02/02/2018 06:04 PM, Adhemerval Zanella wrote:
>>>>> @@ -139,7 +139,9 @@ libpthread-routines = nptl-init vars events version pt-interp \
>>>>>                   pthread_mutex_getprioceiling \
>>>>>                   pthread_mutex_setprioceiling \
>>>>>                   pthread_setname pthread_getname \
>>>>> -              pthread_setattr_default_np pthread_getattr_default_np
>>>>> +              pthread_setattr_default_np pthread_getattr_default_np \
>>>>> +              thrd_create thrd_current thrd_detach thrd_equal \
>>>>
>>>> thrd_current should live in libc, not in libpthread.  Same for thrd_equal, I suppose.  You should just duplicate the comparison, seeing that we haven't done that particular cleanup for pthread_equal yet.
>>>>
>>>> Not sure about thrd_sleep and thrd_yield, but I lean towards libc there as well.
>>>
>>> Right, I added all four symbols (thrd_current, thrd_equal, thrd_sleep, and
>>> thrd_yield) to libc on my personal branch [1] (the change is just to move
>>> the objects from libpthread-routines to routines rule in nptl/Makefile).
>>> I also adjusted the abilist patch with the change.
>>>
>>
>> the abilist patch seems to add
>> sysdeps/unix/sysv/linux/tile/tilegx64/libpthread.abilist
>> i think you can drop that (and update the ChangeLog).
> 
> Thanks for catching this up, I fixed on my personal c11 thread branch.

I still see the attached ABI diffs.

There is also a new linknamespace failure on hppa:

[initial] thrd_create -> [libpthread.a(thrd_create.o)] 
__pthread_create_2_1 -> [libpthread.a(pthread_create.o)] mprotect

That should be easy to fix.  I'll post a separate patch for that.

Thanks,
Florian
==> /home/bmg/build/glibcs/i686-gnu/glibc/hurd/check-abi-libhurduser.out <==
  

Comments

Adhemerval Zanella July 12, 2018, 5:38 p.m. UTC | #1
On 12/07/2018 09:18, Florian Weimer wrote:
> On 07/11/2018 06:24 PM, Adhemerval Zanella wrote:
>>
>>
>> On 11/07/2018 12:49, Szabolcs Nagy wrote:
>>> On 10/07/18 20:26, Adhemerval Zanella wrote:
>>>>
>>>>
>>>> On 06/07/2018 09:46, Florian Weimer wrote:
>>>>> On 02/02/2018 06:04 PM, Adhemerval Zanella wrote:
>>>>>> @@ -139,7 +139,9 @@ libpthread-routines = nptl-init vars events version pt-interp \
>>>>>>                   pthread_mutex_getprioceiling \
>>>>>>                   pthread_mutex_setprioceiling \
>>>>>>                   pthread_setname pthread_getname \
>>>>>> -              pthread_setattr_default_np pthread_getattr_default_np
>>>>>> +              pthread_setattr_default_np pthread_getattr_default_np \
>>>>>> +              thrd_create thrd_current thrd_detach thrd_equal \
>>>>>
>>>>> thrd_current should live in libc, not in libpthread.  Same for thrd_equal, I suppose.  You should just duplicate the comparison, seeing that we haven't done that particular cleanup for pthread_equal yet.
>>>>>
>>>>> Not sure about thrd_sleep and thrd_yield, but I lean towards libc there as well.
>>>>
>>>> Right, I added all four symbols (thrd_current, thrd_equal, thrd_sleep, and
>>>> thrd_yield) to libc on my personal branch [1] (the change is just to move
>>>> the objects from libpthread-routines to routines rule in nptl/Makefile).
>>>> I also adjusted the abilist patch with the change.
>>>>
>>>
>>> the abilist patch seems to add
>>> sysdeps/unix/sysv/linux/tile/tilegx64/libpthread.abilist
>>> i think you can drop that (and update the ChangeLog).
>>
>> Thanks for catching this up, I fixed on my personal c11 thread branch.
> 
> I still see the attached ABI diffs.

Thanks, I have corrected them in my personal branch, along with the ChangeLog
entry and a lingering file from tile.

> 
> There is also a new linknamespace failure on hppa:
> 
> [initial] thrd_create -> [libpthread.a(thrd_create.o)] __pthread_create_2_1 -> [libpthread.a(pthread_create.o)] mprotect
> 
> That should be easy to fix.  I'll post a separate patch for that.

You seemed to already fix, thanks.
  
Florian Weimer July 13, 2018, 7:03 a.m. UTC | #2
On 07/12/2018 07:38 PM, Adhemerval Zanella wrote:
> 
> 
> On 12/07/2018 09:18, Florian Weimer wrote:
>> On 07/11/2018 06:24 PM, Adhemerval Zanella wrote:
>>>
>>>
>>> On 11/07/2018 12:49, Szabolcs Nagy wrote:
>>>> On 10/07/18 20:26, Adhemerval Zanella wrote:
>>>>>
>>>>>
>>>>> On 06/07/2018 09:46, Florian Weimer wrote:
>>>>>> On 02/02/2018 06:04 PM, Adhemerval Zanella wrote:
>>>>>>> @@ -139,7 +139,9 @@ libpthread-routines = nptl-init vars events version pt-interp \
>>>>>>>                    pthread_mutex_getprioceiling \
>>>>>>>                    pthread_mutex_setprioceiling \
>>>>>>>                    pthread_setname pthread_getname \
>>>>>>> -              pthread_setattr_default_np pthread_getattr_default_np
>>>>>>> +              pthread_setattr_default_np pthread_getattr_default_np \
>>>>>>> +              thrd_create thrd_current thrd_detach thrd_equal \
>>>>>>
>>>>>> thrd_current should live in libc, not in libpthread.  Same for thrd_equal, I suppose.  You should just duplicate the comparison, seeing that we haven't done that particular cleanup for pthread_equal yet.
>>>>>>
>>>>>> Not sure about thrd_sleep and thrd_yield, but I lean towards libc there as well.
>>>>>
>>>>> Right, I added all four symbols (thrd_current, thrd_equal, thrd_sleep, and
>>>>> thrd_yield) to libc on my personal branch [1] (the change is just to move
>>>>> the objects from libpthread-routines to routines rule in nptl/Makefile).
>>>>> I also adjusted the abilist patch with the change.
>>>>>
>>>>
>>>> the abilist patch seems to add
>>>> sysdeps/unix/sysv/linux/tile/tilegx64/libpthread.abilist
>>>> i think you can drop that (and update the ChangeLog).
>>>
>>> Thanks for catching this up, I fixed on my personal c11 thread branch.
>>
>> I still see the attached ABI diffs.
> 
> Thanks, I have corrected them in my personal branch, along with the ChangeLog
> entry and a lingering file from tile.

As of commit 2b9d7c41ade511d99cd917bb8d28eb0fe91971ed, I still see:

==> 
/home/bmg/build/glibcs/mipsel-linux-gnu-nan2008-soft/glibc/elf/check-abi-libc.out 
<==
--- ../sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist 
2018-07-10 08:15:53.536227638 -0400
+++ 
/home/bmg/build/glibcs/mipsel-linux-gnu-nan2008-soft/glibc/libc.symlist 
    2018-07-13 03:00:06.345221784 -0400
@@ -1963,0 +1964,4 @@ GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> 
/home/bmg/build/glibcs/mipsel-linux-gnu-soft/glibc/elf/check-abi-libc.out 
<==
--- ../sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist 
2018-07-10 08:15:53.536227638 -0400
+++ /home/bmg/build/glibcs/mipsel-linux-gnu-soft/glibc/libc.symlist 
2018-07-13 02:58:41.692589329 -0400
@@ -1963,0 +1964,4 @@ GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> 
/home/bmg/build/glibcs/mips-linux-gnu-nan2008-soft/glibc/elf/check-abi-libc.out 
<==
--- ../sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist 
2018-07-10 08:15:53.536227638 -0400
+++ 
/home/bmg/build/glibcs/mips-linux-gnu-nan2008-soft/glibc/libc.symlist 
    2018-07-13 03:00:43.831389053 -0400
@@ -1963,0 +1964,4 @@ GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> 
/home/bmg/build/glibcs/mips-linux-gnu-soft/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist 
2018-07-10 08:15:53.536227638 -0400
+++ /home/bmg/build/glibcs/mips-linux-gnu-soft/glibc/libc.symlist 
2018-07-13 03:00:32.210027180 -0400
@@ -1963,0 +1964,4 @@ GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

Florian
  

Patch

--- ../sysdeps/mach/hurd/libhurduser.abilist	2018-07-05 06:10:49.243248916 -0400
+++ /home/bmg/build/glibcs/i686-gnu/glibc/hurd/libhurduser.symlist	2018-07-12 07:38:17.405204797 -0400
@@ -0,0 +1,611 @@ 
+Base _S_msg_server F
+Base _S_msg_server_routines D 0x64
+Base __auth_getids F
+Base __auth_makeauth F
+Base __auth_server_authenticate F
+Base __auth_user_authenticate F
+Base __bss_start Base g ? D .bss 00000000
+Base __crash_dump_task F
+Base __dir_link F
+Base __dir_lookup F
+Base __dir_mkdir F
+Base __dir_mkfile F
+Base __dir_notice_changes F
+Base __dir_readdir F
+Base __dir_rename F
+Base __dir_rmdir F
+Base __dir_unlink F
+Base __exec_exec F
+Base __exec_exec_paths F
+Base __exec_init F
+Base __exec_setexecdata F
+Base __exec_startup_get_info F
+Base __file_chauthor F
+Base __file_check_access F
+Base __file_chflags F
+Base __file_chmod F
+Base __file_chown F
+Base __file_exec F
+Base __file_exec_paths F
+Base __file_get_fs_options F
+Base __file_get_storage_info F
+Base __file_get_translator F
+Base __file_get_translator_cntl F
+Base __file_getcontrol F
+Base __file_getfh F
+Base __file_getlinknode F
+Base __file_lock F
+Base __file_lock_stat F
+Base __file_notice_changes F
+Base __file_reparent F
+Base __file_set_size F
+Base __file_set_translator F
+Base __file_statfs F
+Base __file_sync F
+Base __file_syncfs F
+Base __file_utimens F
+Base __file_utimes F

==> /home/bmg/build/glibcs/i686-gnu/glibc/mach/check-abi-libmachuser.out <==
--- ../sysdeps/mach/libmachuser.abilist	2018-07-05 06:10:49.254249207 -0400
+++ /home/bmg/build/glibcs/i686-gnu/glibc/mach/libmachuser.symlist	2018-07-12 07:36:45.837658100 -0400
@@ -0,0 +1,319 @@ 
+Base _S_exc_server F
+Base _S_exc_server_routines D 0x4
+Base __bss_start Base g ? D .bss 00000000
+Base __default_pager_info F
+Base __default_pager_object_create F
+Base __default_pager_object_pages F
+Base __default_pager_objects F
+Base __default_pager_paging_file F
+Base __default_pager_register_fileserver F
+Base __device_close F
+Base __device_get_status F
+Base __device_map F
+Base __device_open F
+Base __device_open_request F
+Base __device_read F
+Base __device_read_inband F
+Base __device_read_request F
+Base __device_read_request_inband F
+Base __device_set_filter F
+Base __device_set_status F
+Base __device_write F
+Base __device_write_inband F
+Base __device_write_request F
+Base __device_write_request_inband F
+Base __exception_raise F
+Base __gsync_requeue F
+Base __gsync_wait F
+Base __gsync_wake F
+Base __host_adjust_time F
+Base __host_get_boot_info F
+Base __host_get_time F
+Base __host_info F
+Base __host_kernel_version F
+Base __host_processor_set_priv F
+Base __host_processor_sets F
+Base __host_processors F
+Base __host_reboot F
+Base __host_set_time F
+Base __i386_get_gdt F
+Base __i386_get_ldt F
+Base __i386_io_perm_create F
+Base __i386_io_perm_modify F
+Base __i386_set_gdt F
+Base __i386_set_ldt F
+Base __mach_notify_new_task F
+Base __mach_port_allocate_name_rpc F
+Base __mach_port_allocate_rpc F

==> /home/bmg/build/glibcs/m68k-linux-gnu-coldfire/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist	2018-07-10 08:15:53.535227613 -0400
+++ /home/bmg/build/glibcs/m68k-linux-gnu-coldfire/glibc/libc.symlist	2018-07-12 07:54:17.126989778 -0400
@@ -122,0 +123,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/m68k-linux-gnu-coldfire/glibc/nptl/check-abi-libpthread.out <==
--- ../sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist	2018-07-12 07:14:24.376165898 -0400
+++ /home/bmg/build/glibcs/m68k-linux-gnu-coldfire/glibc/nptl/libpthread.symlist	2018-07-12 07:44:19.285683784 -0400
@@ -23 +22,0 @@  GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_current F
@@ -25 +23,0 @@  GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_equal F
@@ -28,2 +25,0 @@  GLIBC_2.28 thrd_join F
-GLIBC_2.28 thrd_sleep F
-GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/m68k-linux-gnu-coldfire-soft/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist	2018-07-10 08:15:53.535227613 -0400
+++ /home/bmg/build/glibcs/m68k-linux-gnu-coldfire-soft/glibc/libc.symlist	2018-07-12 07:59:42.365934960 -0400
@@ -122,0 +123,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/m68k-linux-gnu-coldfire-soft/glibc/nptl/check-abi-libpthread.out <==
--- ../sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist	2018-07-12 07:14:24.376165898 -0400
+++ /home/bmg/build/glibcs/m68k-linux-gnu-coldfire-soft/glibc/nptl/libpthread.symlist	2018-07-12 07:45:38.102269392 -0400
@@ -23 +22,0 @@  GLIBC_2.28 thrd_create F
-GLIBC_2.28 thrd_current F
@@ -25 +23,0 @@  GLIBC_2.28 thrd_detach F
-GLIBC_2.28 thrd_equal F
@@ -28,2 +25,0 @@  GLIBC_2.28 thrd_join F
-GLIBC_2.28 thrd_sleep F
-GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/mipsel-linux-gnu-nan2008-soft/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist	2018-07-10 08:15:53.536227638 -0400
+++ /home/bmg/build/glibcs/mipsel-linux-gnu-nan2008-soft/glibc/libc.symlist	2018-07-12 08:05:48.875315449 -0400
@@ -1963,0 +1964,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/mipsel-linux-gnu-soft/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist	2018-07-10 08:15:53.536227638 -0400
+++ /home/bmg/build/glibcs/mipsel-linux-gnu-soft/glibc/libc.symlist	2018-07-12 08:07:26.234527478 -0400
@@ -1963,0 +1964,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/mips-linux-gnu-nan2008-soft/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist	2018-07-10 08:15:53.536227638 -0400
+++ /home/bmg/build/glibcs/mips-linux-gnu-nan2008-soft/glibc/libc.symlist	2018-07-12 08:03:53.394265775 -0400
@@ -1963,0 +1964,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/mips-linux-gnu-soft/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist	2018-07-10 08:15:53.536227638 -0400
+++ /home/bmg/build/glibcs/mips-linux-gnu-soft/glibc/libc.symlist	2018-07-12 08:04:43.725036830 -0400
@@ -1963,0 +1964,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/powerpc-linux-gnu-soft/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist	2018-07-10 08:15:53.537227663 -0400
+++ /home/bmg/build/glibcs/powerpc-linux-gnu-soft/glibc/libc.symlist	2018-07-12 08:07:09.786984849 -0400
@@ -1995,0 +1996,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/powerpc-linux-gnuspe-e500v1/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist	2018-07-10 08:15:53.537227663 -0400
+++ /home/bmg/build/glibcs/powerpc-linux-gnuspe-e500v1/glibc/libc.symlist	2018-07-12 08:07:11.875053737 -0400
@@ -1995,0 +1996,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F

==> /home/bmg/build/glibcs/powerpc-linux-gnuspe/glibc/elf/check-abi-libc.out <==
--- ../sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist	2018-07-10 08:15:53.537227663 -0400
+++ /home/bmg/build/glibcs/powerpc-linux-gnuspe/glibc/libc.symlist	2018-07-12 08:07:33.724774593 -0400
@@ -1995,0 +1996,4 @@  GLIBC_2.28 statx F
+GLIBC_2.28 thrd_current F
+GLIBC_2.28 thrd_equal F
+GLIBC_2.28 thrd_sleep F
+GLIBC_2.28 thrd_yield F