diff options
Diffstat (limited to 'toolkit/library/StaticXULComponentsEnd')
-rw-r--r-- | toolkit/library/StaticXULComponentsEnd/StaticXULComponentsEnd.cpp | 13 | ||||
-rw-r--r-- | toolkit/library/StaticXULComponentsEnd/moz.build | 15 |
2 files changed, 28 insertions, 0 deletions
diff --git a/toolkit/library/StaticXULComponentsEnd/StaticXULComponentsEnd.cpp b/toolkit/library/StaticXULComponentsEnd/StaticXULComponentsEnd.cpp new file mode 100644 index 000000000..28fd9d484 --- /dev/null +++ b/toolkit/library/StaticXULComponentsEnd/StaticXULComponentsEnd.cpp @@ -0,0 +1,13 @@ +#include "mozilla/Module.h" + +/* Ensure end_kPStaticModules is at the end of the .kPStaticModules section + * on Windows. Somehow, placing the object last is not enough with PGO/LTCG. */ +#ifdef _MSC_VER +/* Sections on Windows are in two parts, separated with $. When linking, + * sections with the same first part are all grouped, and ordered + * alphabetically with the second part as sort key. */ +# pragma section(".kPStaticModules$Z", read) +# undef NSMODULE_SECTION +# define NSMODULE_SECTION __declspec(allocate(".kPStaticModules$Z"), dllexport) +#endif +NSMODULE_DEFN(end_kPStaticModules) = nullptr; diff --git a/toolkit/library/StaticXULComponentsEnd/moz.build b/toolkit/library/StaticXULComponentsEnd/moz.build new file mode 100644 index 000000000..67989edd4 --- /dev/null +++ b/toolkit/library/StaticXULComponentsEnd/moz.build @@ -0,0 +1,15 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +SOURCES += [ + 'StaticXULComponentsEnd.cpp', +] + +# Don't let LTO reorder StaticXULComponentsStart.o. +if '-flto' in CONFIG['OS_CXXFLAGS']: + SOURCES['StaticXULComponentsEnd.cpp'].flags += ['-fno-lto'] + +Library('StaticXULComponentsEnd') + +DEFINES['MOZILLA_INTERNAL_API'] = True |