nodir | 62c9184e | 2015-08-25 00:57:46 | [diff] [blame] | 1 | # Windows Split DLLs |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 2 | |
nodir | 62c9184e | 2015-08-25 00:57:46 | [diff] [blame] | 3 | A build mode where chrome.dll is split into two separate DLLs. This was |
| 4 | undertaken as one possible workaround for toolchain limitations on Windows. |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 5 | |
| 6 | ## How |
| 7 | |
Daniel Bratell | f73f0df | 2018-09-24 13:52:49 | [diff] [blame] | 8 | Split DLL is now default on Windows and controlled by the |
| 9 | `is_multi_dll_chrome` gn variable. |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 10 | |
Daniel Bratell | f73f0df | 2018-09-24 13:52:49 | [diff] [blame] | 11 | `is_multi_dll_chrome` applies only to chrome.dll (and not test binaries). |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 12 | |
| 13 | ## Details |
| 14 | |
nodir | 62c9184e | 2015-08-25 00:57:46 | [diff] [blame] | 15 | This forcible split is implemented by putting .lib files in either one DLL or |
| 16 | the other, and causing unresolved externals that result during linking to be |
| 17 | forcibly exported from the other DLL. This works relatively cleanly for function |
| 18 | import/export, however it cannot work for data export. |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 19 | |
nodir | 62c9184e | 2015-08-25 00:57:46 | [diff] [blame] | 20 | Some more details can be found on the initial commit of the split_link script |
xiaoyin.l | 1003c0b | 2016-12-06 02:51:17 | [diff] [blame] | 21 | https://src.chromium.org/viewvc/chrome?revision=200049&view=revision and the |
| 22 | associated bugs: https://crbug.com/237249 https://crbug.com/237267. |