RT3628: Allow filenames to be eliminated from compiled library
authorDavid Woodhouse <David.Woodhouse@intel.com>
Thu, 30 Jul 2015 10:45:25 +0000 (11:45 +0100)
committerRich Salz <rsalz@openssl.org>
Wed, 17 Feb 2016 19:19:46 +0000 (14:19 -0500)
commit02f7114a7fbb3f3ac171bae87be8c13bc69e4005
tree1a2093ae78864948c05e4e31c3635bb36931a083
parent95b2ebdf99a5fbf9e1f3f71a5ebd9728d57addf5
RT3628: Allow filenames to be eliminated from compiled library

Although I explicitly don't care about the tinfoil-hat reason given in
the initial opening of RT#3628, that "paths usually contain private
information", there *are* situations where it's useful to eliminate the
filenames from the compiled binary.

The two reasons we do care about in the context of firmware such as EDK2
are that it allows for a smaller footprint, and it is also a necessary
component of a binary-reproducible build.

To that end, introduce OPENSSL_FILE and OPENSSL_LINE macros, defining
them to __FILE__ and __LINE__ respectively in the normal case, but to
"" and 0 when OPENSSL_NO_FILENAMES is set.

This is mostly a naïve invocation of
 $ sed 's/__\([FL]I[NL]E\)__/OPENSSL_\1/g' -i `git grep -l __LINE__`
but with a few instances change to just print the function name instead
(although those probably need to die anyway) and test cases left untouched.

Signed-off-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Configure