summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/rules.mk4
-rw-r--r--python/mozbuild/mozbuild/action/generate_symbols_file.py14
2 files changed, 18 insertions, 0 deletions
diff --git a/config/rules.mk b/config/rules.mk
index b2fafc5762..b774063699 100644
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -411,6 +411,10 @@ EXTRA_DSO_LDOPTS += -Wl,--version-script,$(SYMBOLS_FILE)
else
ifeq ($(OS_TARGET),Darwin)
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
diff --git a/python/mozbuild/mozbuild/action/generate_symbols_file.py b/python/mozbuild/mozbuild/action/generate_symbols_file.py
index ff6136bb14..3eebf324cc 100644
--- a/python/mozbuild/mozbuild/action/generate_symbols_file.py
+++ b/python/mozbuild/mozbuild/action/generate_symbols_file.py
@@ -83,6 +83,20 @@ def generate_symbols_file(output, *args):
# };
output.write('{\nglobal:\n %s;\nlocal:\n *;\n};'
% ';\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':
# A list of symbols is generated for Apple ld that simply lists all
# symbols, with an underscore prefix.