Skip to content
Snippets Groups Projects
  • Jakub Jelinek's avatar
    e9b2f15d
    libgcc: Avoid warnings on __gcc_nested_func_ptr_created [PR113402] · e9b2f15d
    Jakub Jelinek authored
    I'm seeing hundreds of
    In file included from ../../../libgcc/libgcc2.c:56:
    ../../../libgcc/libgcc2.h:32:13: warning: conflicting types for built-in function ‘__gcc_nested_func_ptr_created’; expected ‘void(void *, void *, void *)’
    +[-Wbuiltin-declaration-mismatch]
       32 | extern void __gcc_nested_func_ptr_created (void *, void *, void **);
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    warnings.
    
    Either we need to add like in r14-6218
      #pragma GCC diagnostic ignored "-Wbuiltin-declaration-mismatch"
    (but in that case because of the libgcc2.h prototype (why is it there?)
    it would need to be also with #pragma GCC diagnostic push/pop around),
    or we could go with just following how the builtins are prototyped on the
    compiler side and only cast to void ** when dereferencing (which is in
    a single spot in each TU).
    
    2024-02-01  Jakub Jelinek  <jakub@redhat.com>
    
    	PR libgcc/113402
    	* libgcc2.h (__gcc_nested_func_ptr_created): Change type of last
    	argument from void ** to void *.
    	* config/i386/heap-trampoline.c (__gcc_nested_func_ptr_created):
    	Change type of dst from void ** to void * and cast dst to void **
    	before dereferencing it.
    	* config/aarch64/heap-trampoline.c (__gcc_nested_func_ptr_created):
    	Likewise.
    e9b2f15d
    History
    libgcc: Avoid warnings on __gcc_nested_func_ptr_created [PR113402]
    Jakub Jelinek authored
    I'm seeing hundreds of
    In file included from ../../../libgcc/libgcc2.c:56:
    ../../../libgcc/libgcc2.h:32:13: warning: conflicting types for built-in function ‘__gcc_nested_func_ptr_created’; expected ‘void(void *, void *, void *)’
    +[-Wbuiltin-declaration-mismatch]
       32 | extern void __gcc_nested_func_ptr_created (void *, void *, void **);
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    warnings.
    
    Either we need to add like in r14-6218
      #pragma GCC diagnostic ignored "-Wbuiltin-declaration-mismatch"
    (but in that case because of the libgcc2.h prototype (why is it there?)
    it would need to be also with #pragma GCC diagnostic push/pop around),
    or we could go with just following how the builtins are prototyped on the
    compiler side and only cast to void ** when dereferencing (which is in
    a single spot in each TU).
    
    2024-02-01  Jakub Jelinek  <jakub@redhat.com>
    
    	PR libgcc/113402
    	* libgcc2.h (__gcc_nested_func_ptr_created): Change type of last
    	argument from void ** to void *.
    	* config/i386/heap-trampoline.c (__gcc_nested_func_ptr_created):
    	Change type of dst from void ** to void * and cast dst to void **
    	before dereferencing it.
    	* config/aarch64/heap-trampoline.c (__gcc_nested_func_ptr_created):
    	Likewise.