[PATCH 1/2] Confstr Port for RTEMS

Joel Sherrill joel at rtems.org
Wed Aug 12 19:56:44 UTC 2020


+1

>From a POSIX perspective, I think Eshan's modifications make it more
correct for RTEMS but his patch and test are out of sync with master so
there needs to be resolution to move this forward.

On Wed, Aug 12, 2020 at 2:07 PM Gedare Bloom <gedare at rtems.org> wrote:

> Chris, Christian, Sebastian:
>
> I think it would be best if one of you may have insight on this touching
> libbsd.
>
> On Wed, Aug 12, 2020 at 11:13 AM Joel Sherrill <joel at rtems.org> wrote:
> >
> >
> > It appears that confstr is already added (with no ifdefs on RTEMS) to
> libbsd. We discussed that some of these cases make no sense for RTEMS and
> should just return the UPE (unsupported programming environment" string. We
> also do not have a "standard path" so shouldn't return one.
> >
> > But the second patch with a test is not merged.  And is not in sync with
> what is in confstr.c right now. There is also a spelling error.
> >
> > Can someone please comment on whether the unmodified BSD version of this
> is what we want or whether Eshan should update his patch against
> 6-freebsd-12 to disable the cases that don't make sense.
> >
> > Either way, we will need a new round of tests.
> >
> > --joel
> >
> >
> > On Mon, Jul 13, 2020 at 1:10 PM Eshan dhawan <eshandhawan51 at gmail.com>
> wrote:
> >>
> >> File added to LIBBSD
> >>
> >> Closes #3373
> >> Signed-off-by: Eshan dhawan <eshandhawan51 at gmail.com>
> >> ---
> >>  freebsd/lib/libc/gen/confstr.c | 127 +++++++++++++++++++++++++++++++++
> >>  libbsd.py                      |   1 +
> >>  2 files changed, 128 insertions(+)
> >>  create mode 100644 freebsd/lib/libc/gen/confstr.c
> >>
> >> diff --git a/freebsd/lib/libc/gen/confstr.c
> b/freebsd/lib/libc/gen/confstr.c
> >> new file mode 100644
> >> index 00000000..653f581b
> >> --- /dev/null
> >> +++ b/freebsd/lib/libc/gen/confstr.c
> >> @@ -0,0 +1,127 @@
> >> +/*-
> >> + * SPDX-License-Identifier: BSD-3-Clause
> >> + *
> >> + * Copyright (c) 1993
> >> + *     The Regents of the University of California.  All rights
> reserved.
> >> + *
> >> + * Redistribution and use in source and binary forms, with or without
> >> + * modification, are permitted provided that the following conditions
> >> + * are met:
> >> + * 1. Redistributions of source code must retain the above copyright
> >> + *    notice, this list of conditions and the following disclaimer.
> >> + * 2. Redistributions in binary form must reproduce the above copyright
> >> + *    notice, this list of conditions and the following disclaimer in
> the
> >> + *    documentation and/or other materials provided with the
> distribution.
> >> + * 3. Neither the name of the University nor the names of its
> contributors
> >> + *    may be used to endorse or promote products derived from this
> software
> >> + *    without specific prior written permission.
> >> + *
> >> + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
> AND
> >> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
> THE
> >> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
> PURPOSE
> >> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
> LIABLE
> >> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> CONSEQUENTIAL
> >> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
> GOODS
> >> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> INTERRUPTION)
> >> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
> STRICT
> >> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
> ANY WAY
> >> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
> OF
> >> + * SUCH DAMAGE.
> >> + */
> >> +
> >> +#include <sys/cdefs.h>
> >> +__SCCSID("@(#)confstr.c        8.1 (Berkeley) 6/4/93");
> >> +__FBSDID("$FreeBSD$");
> >> +
> >> +#include <sys/param.h>
> >> +
> >> +#include <errno.h>
> >> +#include <limits.h>
> >> +#include <paths.h>
> >> +#include <string.h>
> >> +#include <unistd.h>
> >> +
> >> +
> >> +size_t
> >> +confstr(int name, char *buf, size_t len)
> >> +{
> >> +       const char *p;
> >> +       const char UPE[] = "unsupported programming environment";
> >> +
> >> +       switch (name) {
> >> +#ifndef __rtems__
> >> +       case _CS_PATH:
> >> +               p = _PATH_STDPATH;
> >> +               goto docopy;
> >> +#endif
> >> +               /*
> >> +                * POSIX/SUS ``Programming Environments'' stuff
> >> +                *
> >> +                * We don't support more than one programming
> environment
> >> +                * on any platform (yet), so we just return the empty
> >> +                * string for the environment we are compiled for,
> >> +                * and the string "unsupported programming environment"
> >> +                * for anything else.  (The Standard says that if these
> >> +                * values are used on a system which does not support
> >> +                * this environment -- determined via sysconf() -- then
> >> +                * the value we return is unspecified.  So, we return
> >> +                * something which will cause obvious breakage.)
> >> +                */
> >> +       case _CS_POSIX_V6_ILP32_OFF32_CFLAGS:
> >> +       case _CS_POSIX_V6_ILP32_OFF32_LDFLAGS:
> >> +       case _CS_POSIX_V6_ILP32_OFF32_LIBS:
> >> +       case _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS:
> >> +       case _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS:
> >> +       case _CS_POSIX_V6_LPBIG_OFFBIG_LIBS:
> >> +               /*
> >> +                * These two environments are never supported.
> >> +                */
> >> +               p = UPE;
> >> +               goto docopy;
> >> +
> >> +       case _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS:
> >> +       case _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS:
> >> +       case _CS_POSIX_V6_ILP32_OFFBIG_LIBS:
> >> +#ifndef __rtems__
> >> +       if (sizeof(long) * CHAR_BIT == 32 &&
> >> +                   sizeof(off_t) > sizeof(long))
> >> +                       p = "";
> >> +               else
> >> +#endif
> >> +                       p = UPE;
> >> +               goto docopy;
> >> +
> >> +       case _CS_POSIX_V6_LP64_OFF64_CFLAGS:
> >> +       case _CS_POSIX_V6_LP64_OFF64_LDFLAGS:
> >> +       case _CS_POSIX_V6_LP64_OFF64_LIBS:
> >> +#ifndef __rtems__
> >> +               if (sizeof(long) * CHAR_BIT >= 64 &&
> >> +                   sizeof(void *) * CHAR_BIT >= 64 &&
> >> +                   sizeof(int) * CHAR_BIT >= 32 &&
> >> +                   sizeof(off_t) >= sizeof(long))
> >> +                       p = "";
> >> +               else
> >> +#endif
> >> +                       p = UPE;
> >> +               goto docopy;
> >> +#ifndef __rtems__
> >> +       case _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS:
> >> +               /* XXX - should have more complete coverage */
> >> +               if (sizeof(long) * CHAR_BIT >= 64)
> >> +                       p = "_POSIX_V6_LP64_OFF64";
> >> +               else
> >> +                       p = "_POSIX_V6_ILP32_OFFBIG";
> >> +               goto docopy;
> >> +#endif
> >> +
> >> +docopy:
> >> +               if (len != 0 && buf != NULL)
> >> +                       strlcpy(buf, p, len);
> >> +               return (strlen(p) + 1);
> >> +
> >> +       default:
> >> +               errno = EINVAL;
> >> +               return (0);
> >> +       }
> >> +       /* NOTREACHED */
> >> +}
> >> diff --git a/libbsd.py b/libbsd.py
> >> index 812674a6..9beba660 100644
> >> --- a/libbsd.py
> >> +++ b/libbsd.py
> >> @@ -2952,6 +2952,7 @@ class user_space(builder.Module):
> >>                  'lib/libc/gen/getdomainname.c',
> >>                  'lib/libc/gen/gethostname.c',
> >>                  'lib/libc/gen/sethostname.c',
> >> +                'lib/libc/gen/confstr.c',
> >>                  'lib/libc/inet/inet_addr.c',
> >>                  'lib/libc/inet/inet_cidr_ntop.c',
> >>                  'lib/libc/inet/inet_cidr_pton.c',
> >> --
> >> 2.17.1
> >>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200812/b5a6e418/attachment-0001.html>


More information about the devel mailing list