[PATCH v4] libc: Extend __libc_freeres framework (Bug 23329).

Carlos O'Donell carlos@redhat.com
Thu Jun 28 13:36:00 GMT 2018


On 06/28/2018 09:22 AM, Florian Weimer wrote:
>> +    [BZ #23329]
>> +    * include/libc-symbols.h: Comment the freeres framework.
>> +    * include/set-hooks.h: Include libc-symbols.h.  Fix comment.
>> +    * dlfcn/Makefile (libdl-routines): Add dlfreeres.
>> +    * dlfcn/Versions (GLIBC_PRIVATE): Add __libdl_freeres.
>> +    * dlfcn/dlerror.c: Include libc-symbols.h
>> +    (__dlerror_main_freeres): New function.
>> +    * dlfcn/dlfreeres.c: New file.
>> +    * dlfcn/sdlfreeres.c: New file.
>> +    * include/dlfcn.h: Declare __dlerror_main_freeres.
>> +    * malloc/set-freeres.c: Declare __libdl_freeres, and
>> +    __libpthread_freeres.
>> +    (__libc_subfreeres): Call __libdl_freeres, and __libpthread_freeres if
>> +    the releavant libraries are loaded.
>> +    * malloc/thread-freeres.c: Add comments.
>> +    * nptl/Makefile (libpthread-routines): Add nptlfreeres.
>> +    * nptl/Version (GLIBC_PRIVATE): Add __libpthread_freeres.
>> +    * nptl/allocatestack.c (__nptl_free_stacks): New function.
>> +    (__free_stacks): Rename to...
>> +    (free_stacks): ...this. Mark static.
>> +    (queue_stack): Call free_stacks.
>> +    * nptl/libc_pthread_init.c [SHARED] (freeres_libpthread): Delete.
>> +    * nptl/nptl-init.c: Delete delcaration of nptl_freeres.
>> +    * sysdeps/nptl/pthread-functions.h (pthread_functions): Remove
>> +    ptr_freeres element from struct.
>> +    (pthread_functions): Remove .ptr_freeres from struct initializer.
>> +    [SHARED] (nptl_freeres): Remove.
>> +    * nptl/nptlfreeres.c: New file.
>> +    * nptl/pthreadP.h
>> +    [IS_IN (libpthread) && SHARED ] (__unwind_freeres): Rename to...
>> +    [IS_IN (libpthread)] (__nptl_unwind_freeres): ...this.  Mark
>> +    attribute_hidden.
>> +    (__free_stacks): Rename to...
>> +    (__nptl_stacks_freeres): ...this.
>> +    (__shm_directory_freeres): Declare.
>> +    * nptl/unwind-forcedunwind.c (__unwind_freeres): Rename to...
>> +    (__nptl_unwind_freeres): ...this.
>> +    * resolv/res-close.c: Add comment.
>> +    * resolv/resolv_conf.c: Include libc-symbols.h.
>> +    * string/strerror_l.c: Include libc-symbols.h.
>> +    * sunrpc/rpc_thread.c: Include libc-symbols.h.
>> +    * sysdeps/mach/strerror_l.c: Inlcude libc-symbols.h
>> +    * sysdeps/unix/sysv/linux/shm-directory.c (freeit): Rename to...
>> +    [IS_IN (libpthread)] (__shm_directory_freeres): ...this.
> 
> ChangeLog looks okay now (but it still does not apply with git am -3 --reject).

Complies and applies fine for me.

This is the only commit I have on top of master.

Where are the conflicts?

>> diff --git a/dlfcn/dlfreeres.c b/dlfcn/dlfreeres.c
>> new file mode 100644
>> index 0000000000..8c18731b5c
> …
>> +void
>> +__libdl_freeres (void)
>> +{
>> +  call_function_static_weak (__dlerror_main_freeres);
>> +}
>> +libc_hidden_def (__libdl_freeres)
> 
> Please remove the last line of the file before committing.  It is a no-op (otherwise it wouldn't compile due to the missing libc_hidden_proto).

Fixed. I missed this, I had a slightly different version before where
I wanted this to be called internally. I don't need hidden def for
a public API.

v4
- Attached. With libc_hidden_def removed for __libdl_freeres.

Cheers,
Carlos.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-libc-Extend-__libc_freeres-framework-Bug-23329.patch
Type: text/x-patch
Size: 23282 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20180628/8a2dbb58/attachment.bin>


More information about the Libc-alpha mailing list