diff options
author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2024-01-22 10:47:42 +0200 |
---|---|---|
committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2024-01-24 12:21:05 +0200 |
commit | 625c4bdacef4173f94200632362e25e537ad5d21 (patch) | |
tree | c9e043ce1a65e945055bd805db6891a999bc9e7e /platform/linuxbsd/godot_linuxbsd.cpp | |
parent | 0bcc0e92b3f0ac57d4c4650722f347593a258572 (diff) | |
download | redot-engine-625c4bdacef4173f94200632362e25e537ad5d21.tar.gz |
[Linux] Add support for PCK embedding section with non GNU-ld linkers.
Diffstat (limited to 'platform/linuxbsd/godot_linuxbsd.cpp')
-rw-r--r-- | platform/linuxbsd/godot_linuxbsd.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/platform/linuxbsd/godot_linuxbsd.cpp b/platform/linuxbsd/godot_linuxbsd.cpp index efad9c8594..a2b6fbeb25 100644 --- a/platform/linuxbsd/godot_linuxbsd.cpp +++ b/platform/linuxbsd/godot_linuxbsd.cpp @@ -41,6 +41,18 @@ #include <sys/resource.h> #endif +// For export templates, add a section; the exporter will patch it to enclose +// the data appended to the executable (bundled PCK). +#if !defined(TOOLS_ENABLED) && defined(__GNUC__) +static const char dummy[8] __attribute__((section("pck"), used)) = { 0 }; + +// Dummy function to prevent LTO from discarding "pck" section. +extern "C" const char *pck_section_dummy_call() __attribute__((used)); +extern "C" const char *pck_section_dummy_call() { + return &dummy[0]; +} +#endif + int main(int argc, char *argv[]) { #if defined(SANITIZERS_ENABLED) // Note: Set stack size to be at least 30 MB (vs 8 MB default) to avoid overflow, address sanitizer can increase stack usage up to 3 times. |