[Toybox] [PATCH] libcutils isn't in the NDK.

enh enh at google.com
Wed Oct 10 09:43:20 PDT 2018


On Sun, Oct 7, 2018 at 3:12 PM Rob Landley <rob at landley.net> wrote:
>
> On 10/07/2018 11:30 AM, enh wrote:
> > Bug: https://github.com/landley/toybox/issues/43
>
> That fixes that one (once I pulled your email out of the spam filter, and yes I
> got unsubscribed from my own list again because gmail false positived on the
> "sorry if this one's a duplicate" email from earlier today and refused delivery.
> It's pretty much a daily occurrence at this point.)
>
> But there's another problem, your redo of getconf works wth glibc and bionic,
> but not with a musl-cross-make toolchain:
>
> toys/posix/getconf.c:140:8: error: 'UIO_MAXIOV' undeclared here (not in a
> function); did you mean '_SC_UIO_MAXIOV'?
>    CONF(UIO_MAXIOV), CONF(CHAR_BIT),
>         ^
>
> Trying its suggestion and switching to _SC_UIO_MAXIOV, ala:
>
> --- a/toys/posix/getconf.c
> +++ b/toys/posix/getconf.c
> @@ -86,7 +86,7 @@ struct config sysconfs[] = {
>    CONF(PAGESIZE), CONF(RAW_SOCKETS), CONF(RE_DUP_MAX), CONF(RTSIG_MAX),
>    CONF(SEM_NSEMS_MAX), CONF(SEM_VALUE_MAX), CONF(SIGQUEUE_MAX),
>    CONF(STREAM_MAX), CONF(SYMLOOP_MAX), CONF(TIMER_MAX), CONF(TTY_NAME_MAX),
> -  CONF(TZNAME_MAX),
> +  CONF(TZNAME_MAX), CONF(UIO_MAXIOV),
>
>    /* Names that just don't match the symbol, do it by hand */
>    {"_AVPHYS_PAGES", _SC_AVPHYS_PAGES}, {"_PHYS_PAGES", _SC_PHYS_PAGES},
> @@ -137,7 +137,7 @@ struct config limits[] = {
>    CONF(CHAR_MAX), CONF(CHAR_MIN), CONF(INT_MAX), CONF(INT_MIN), CONF(SCHAR_MAX)
>    CONF(SCHAR_MIN), CONF(SHRT_MAX), CONF(SHRT_MIN), CONF(SSIZE_MAX),
>    CONF(UCHAR_MAX), CONF(UINT_MAX), CONF(ULONG_MAX), CONF(USHRT_MAX),
> -  CONF(UIO_MAXIOV), CONF(CHAR_BIT),
> +  CONF(CHAR_BIT),
>    /* Not available in glibc without _GNU_SOURCE. */
>    {"LONG_BIT", 8*sizeof(long)},
>    {"WORD_BIT", 8*sizeof(int)},
>
> Then it works with glibc and musl, but _not_ with the android NDKr18:

yeah, hard to know what to do with something non-standard like that,
but if we're in a world where some have one and others have the other,
we usually end up having both.

conveniently musl and glibc make _SC_UIO_MAXIOV the same as the
existing _SC_IOV_MAX so i'll do the same and it'll even be backwards
compatible for old OS releases.

added by https://android-review.googlesource.com/c/platform/bionic/+/783682
and will be in r19.

> toys/posix/getconf.c:89:21: error: use of undeclared identifier '_SC_UIO_MAXIOV'
>   CONF(TZNAME_MAX), CONF(UIO_MAXIOV),
>
> I can fix this up with portabiliy.h glue (not sure which direction's right
> though), but it's why I was trying the header generation approach in the first
> place. If anybody ever does try to build this command on macosx or freebsd, it's
> likely to be a nightmare. The sed version had a bug and was hard to read, but
> was at least portable in _theory_...
>
> Rob


More information about the Toybox mailing list