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

Reply via email to