+ # 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"