diff mbox series

do not typedef socklen_t on Android

Message ID 20200421081549.108375-1-zenczykowski@gmail.com
State Not Applicable
Headers show
Series do not typedef socklen_t on Android | expand

Commit Message

Maciej Żenczykowski April 21, 2020, 8:15 a.m. UTC
From: Maciej Żenczykowski <maze@google.com>

This is present in bionic header files regardless of compiler
being used (likely clang)

Test: builds
Signed-off-by: Maciej Żenczykowski <maze@google.com>
---
 libiptc/libip4tc.c | 2 +-
 libiptc/libip6tc.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Pablo Neira Ayuso April 28, 2020, 12:06 a.m. UTC | #1
On Tue, Apr 21, 2020 at 01:15:49AM -0700, Maciej Żenczykowski wrote:
> From: Maciej Żenczykowski <maze@google.com>
> 
> This is present in bionic header files regardless of compiler
> being used (likely clang)
> 
> Test: builds
> Signed-off-by: Maciej Żenczykowski <maze@google.com>
> ---
>  libiptc/libip4tc.c | 2 +-
>  libiptc/libip6tc.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libiptc/libip4tc.c b/libiptc/libip4tc.c
> index 55540638..08147055 100644
> --- a/libiptc/libip4tc.c
> +++ b/libiptc/libip4tc.c
> @@ -22,7 +22,7 @@
>  #define inline
>  #endif
>  
> -#if !defined(__GLIBC__) || (__GLIBC__ < 2)
> +#if !defined(__ANDROID__) && (!defined(__GLIBC__) || (__GLIBC__ < 2))

Out of curiosity: Is there documentation on this Android libc library
and how this definition is used?

Thank you.
Maciej Żenczykowski April 28, 2020, 12:26 a.m. UTC | #2
I don't know all that much about it.  Mostly it just seems to work.

I'm quoting from: https://en.wikipedia.org/wiki/Bionic_(software) ;-)

Bionic is basically a BSD licensed C library for use with Linux.
This differs from other BSD C libraries which require a BSD kernel,
and from the GNU C Library (glibc) which uses the GNU Lesser General
Public License.

For the most part it's supposed to be drop-in compatible I think,
and the kernel headers (uapi) come from some recent version of Linux.

The license and smaller size are AFAIK the main benefits.

---

Got me curious and:

I'm not actually sure what defines __ANDROID__, maybe __BIONIC__ would
be a better guard?

That seems to be defined in bionic/libc/include/sys/cdefs.h

https://android.googlesource.com/platform/bionic/+/master/libc/include/sys/cdefs.h#43

And the docs here:

https://android.googlesource.com/platform/bionic/+/master/docs/defines.md

do seem to suggest that __BIONIC__ is more equivalent to __GLIBC__
Pablo Neira Ayuso April 28, 2020, 10:21 p.m. UTC | #3
On Mon, Apr 27, 2020 at 05:26:44PM -0700, Maciej Żenczykowski wrote:
> I don't know all that much about it.  Mostly it just seems to work.
> 
> I'm quoting from: https://en.wikipedia.org/wiki/Bionic_(software) ;-)
> 
> Bionic is basically a BSD licensed C library for use with Linux.
> This differs from other BSD C libraries which require a BSD kernel,
> and from the GNU C Library (glibc) which uses the GNU Lesser General
> Public License.
> 
> For the most part it's supposed to be drop-in compatible I think,
> and the kernel headers (uapi) come from some recent version of Linux.
> 
> The license and smaller size are AFAIK the main benefits.
> 
> ---
> 
> Got me curious and:
> 
> I'm not actually sure what defines __ANDROID__, maybe __BIONIC__ would
> be a better guard?
> 
> That seems to be defined in bionic/libc/include/sys/cdefs.h
> 
> https://android.googlesource.com/platform/bionic/+/master/libc/include/sys/cdefs.h#43
> 
> And the docs here:
> 
> https://android.googlesource.com/platform/bionic/+/master/docs/defines.md
> 
> do seem to suggest that __BIONIC__ is more equivalent to __GLIBC__

https://sourceforge.net/p/predef/wiki/Libraries/

This one also refers to the existing C library definitions which makes
more sense to me too.
diff mbox series

Patch

diff --git a/libiptc/libip4tc.c b/libiptc/libip4tc.c
index 55540638..08147055 100644
--- a/libiptc/libip4tc.c
+++ b/libiptc/libip4tc.c
@@ -22,7 +22,7 @@ 
 #define inline
 #endif
 
-#if !defined(__GLIBC__) || (__GLIBC__ < 2)
+#if !defined(__ANDROID__) && (!defined(__GLIBC__) || (__GLIBC__ < 2))
 typedef unsigned int socklen_t;
 #endif
 
diff --git a/libiptc/libip6tc.c b/libiptc/libip6tc.c
index b7dd1e33..91676c4a 100644
--- a/libiptc/libip6tc.c
+++ b/libiptc/libip6tc.c
@@ -23,7 +23,7 @@ 
 #define inline
 #endif
 
-#if !defined(__GLIBC__) || (__GLIBC__ < 2)
+#if !defined(__ANDROID__) && (!defined(__GLIBC__) || (__GLIBC__ < 2))
 typedef unsigned int socklen_t;
 #endif