Issue #2079 - Fix linking libxul on *nix when using a linker other than bfd.

Don't mark the .kPStaticModules section as relro for bfd, as the linkers on
 Windows and Mac don't do this anyway.
Add a section insert of .kPStaticModules to config/expandlibs_exec.py, which
 seems to be the primary cause of linking bustage on gold, lld, and mold.
This commit is contained in:
Job Bautista
2023-01-05 13:12:29 +08:00
committed by roytam1
parent 86782b8f39
commit 5b438179ad
3 changed files with 1 additions and 20 deletions
+1
View File
@@ -45,6 +45,7 @@ SECTION_INSERT_BEFORE = [
('.text', '.fini'),
('.rodata', '.rodata1'),
('.data.rel.ro', '.dynamic'),
('.kPStaticModules', '.data.rel.ro'),
('.data', '.data1'),
]
-5
View File
@@ -1,5 +0,0 @@
SECTIONS {
.data.rel.ro : {
*(.kPStaticModules)
}
}
-15
View File
@@ -39,21 +39,6 @@ ifeq ($(OS_ARCH),SunOS)
OS_LDFLAGS += -Wl,-z,defs
endif
# BFD ld doesn't create multiple PT_LOADs as usual when an unknown section
# exists. Using an implicit linker script to make it fold that section in
# .data.rel.ro makes it create multiple PT_LOADs. That implicit linker
# script however makes gold misbehave, first because it doesn't like that
# the linker script is given after crtbegin.o, and even past that, replaces
# the default section rules with those from the script instead of
# supplementing them. Which leads to a lib with a huge load of sections.
ifneq (OpenBSD,$(OS_TARGET))
ifneq (WINNT,$(OS_TARGET))
ifdef LD_IS_BFD
OS_LDFLAGS += $(topsrcdir)/toolkit/library/StaticXULComponents.ld
endif
endif
endif
ifdef _MSC_VER
get_first_and_last = dumpbin -exports $1 | grep _NSModule@@ | sort -k 3 | sed -n 's/^.*?\([^@]*\)@@.*$$/\1/;1p;$$p'
else