This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Definition of __USE_MISC?
- From: Florian Weimer <fweimer at redhat dot com>
- To: Sebastian Huber <sebastian dot huber at embedded-brains dot de>, libc-alpha at sourceware dot org
- Date: Thu, 5 Oct 2017 11:50:29 +0200
- Subject: Re: Definition of __USE_MISC?
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=fweimer at redhat dot com
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 70ECD7E42E
- References: <5421ae5a-3e23-bd54-4c8e-79997ae56906@embedded-brains.de>
On 10/05/2017 08:07 AM, Sebastian Huber wrote:
Hello,
according to the comment in features.h we have:
__USE_MISC Define things from 4.3BSD or System V Unix.
What about interfaces that are present on newer BSD systems by default,
e.g. we have in glibc strings.h:
/* The following two functions are non-standard but necessary for non-32
bit
platforms. */
# ifdef __USE_GNU
extern int ffsl (long int __l) __THROW __attribute_const__;
__extension__ extern int ffsll (long long int __ll)
__THROW __attribute_const__;
# endif
In FreeBSD strings.h we have:
#if __BSD_VISIBLE
int ffsl(long) __pure2;
int ffsll(long long) __pure2;
int fls(int) __pure2;
int flsl(long) __pure2;
int flsll(long long) __pure2;
#endif
Would it be possible to change the guard in glibc to __USE_MISC?
Yes, it should be a simple change. I was worried about the long long
part initially, but we have precedent for using long long under
__USE_MISC (strtouq in <stdlib.h>).
Patch attached.
Thanks,
Florian
Recent BSDs declare these functions, too.
2017-10-05 Florian Weimer <fweimer@redhat.com>
* string/strings.h (ffsl, ffsll): Declare under __USE_MISC, not
just __USE_GNU.
diff --git a/string/strings.h b/string/strings.h
index 630b3adc23..27508e31b8 100644
--- a/string/strings.h
+++ b/string/strings.h
@@ -106,7 +106,7 @@ extern int ffs (int __i) __THROW __attribute_const__;
/* The following two functions are non-standard but necessary for non-32 bit
platforms. */
-# ifdef __USE_GNU
+# ifdef __USE_MISC
extern int ffsl (long int __l) __THROW __attribute_const__;
__extension__ extern int ffsll (long long int __ll)
__THROW __attribute_const__;