Re: [PATCH liburing 0/5] multishot recvmsg docs and example

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/27/22 5:11 PM, Ammar Faizi wrote:
So -D_GNU_SOURCE is the culprit. It seems to be unavoidable as
the warn seems to be compiler specific or something. Maybe that
_GNU_SOURCE patches the definition of bind().

I did:

  gcc -E -D_GNU_SOURCE test.c -o xtest.c

and examined the xtest.c output.

So basically when we use _GNU_SOURCE, sometimes the declaration of
bind() is like this:

extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
     __attribute__ ((__nothrow__ , __leaf__));

With __CONST_SOCKADDR_ARG being a union:

typedef union {
    const struct sockaddr *__restrict __sockaddr__;
    const struct sockaddr_at *__restrict __sockaddr_at__;
    const struct sockaddr_ax25 *__restrict __sockaddr_ax25__;
    const struct sockaddr_dl *__restrict __sockaddr_dl__;
    const struct sockaddr_eon *__restrict __sockaddr_eon__;
    const struct sockaddr_in *__restrict __sockaddr_in__;
    const struct sockaddr_in6 *__restrict __sockaddr_in6__;
    const struct sockaddr_inarp *__restrict __sockaddr_inarp__;
    const struct sockaddr_ipx *__restrict __sockaddr_ipx__;
    const struct sockaddr_iso *__restrict __sockaddr_iso__;
    const struct sockaddr_ns *__restrict __sockaddr_ns__;
    const struct sockaddr_un *__restrict __sockaddr_un__;
    const struct sockaddr_x25 *__restrict __sockaddr_x25__;
} __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));

But not all header file included by the compiler has this union stuff.
When it doesn't, it will throw a warning like that.

--
Ammar Faizi



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux