Issue #1824 - Support SunOS Linker mapfiles.

Generating OS-appropriate mapfiles from a provided SYMBOL_FILE is
apparently required to work with newer ffvpx. Nothing else in our
codebase actually seemed to require it. Also seems to reduce the amount
of console spam I see relating to symbol visibility during the build
process, and I think it even makes libxul.so link a bit faster.

Signed-off-by: athenian200 <athenian200@outlook.com>
This commit is contained in:
athenian200 2023-11-04 01:43:49 -05:00 • committed by roytam1
commit 42db0b335f
2 changed files with 18 additions and 0 deletions

View file

@ -411,6 +411,10 @@ EXTRA_DSO_LDOPTS += -Wl,--version-script,$(SYMBOLS_FILE)
else else
ifeq ($(OS_TARGET),Darwin) ifeq ($(OS_TARGET),Darwin)
EXTRA_DSO_LDOPTS += -Wl,-exported_symbols_list,$(SYMBOLS_FILE) EXTRA_DSO_LDOPTS += -Wl,-exported_symbols_list,$(SYMBOLS_FILE)
else
ifeq ($(OS_TARGET),SunOS)
EXTRA_DSO_LDOPTS += -Wl,-M,$(SYMBOLS_FILE)
endif
endif endif
endif endif
endif endif

View file

@ -83,6 +83,20 @@ def generate_symbols_file(output, *args):
# }; # };
output.write('{\nglobal:\n %s;\nlocal:\n *;\n};' output.write('{\nglobal:\n %s;\nlocal:\n *;\n};'
% ';\n '.join(symbols)) % ';\n '.join(symbols))
elif buildconfig.substs['OS_TARGET'] == 'SunOS':
# A linker version script is generated for Sun LD that looks like the
# following:
# $mapfile_version 2
# SYMBOL_VERSION SUNW_1.1 {
# global:
# symbol1;
# symbol2;
# ...
# local:
# *;
# };
output.write('$mapfile_version 2\nSYMBOL_VERSION SUNW_1.1 {\nglobal:\n %s;\nlocal:\n *;\n};'
% ';\n '.join(symbols))
elif buildconfig.substs['OS_TARGET'] == 'Darwin': elif buildconfig.substs['OS_TARGET'] == 'Darwin':
# A list of symbols is generated for Apple ld that simply lists all # A list of symbols is generated for Apple ld that simply lists all
# symbols, with an underscore prefix. # symbols, with an underscore prefix.