Boost logo

Boost :

Subject: [boost] Embedding manifest into the regression tests (was: [testers] [log] Problems with tests)
From: Sergey Cheban (s.cheban_at_[hidden])
Date: 2013-05-13 08:06:01


On 13.05.2013 13:23, Andrey Semashev wrote:> On Mon, May 13, 2013 at
12:58 PM, Sergey Cheban <s.cheban_at_[hidden]> wrote:

>> The problem is related to the fact that MS Windows (at least, Windows
>> Server 2012) requires elevation for the execulables with names that
>> match the *patch*.exe mask. So, util_dynamic_type_disPATCHer and
>> util_static_type_disPATCHer require elevation.
> lol, what a wonderful and obvious security policy on MS part, isn't
> it? :)

I've found that the same tests succeeded for the msvc-9.0 toolset. It is
because the manifest file is generated for this toolset. I've found that
the "C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\crtdefs.h" file contais the following:
===============================================
#pragma comment(linker,"/manifestdependency:\"type='win32' " \
         "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".DebugCRT' " \
         "version='" _CRT_ASSEMBLY_VERSION "' " \
         "processorArchitecture='x86' " \
         "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
===============================================
and the "C:\Program Files (x86)\Microsoft Visual Studio
10.0\VC\include\crtdefs.h" and "C:\Program Files (x86)\Microsoft Visual
Studio 11.0\VC\include\crtdefs.h" contain no such code.

The bjam scripts embed the manifest into the executable if it was
generated by the linker. And the linker generates the manifest by
default if the /manifestdependency option was specified.

May be, it is reasonable to add the "/MANIFEST" to the linker options
explicitly.

Btw, I see the following in the msvc.jam:
================================================
     if [ MATCH ^([67]) : $(version) ]
     {
         ....
     }
     else
     {
         ....
         # Make sure that manifest will be generated even if there is no
         # dependencies to put there.
         toolset.flags $(toolset).link LINKFLAGS
$(conditions)/<embed-manifest>off : /MANIFEST ;
     }
================================================

-- 
Sergey Cheban

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk