mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 14:54:25 +00:00
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:
@@ -45,6 +45,7 @@ SECTION_INSERT_BEFORE = [
|
||||
('.text', '.fini'),
|
||||
('.rodata', '.rodata1'),
|
||||
('.data.rel.ro', '.dynamic'),
|
||||
('.kPStaticModules', '.data.rel.ro'),
|
||||
('.data', '.data1'),
|
||||
]
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
SECTIONS {
|
||||
.data.rel.ro : {
|
||||
*(.kPStaticModules)
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user