View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0015849 | CMake | CMake | public | 2015-11-17 16:08 | 2016-05-02 08:30 | ||||
Reporter | Chris M | ||||||||
Assigned To | Bill Hoffman | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | Visual Studio 14 Win64 | OS | Windows | OS Version | 10 | ||||
Product Version | CMake 3.4 | ||||||||
Target Version | CMake 3.4.1 | Fixed in Version | CMake 3.4.1 | ||||||
Summary | 0015849: Linker failure when WINDOWS_EXPORT_ALL_SYMBOLS and /bigobj are used together in a Win64 build. | ||||||||
Description | Shared library fails to link when attempting to use CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS when compiled with /bigobj. Only tested using Visual Studio 14 2015 Win64. Test project attached. It appears that printf-family function symbol names are being modified (leading '_' removed) when cmake is processing *.obj into exportall.def. | ||||||||
Steps To Reproduce | Extract attached zip. > mkdir build > cd build > cmake ../ -G "Visual Studio 14 2015 Win64" -DBUILD_BIGOBJ=ON > cmake --build . --release Debug | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | windows-symbols-export-all-bigobj.zip [^] (893 bytes) 2015-11-17 16:08 | ||||||||
Relationships | |
Relationships |
Notes | |
(0039895) Bill Hoffman (manager) 2015-11-19 17:28 |
Thanks for the report. I found the issue. Here is a patch for the fix: diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index 64621e0..e7263ae 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -422,7 +422,7 @@ DumpFile(const char* filename, DumpSymbols<cmANON_OBJECT_HEADER_BIGOBJ, cmIMAGE_SYMBOL_EX> symbolDumper((cmANON_OBJECT_HEADER_BIGOBJ*) lpFileBase, symbols, dataSymbols, - (dosHeader->e_magic == IMAGE_FILE_MACHINE_AMD64)); + (h->Machine == IMAGE_FILE_MACHINE_AMD64)); symbolDumper.DumpObjFile(); } else { printf("unrecognized file format in '%s'\n", filename); Should be in 3.4.1 coming out soon. The problem was /bigobj with 64bit. The code was not determining that it was 64 bit for bigobj and then did not handle leading _ correctly. |
(0039897) Brad King (manager) 2015-11-20 08:55 |
Fixed in 'master' here: Fix auto export symbols for Dlls containing /bigobj for 64bit builds. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=75004280 [^] It had to be backported to 'release' separately due to a conflict: Fix auto export symbols for Dlls containing /bigobj for 64bit builds. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c7ddc5f4 [^] The latter has been queued for merge to 'release' for inclusion in 3.4.1. |
(0040965) Robert Maynard (manager) 2016-05-02 08:30 |
Closing resolved issues that have not been updated in more than 4 months. |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2015-11-17 16:08 | Chris M | New Issue | |
2015-11-17 16:08 | Chris M | File Added: windows-symbols-export-all-bigobj.zip | |
2015-11-17 16:15 | Brad King | Assigned To | => Bill Hoffman |
2015-11-17 16:15 | Brad King | Status | new => assigned |
2015-11-19 17:28 | Bill Hoffman | Note Added: 0039895 | |
2015-11-20 08:55 | Brad King | Note Added: 0039897 | |
2015-11-20 08:55 | Brad King | Status | assigned => resolved |
2015-11-20 08:55 | Brad King | Resolution | open => fixed |
2015-11-20 08:55 | Brad King | Fixed in Version | => CMake 3.4.1 |
2015-11-20 08:55 | Brad King | Target Version | => CMake 3.4.1 |
2015-11-20 08:55 | Brad King | Description Updated | |
2016-05-02 08:30 | Robert Maynard | Note Added: 0040965 | |
2016-05-02 08:30 | Robert Maynard | Status | resolved => closed |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |