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 <j...@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 <eshandhawa...@gmail.com> wrote: >> >> File added to LIBBSD >> >> Closes #3373 >> Signed-off-by: Eshan dhawan <eshandhawa...@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 >> _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel