diff options
author | Matt Caswell <matt@openssl.org> | 2014-12-19 10:55:54 +0000 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2014-12-19 14:11:20 +0000 |
commit | c4b969639a4ace587f67b7cda86f8fbdcb0e79ce (patch) | |
tree | 5c26d2aae7a1095a7cf4347d2ea73d26125c7096 | |
parent | bfb2e4b280b613350717c9b69a33d497e01c3a42 (diff) | |
download | openssl-c4b969639a4ace587f67b7cda86f8fbdcb0e79ce.zip openssl-c4b969639a4ace587f67b7cda86f8fbdcb0e79ce.tar.gz openssl-c4b969639a4ace587f67b7cda86f8fbdcb0e79ce.tar.bz2 |
Fix a problem if CFLAGS is too long cversion.c fails to compile when config
is run with --strict-warnings.
Reviewed-by: Richard Levitte <levitte@openssl.org>
(cherry picked from commit 488f16e31b8f5ec2513410929325d0830d76762d)
-rw-r--r-- | crypto/Makefile | 7 | ||||
-rw-r--r-- | crypto/cversion.c | 15 | ||||
-rwxr-xr-x | util/mkbuildinf.pl | 35 |
3 files changed, 39 insertions, 18 deletions
diff --git a/crypto/Makefile b/crypto/Makefile index b2e85df..70e3b84 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -53,12 +53,7 @@ top: all: shared buildinf.h: ../Makefile - ( echo "#ifndef MK1MF_BUILD"; \ - echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */'; \ - echo ' #define CFLAGS "$(CC) $(CFLAG)"'; \ - echo ' #define PLATFORM "$(PLATFORM)"'; \ - echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \ - echo '#endif' ) >buildinf.h + $(PERL) $(TOP)/util/mkbuildinf.pl "$(CFLAGS)" "$(PLATFORM)" >buildinf.h x86cpuid.s: x86cpuid.pl perlasm/x86asm.pl $(PERL) x86cpuid.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@ diff --git a/crypto/cversion.c b/crypto/cversion.c index ea9f25f..0336ada 100644 --- a/crypto/cversion.c +++ b/crypto/cversion.c @@ -69,10 +69,7 @@ const char *SSLeay_version(int t) if (t == SSLEAY_BUILT_ON) { #ifdef DATE - static char buf[sizeof(DATE)+11]; - - BIO_snprintf(buf,sizeof buf,"built on: %s",DATE); - return(buf); + return(DATE); #else return("built on: date not available"); #endif @@ -80,10 +77,7 @@ const char *SSLeay_version(int t) if (t == SSLEAY_CFLAGS) { #ifdef CFLAGS - static char buf[sizeof(CFLAGS)+11]; - - BIO_snprintf(buf,sizeof buf,"compiler: %s",CFLAGS); - return(buf); + return(cflags); #else return("compiler: information not available"); #endif @@ -91,10 +85,7 @@ const char *SSLeay_version(int t) if (t == SSLEAY_PLATFORM) { #ifdef PLATFORM - static char buf[sizeof(PLATFORM)+11]; - - BIO_snprintf(buf,sizeof buf,"platform: %s", PLATFORM); - return(buf); + return(PLATFORM); #else return("platform: information not available"); #endif diff --git a/util/mkbuildinf.pl b/util/mkbuildinf.pl new file mode 100755 index 0000000..ca02d7b --- /dev/null +++ b/util/mkbuildinf.pl @@ -0,0 +1,35 @@ +#!/usr/local/bin/perl + +my ($cflags, $platform) = @ARGV; + +$cflags = "compiler: $cflags"; +$date = localtime(); +print <<"END_OUTPUT"; +#ifndef MK1MF_BUILD + /* auto-generated by util/mkbuildinf.pl for crypto/cversion.c */ + #define CFLAGS + /* + * Generate CFLAGS as an array of individual characters. This is a + * workaround for the situation where CFLAGS gets too long for a C90 string + * literal + */ + static const char cflags[] = { +END_OUTPUT +my $ctr = 0; +foreach my $c (split //, $cflags) { + # Max 18 characters per line + if (($ctr++ % 18) == 0) { + if ($ctr != 0) { + print "\n"; + } + print " "; + } + print "'$c',"; +} +print <<"END_OUTPUT"; +'\\0' + }; + #define PLATFORM "platform: $platform" + #define DATE "built on: $date" +#endif +END_OUTPUT |