> Am 24.10.2019 um 23:41 schrieb Laurent Bercot <[email protected]>: > > > Excellent analysis, as always. :) Thank you. > > >> * If GNU libc is used, a 'choose cl' test is unreliable. >> * GNU/Hurd and GNU/k*BSD would be 'getrandom: no' OSes, at least until >> the libc is updated to make a system call on GNU/kFreeBSD [1] >> * A 'choose clr' test would be reliable. >> * Any other alternative (passing an LDFLAGS that produces a build >> failure, overriding the result of tests, or whatever) kind of implies >> knowledge about what the outcome of the detection is going to be, >> anyway, doesn't it? It's not really a detection. > > - I will temporarily make it a 'choose clr' test. > - However, I think this is a misdesign in the glibc, that accomplishes > nothing else than break autodetection. As such, it should be reported > to the glibc team. > - Either this misdesign breaks autoconf too, or autoconf has a way of > working around it. (Or nobody ever tests for getrandom(), but I doubt > it - some configure scripts test for strcmp(), so, yeah.)
strcmp is C99 - and it's not "sometimes surprisingly unimplemented". > - I have no time to take care of the real issue for at least a week. > Could anyone please: > * investigate how autoconf deals with it? I digged a bit for that. As said, generally autoconf doesn't deal with glibc or Linux specialities (it does in 90s ... - that causes more trouble than it solves). Another project using getrandom() does the run test, too: * https://github.com/zeromq/libzmq/pull/3085 A hint to LibreSSL in https://lwn.net/Articles/800509/ delivered a reasonable answer: sno@beaker:~/prj/libressl-3.0.2$ grep -Rl getrandom * ChangeLog crypto/compat/getentropy_linux.c sno@beaker:~/prj/libressl-3.0.2$ less crypto/compat/getentropy_linux.c ... #if defined(SYS_getrandom) && defined(GRND_NONBLOCK) static int getentropy_getrandom(void *buf, size_t len); #endif ... sno@beaker:~/prj/libressl-3.0.2$ grep -Rl SYS_getrandom * crypto/compat/getentropy_linux.c sno@beaker:~/prj/libressl-3.0.2$ grep -Rl SYS_getrandom /usr/include/ /usr/include/bits/syscall.h /usr/include/x86_64-linux-gnu/bits/syscall.h /usr/include/x86_64-linux-gnu/expat_config.h Seems, there isn't much need in probing at configure stage ... > * report the thing to libc-alpha? > > Thanks in advance, Hope it helps a little bit. Cheers -- Jens Rehsack - [email protected]
signature.asc
Description: Message signed with OpenPGP
