X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=Configurations%2Fdescrip.mms.tmpl;h=d8c0d7af05dc0391aae7bf1bd48a5b12e3dd9050;hp=924d63fe548bf85f235447bd2b9c1d7c3ae0c9ec;hb=e3fb4d3d52e188b83ccb8506aa2f16cb686f4d6c;hpb=dc660c70b52c552aa4eb9659963bfbe6ab18bec0 diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index 924d63fe54..d8c0d7af05 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -63,17 +63,13 @@ } my $sd1 = sourcedir("ssl","record"); my $sd2 = sourcedir("ssl","statem"); - $unified_info{before}->{"[.test]heartbeat_test.OBJ"} - = $unified_info{before}->{"[.test]ssltest_old.OBJ"} - = qq(record_include = F\$PARSE("$sd1","A.;",,,"SYNTAX_ONLY") - "A.;" - define record 'record_include' - statem_include = F\$PARSE("$sd2","A.;",,,"SYNTAX_ONLY") - "A.;" - define statem 'statem_include'); - $unified_info{after}->{"[.test]heartbeat_test.OBJ"} - = $unified_info{after}->{"[.test]ssltest.OBJ"} - = qq(deassign statem - deassign record); - foreach (grep /^\[\.ssl\.(?:record|statem)\].*\.o$/, keys %{$unified_info{sources}}) { + my @ssl_locl_users = + ( "[.test]cipher_overhead_test.o", + "[.test]dtls_mtu_test.o", + "[.test]heartbeat_test.o", + "[.test]ssltest_old.o", + grep /^\[\.ssl\.(?:record|statem)\].*\.o$/, keys %{$unified_info{sources}} ); + foreach (@ssl_locl_users) { (my $x = $_) =~ s|\.o$|.OBJ|; $unified_info{before}->{$x} = qq(record_include = F\$PARSE("$sd1","A.;",,,"SYNTAX_ONLY") - "A.;" @@ -226,7 +222,7 @@ NODEBUG=@ $(NODEBUG) ! $(NODEBUG) ! Figure out the architecture $(NODEBUG) ! - $(NODEBUG) arch == f$edit( f$getsyi( "arch_name"), "upcase") + $(NODEBUG) arch = f$edit( f$getsyi( "arch_name"), "upcase") $(NODEBUG) ! $(NODEBUG) ! Set up logical names for the libraries, so LINK and $(NODEBUG) ! running programs can use them. @@ -267,8 +263,10 @@ test tests : build_generated, build_programs_nodep, build_engines_nodep, - DEFINE SRCTOP {- sourcedir() -} DEFINE BLDTOP {- builddir() -} DEFINE OPENSSL_ENGINES {- builddir("engines") -} + DEFINE OPENSSL_DEBUG_MEMORY "on" IF "$(VERBOSE)" .NES. "" THEN DEFINE VERBOSE "$(VERBOSE)" $(PERL) {- sourcefile("test", "run_tests.pl") -} $(TESTS) + DEASSIGN OPENSSL_DEBUG_MEMORY DEASSIGN OPENSSL_ENGINES DEASSIGN BLDTOP DEASSIGN SRCTOP @@ -517,7 +515,7 @@ debug_logicals : # Building targets ################################################### -configdata.pm : {- join(" ", sourcefile("Configurations", "descrip.mms.tmpl"), sourcefile("Configurations", "common.tmpl")) -} $(SRCDIR)Configure $(SRCDIR)config.com {- join(" ", @{$config{build_infos}}, @{$config{conf_files}}) -} +configdata.pm : $(SRCDIR)Configure $(SRCDIR)config.com {- join(" ", @{$config{build_file_templates}}, @{$config{build_infos}}, @{$config{conf_files}}) -} @ WRITE SYS$OUTPUT "Reconfiguring..." perl $(SRCDIR)Configure reconf @ WRITE SYS$OUTPUT "*************************************************" @@ -693,10 +691,11 @@ EOF # previous line's file spec as default, so if no directory spec # is present in the current line and the previous line has one that # doesn't apply, you're in for a surprise. - my $write_opt = + my $write_opt1 = join(",-\"\n\t", map { my $x = $_ =~ /\[/ ? $_ : "[]".$_; "WRITE OPT_FILE \"$x" } @objs). - "\"\n\t". + "\""; + my $write_opt2 = join("\n\t", map { my $x = $_ =~ /\[/ ? $_ : "[]".$_; $x =~ s|(\.EXE)|$1/SHARE|; $x =~ s|(\.OLB)|$1/LIB|; @@ -706,7 +705,8 @@ EOF $lib.EXE : $deps OPEN/WRITE/SHARE=READ OPT_FILE $lib.OPT TYPE $engine_opt /OUTPUT=OPT_FILE: - $write_opt + $write_opt1 + $write_opt2 CLOSE OPT_FILE LINK /MAP=$lib.MAP /FULL/SHARE=$lib.EXE $lib.OPT/OPT \$(EX_LIBS) - PURGE $lib.EXE,$lib.OPT,$lib.MAP @@ -739,21 +739,59 @@ EOF # previous line's file spec as default, so if no directory spec # is present in the current line and the previous line has one that # doesn't apply, you're in for a surprise. - my $write_opt = + my $write_opt1 = join(",-\"\n\t", map { my $x = $_ =~ /\[/ ? $_ : "[]".$_; "WRITE OPT_FILE \"$x" } @objs). - "\"\n\t". + "\""; + my $write_opt2 = join("\n\t", map { my $x = $_ =~ /\[/ ? $_ : "[]".$_; $x =~ s|(\.EXE)|$1/SHARE|; $x =~ s|(\.OLB)|$1/LIB|; "WRITE OPT_FILE \"$x\"" } @deps) || "\@ !"; + # The linking commands looks a bit complex, but it's for good reason. + # When you link, say, foo.obj, bar.obj and libsomething.exe/share, and + # bar.obj happens to have a symbol that also exists in libsomething.exe, + # the linker will warn about it, loudly, and will then choose to pick + # the first copy encountered (the one in bar.obj in this example). + # On Unix and on Windows, the corresponding maneuvre goes through + # silently with the same effect. + # With some test programs, made for checking the internals of OpenSSL, + # we do this kind of linking deliberately, picking a few specific object + # files from within [.crypto] or [.ssl] so we can reach symbols that are + # otherwise unreachable (since the shareable images only exports the + # symbols listed in [.util]*.num), and then with the shared libraries + # themselves. So we need to silence the warning about multiply defined + # symbols, to mimic the way linking work on Unix and Windows, and so + # the build isn't interrupted (MMS stops when warnings are signaled, + # by default), and so someone building doesn't have to worry where it + # isn't necessary. If there are other warnings, however, we show them + # and let it break the build. return <<"EOF"; $bin.EXE : $deps OPEN/WRITE/SHARE=READ OPT_FILE $bin.OPT - $write_opt + $write_opt1 + $write_opt2 CLOSE OPT_FILE - LINK/EXEC=$bin.EXE \$(LDFLAGS) $bin.OPT/OPT \$(EX_LIBS) + - pipe SPAWN/WAIT/NOLOG/OUT=$bin.LINKLOG - + LINK/EXEC=$bin.EXE \$(LDFLAGS) $bin.OPT/OPT \$(EX_LIBS) ; - + link_status = \$status ; link_severity = link_status .AND. 7 + @ search_severity = 1 + -@ IF link_severity .EQ. 0 THEN - + pipe SEARCH $bin.LINKLOG "%","-"/MATCH=AND | - + SPAWN/WAIT/NOLOG/OUT=NLA0: - + SEARCH SYS\$INPUT: "-W-MULDEF,"/MATCH=NOR ; - + search_severity = \$severity + @ ! search_severity is 3 when the last search didn't find any matching + @ ! string: %SEARCH-I-NOMATCHES, no strings matched + @ ! If that was the result, we pretend linking got through without + @ ! fault or warning. + @ IF search_severity .EQ. 3 THEN link_severity = 1 + @ ! At this point, if link_severity shows that there was a fault + @ ! or warning, make sure to restore the linking status. + -@ IF .NOT. link_severity THEN TYPE $bin.LINKLOG + -@ DELETE $bin.LINKLOG;* + @ IF .NOT. link_severity THEN SPAWN/WAIT/NOLOG EXIT 'link_status' - PURGE $bin.EXE,$bin.OPT EOF }