This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Definition of __USE_MISC?


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__;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]