On Fri, 14 Jun 2019 07:13:21 +0200, Viktor Dukhovni wrote: > > #define ERR_raise_error ERR_raise_error_internal(__FILE__, __LINE__, > > __FUNC__) > > Well, __FUNC__ is entirely non-standard, and __func__ is C99. Are > we ready to abandon C89/C90? If not, then __func__ (and variants) > becomes compiler-specific.
We've had the argument about C language versions before, and it seems we're currently staying with C90, 'cause we have some prominent users that are stuck with that version. > In test/testutil.h, we have some of the requisite gymnastics: > > # if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L > # if defined(_MSC_VER) > # define TEST_CASE_NAME __FUNCTION__ > # else > # define testutil_stringify_helper(s) #s > # define testutil_stringify(s) testutil_stringify_helper(s) > # define TEST_CASE_NAME __FILE__ ":" testutil_stringify(__LINE__) > # endif /* _MSC_VER */ > # else > # define TEST_CASE_NAME __func__ > # endif /* __STDC_VERSION__ */ > > While the GCC manual: > http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Function-Names.html > suggests: > > #if __STDC_VERSION__ < 199901L > # if __GNUC__ >= 2 > # define __func__ __FUNCTION__ > # else > # define __func__ "<unknown>" > # endif > #endif > > we would also need similar for any other pre-C99 supported compilers. Yes. We already have our own aliases for __FILE__ and __LINE__ (see include/openssl/opensslconf.h.in), we can simply add an OPENSSL_FUNC that's appropriately defined depending on what the compiler supports. Side note: opensslconf.h.in isn't the best place for this kind of macro, not even for OPENSSL_FILE and OPENSSL_LINE. I'd rather move all that to e_os2.h. Cheers, Richard -- Richard Levitte levi...@openssl.org OpenSSL Project http://www.openssl.org/~levitte/