Hi
   The changes appear to be necessary. I was building Windows QEMU GA on
Fedora 21, MINGW cross-compiler v. 4.9.2, build 20141030, Fedora MinGW
4.9.2-1.fc21 and before the changes, linking failed.

Below is the building log for qga-vss.dll before the changes:

-----
$ make qga/vss-win32/qga-vss.dll
        CHK version_gen.h
  CXX   qga/vss-win32/requester.o
qga/vss-win32/requester.cpp:1:0: warning: -fPIC ignored for target (all
code is position independent)
 /*
 ^
qga/vss-win32/requester.cpp:1:0: warning: -fPIC ignored for target (all
code is position independent)
 /*
 ^
In file included from qga/vss-win32/requester.cpp:17:0:
./inc/win2003/vswriter.h:39:2: warning: 'typedef' was ignored in this
declaration
  };
  ^
./inc/win2003/vswriter.h:47:2: warning: 'typedef' was ignored in this
declaration
  };
  ^
./inc/win2003/vswriter.h:59:2: warning: 'typedef' was ignored in this
declaration
  };
  ^
./inc/win2003/vswriter.h:67:2: warning: 'typedef' was ignored in this
declaration
  };
  ^
./inc/win2003/vswriter.h:75:2: warning: 'typedef' was ignored in this
declaration
  };
  ^
./inc/win2003/vswriter.h:83:5: warning: 'typedef' was ignored in this
declaration
     };
     ^
./inc/win2003/vswriter.h:93:5: warning: 'typedef' was ignored in this
declaration
     };
     ^
./inc/win2003/vswriter.h:103:2: warning: 'typedef' was ignored in this
declaration
  };
  ^
./inc/win2003/vswriter.h:112:2: warning: 'typedef' was ignored in this
declaration
  };
  ^
./inc/win2003/vswriter.h:119:2: warning: 'typedef' was ignored in this
declaration
  };
  ^
  CXX   qga/vss-win32/provider.o
qga/vss-win32/provider.cpp:1:0: warning: -fPIC ignored for target (all code
is position independent)
 /*
 ^
qga/vss-win32/provider.cpp:1:0: warning: -fPIC ignored for target (all code
is position independent)
 /*
 ^
  CXX   qga/vss-win32/install.o
qga/vss-win32/install.cpp:1:0: warning: -fPIC ignored for target (all code
is position independent)
 /*
 ^
qga/vss-win32/install.cpp:1:0: warning: -fPIC ignored for target (all code
is position independent)
 /*
 ^
  LINK  qga/vss-win32/qga-vss.dll
qga/vss-win32/requester.o: In function `WaitForAsync':
/home/jhindin/development/qemu_upstream/qga/vss-win32/requester.cpp:148:
undefined reference to `__stack_chk_fail'
qga/vss-win32/requester.o: In function `requester_freeze':
/home/jhindin/development/qemu_upstream/qga/vss-win32/requester.cpp:435:
undefined reference to `__stack_chk_fail'
qga/vss-win32/requester.o: In function `requester_thaw':
/home/jhindin/development/qemu_upstream/qga/vss-win32/requester.cpp:503:
undefined reference to `__stack_chk_fail'
qga/vss-win32/requester.o: In function `fprintf(_iobuf*, char const*, ...)':
/usr/x86_64-w64-mingw32/sys-root/mingw/include/stdio.h:292: undefined
reference to `__stack_chk_fail'
qga/vss-win32/requester.o:requester.cpp:(.rdata$.refptr.__stack_chk_guard[.refptr.__stack_chk_guard]+0x0):
undefined reference to `__stack_chk_guard'
qga/vss-win32/install.o: In function `errmsg_dialog':
/home/jhindin/development/qemu_upstream/qga/vss-win32/install.cpp:65:
undefined reference to `__stack_chk_fail'
qga/vss-win32/install.o: In function `CreateRegistryKey':
/home/jhindin/development/qemu_upstream/qga/vss-win32/install.cpp:349:
undefined reference to `__stack_chk_fail'
qga/vss-win32/install.o: In function `errmsg(unsigned long, char const*)':
/home/jhindin/development/qemu_upstream/qga/vss-win32/install.cpp:52:
undefined reference to `__stack_chk_fail'
qga/vss-win32/install.o: In function `QGAProviderFind':
/home/jhindin/development/qemu_upstream/qga/vss-win32/install.cpp:175:
undefined reference to `__stack_chk_fail'
qga/vss-win32/install.o: In function `DllUnregisterServer':
/home/jhindin/development/qemu_upstream/qga/vss-win32/install.cpp:445:
undefined reference to `__stack_chk_fail'
qga/vss-win32/install.o:/home/jhindin/development/qemu_upstream/qga/vss-win32/install.cpp:422:
more undefined references to `__stack_chk_fail' follow
collect2: error: ld returned 1 exit status
/home/jhindin/development/qemu_upstream/qga/vss-win32/Makefile.objs:10:
recipe for target 'qga/vss-win32/qga-vss.dll' failed
make: *** [qga/vss-win32/qga-vss.dll] Error 1
------




   Regards,
      Joseph Hindin

On Sun, May 3, 2015 at 11:33 AM, Olga Krishtal <okrish...@parallels.com>
wrote:

> On 11/03/15 17:51, Joseph Hindin wrote:
>
>> Hi
>>
>>     When compiling the QEMU Guest Agent with 64-bit MinGW toolchain
>> version
>> 4.9.2, I run into the following problem: qga-vss.dll linking failed as
>> linker reported a lot of unresolved symbol __stack_chk_fail errors
>> stemming
>> from the stack protection. The attached patch solves the problem by adding
>> libssp to the qga-vss.dll libraries list.
>>
>>     Regards,
>>        Joseph Hindin
>>
>>  Are you sure that it is necessary?
> I worked with VSS-provider in order to check it on 64 bit platform (Win
> Server 2008) , and I did not have such
> problems.
>

Reply via email to