[Bug tree-optimization/80936] bcmp, bcopy, and bzero not declared nonnull

egallager at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat May 11 03:37:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80936

--- Comment #5 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Martin Sebor from comment #4)
> POSIX says this about bcopy:
> 
>   For maximum portability, it is recommended to replace the function call to
> bcopy() as follows:
> 
>   #define bcopy(b1,b2,len) (memmove((b2), (b1), (len)), (void) 0)
> 
> GCC lowers bcopy calls to memmove (and similarly for other bxxx calls),
> which I think makes it even more important that the non-null attribute be
> applied to their declarations, to detect bugs due to legacy code making the
> assumption that   bcopy et al are null-safe (e.g., on a target where they
> really are).
> 
> $ cat t.c && gcc -O0 -S -Wall -fdump-tree-lower=/dev/stdout t.c
> void f (void *d, const void *s, __SIZE_TYPE__ n)
> {
>   __builtin_bcopy (s, 0, n);
> }
> 
> ;; Function f (f, funcdef_no=0, decl_uid=1908, cgraph_uid=1, symbol_order=0)
> 
> f (void * d, const void * s, long unsigned int n)
> {
>   __builtin_memmove (0B, s, n);
>   return;
> }

ok, be sure to update the comment, then, once you add the attribute


More information about the Gcc-bugs mailing list