When building an updated version of ports/security/polarssl, I hit the following failure:
[219/427] /usr/ports/pobj/mbedtls-2.6.0/bin/cc -I/usr/ports/pobj/mbedtls-2.6.0/mbedtls-2.6.0/include -I/usr/ports/pobj/mbedtls-2.6.0/mbedtls-2.6.0/tests -O2 -pipe -Wall -Wextra -W -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wno-unused-function -DNDEBUG -MD -MT tests/CMakeFiles/test_suite_hmac_drbg.misc.dir/test_suite_hmac_drbg.misc.c.o -MF tests/CMakeFiles/test_suite_hmac_drbg.misc.dir/test_suite_hmac_drbg.misc.c.o.d -o tests/CMakeFiles/test_suite_hmac_drbg.misc.dir/test_suite_hmac_drbg.misc.c.o -c tests/test_suite_hmac_drbg.misc.c FAILED: tests/CMakeFiles/test_suite_hmac_drbg.misc.dir/test_suite_hmac_drbg.misc.c.o /usr/ports/pobj/mbedtls-2.6.0/bin/cc -I/usr/ports/pobj/mbedtls-2.6.0/mbedtls-2.6.0/include -I/usr/ports/pobj/mbedtls-2.6.0/mbedtls-2.6.0/tests -O2 -pipe -Wall -Wextra -W -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wno-unused-function -DNDEBUG -MD -MT tests/CMakeFiles/test_suite_hmac_drbg.misc.dir/test_suite_hmac_drbg.misc.c.o -MF tests/CMakeFiles/test_suite_hmac_drbg.misc.dir/test_suite_hmac_drbg.misc.c.o.d -o tests/CMakeFiles/test_suite_hmac_drbg.misc.dir/test_suite_hmac_drbg.misc.c.o -c tests/test_suite_hmac_drbg.misc.c main_test.function:411:50: error: cannot take the address of an rvalue of type 'FILE *' (aka 'struct __sFILE *') stdout_fd = redirect_output( &stdout, "/dev/null" ); ^~~~~~~ main_test.function:423:56: error: cannot take the address of an rvalue of type 'FILE *' (aka 'struct __sFILE *') if( !option_verbose && restore_output( &stdout, stdout_fd ) ) ^~~~~~~ 2 errors generated. ninja: build stopped: subcommand failed. And indeed, stdio.h declares stdout as follows: #define stdin (&__sF[0]) #define stdout (&__sF[1]) #define stderr (&__sF[2]) POSIX says pretty much the same as the C standard: The <stdio.h> header shall define the following macros which shall expand to expressions of type "pointer to FILE" that point to the FILE objects associated, respectively, with the standard error, input, and output streams: So maybe libc should expose stdin/out/err as individual, modifiable pointers? This is what FreeBSD seems to do. -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE