[Linux] Add support for PCK embedding section with non GNU-ld linkers.

This commit is contained in:
bruvzg 2024-01-22 10:47:42 +02:00
parent 0bcc0e92b3
commit 625c4bdace
No known key found for this signature in database
GPG key ID: 7960FCF39844EC38
5 changed files with 14 additions and 40 deletions

View file

@ -458,24 +458,6 @@ def configure(env: "Environment"):
if env["execinfo"]:
env.Append(LIBS=["execinfo"])
if not env.editor_build:
import subprocess
import re
linker_version_str = subprocess.check_output(
[env.subst(env["LINK"]), "-Wl,--version"] + env.subst(env["LINKFLAGS"])
).decode("utf-8")
gnu_ld_version = re.search(r"^GNU ld [^$]*(\d+\.\d+)$", linker_version_str, re.MULTILINE)
if not gnu_ld_version:
print(
"Warning: Creating export template binaries enabled for PCK embedding is currently only supported with GNU ld, not gold, LLD or mold."
)
else:
if float(gnu_ld_version.group(1)) >= 2.30:
env.Append(LINKFLAGS=["-T", "platform/linuxbsd/pck_embed.ld"])
else:
env.Append(LINKFLAGS=["-T", "platform/linuxbsd/pck_embed.legacy.ld"])
if platform.system() == "FreeBSD":
env.Append(LINKFLAGS=["-lkvm"])