Rui Ueyama
bd1b044afc
Accept extern "C"
in version script
...
This is needed by Gentoo's dev-libs/opencl-clang-10.0.0.1-r1 package.
2021-06-25 16:48:40 +09:00
Rui Ueyama
2e5088a001
Fix common symbol
...
This is needed by Gentoo's sci-electronics/voacapl-0.7.6 package.
2021-06-25 15:42:16 +09:00
Rui Ueyama
bd8059a366
Fix an issue that a .dynsym for PLT refers itself
2021-06-25 13:33:14 +09:00
Rui Ueyama
5046fae0cf
Do not directly call imported functions
...
This is needed by Gentoo's sci-libs/lapack-3.9.0-r1 package.
2021-06-25 01:05:57 +09:00
Rui Ueyama
d9ecc2e3e6
Promote weak undefined symbols to weak dynamic symbols
...
Previously, if a weak undefined symbol cannot be resolved within
an output of the linker, mold turned it into an absolute symbol
with value 0. However, other linkers export such symbols as a
weak dynamic symbol, so that the symbol gets another chance to be
resolved at runtime.
This patch implements the behavior.
This is needed by Gentoo's dev-libs/nsync-1.20.1 package.
2021-06-25 00:44:35 +09:00
Rui Ueyama
fd1855a67b
Make --version to exit immediately
...
This is needed by Gentoo's dev-lang/spidermonkey-78.10.1 package,
as its configure script assumes that the linker exit normally
even if extra options are given after `--version`.
2021-06-24 16:45:04 +09:00
Rui Ueyama
81dbbdda62
DSOs referenced by used DSOs are considered used
...
This is needed by Gentoo's sys-cluster/ampi-0_pre20140616 package.
2021-06-24 15:54:25 +09:00
Rui Ueyama
de668b125a
Refactor
2021-06-24 15:50:08 +09:00
Rui Ueyama
dd04357363
Do not set STT_GNU_IFUNC to symbols .dynsym
...
We should not set STT_GNU_IFUNC to symbols in .dynsym because
from the other ELF module's point of view, it doens't matter
whether a symbol is IFUNC or not.
This is needed by Gentoo's sci-mathematics/nauty-2.6.7 package.
2021-06-21 10:32:30 +09:00
Rui Ueyama
f127281d05
Allow empty input files
...
mmap(2) fails if you pass 0 as an argument for `length` parameter,
so this case has to be handled as a special case.
This is needed by Gentoo's media-plugins/calf-0.90.3-r1 package.
2021-06-21 09:33:35 +09:00
Rui Ueyama
d3d056d27a
Do not register common symbols as lazy symbols
...
In other words, a linker shouldn't pull out an object file from an
archive to resolve an existing undefined or a common symbol with a
common symbol.
This is needed by Gentoo's app-arch/dump-0.4.47 package.
2021-06-21 08:36:16 +09:00
Rui Ueyama
1bac9c7b8d
Add -z nodump
...
This is needed by Gentoo's sci-libs/indilib-1.8.9 package.
2021-06-21 06:56:07 +09:00
Rui Ueyama
7a689d8361
Handle ar header alignment correctly
2021-06-20 21:29:10 +09:00
Rui Ueyama
4f92d7f19b
Add -z origin
...
This is needed by Gentoo's dev-ada/gnatcoll-bindings-2020-r1 package.
2021-06-20 14:42:43 +09:00
Rui Ueyama
9519e4ce20
Change how to handle --unresolved-symbols=ignore
...
Previously, we turned unresolved undefined symbols into dynamic
symbols. This patch changed the behavior so that such symbols
are turned into non-dynamic absolute symbols with value zero.
This change is needed by Gentoo's dev-libs/wayland-protocols-1.21
package.
2021-06-20 14:31:36 +09:00
Rui Ueyama
793136a8f0
Give common symbols in archive files higher priority
...
If an object file in an static archive contains a common symbol
that can be used to resolve an undefined symbol, mold now pulls
out that object file from the archive. Previously, we ignore such
common symbols.
Object files generated by a Fortran compiler often contain a lot of
common symbols, and this change makes a difference.
Fixes Gentoo's sci-astronomy/wcslib-7.3 package, which contains a
program written in Fortran.
2021-06-19 21:42:21 +09:00
Rui Ueyama
1d16374763
Fix a test
2021-06-19 12:34:20 +09:00
Rui Ueyama
a0ecd0c8dc
Add --unique=PATTERN
...
This is needed by Gentoo's sys-fabric/infinipath-psm-3.2 package.
2021-06-19 01:09:26 +09:00
Rui Ueyama
bd858faf94
Add --unresolved-symbols
...
This is needed by Gentoo's dev-libs/wayland-protocols-1.21 package.
2021-06-18 15:51:57 +09:00
Rui Ueyama
725834e0b1
Do not garbage-collect C-identifer sections
...
This is needed for Gentoo's sys-fs/udev-245.5-r1 package.
2021-06-18 12:57:12 +09:00
Rui Ueyama
37b88e3f5a
Do not set executable bit for --relocatable outputs
2021-06-18 01:45:38 +09:00
Rui Ueyama
2203644a3b
Fix section addresses
...
This is needed for Gentoo's net-libs/nodejs-14.16.1 package.
2021-06-17 23:48:31 +09:00
Rui Ueyama
e88dddb820
Add -z {text,notext,textoff]
2021-06-17 14:18:44 +09:00
Rui Ueyama
4e2b6fd315
Handle thin archives containing absolute paths
2021-06-17 14:18:44 +09:00
Rui Ueyama
22ca6bc288
Ignore --verbose
2021-06-17 14:18:44 +09:00
Rui Ueyama
59e971b61f
Ignore empty symbol version
...
This is needed for Gentoo's sys-fs/mhddfs packages.
2021-06-16 22:41:50 +09:00
Rui Ueyama
e1a964acb2
Do not write duplicate entries to .dynsym
...
Fixes Gentoo's sys-libs/slang package.
2021-06-16 19:50:42 +09:00
Rui Ueyama
e7019ebf86
Add -z keep-text-section-prefix
2021-06-16 19:50:08 +09:00
Rui Ueyama
a715197be4
Export more symbols from executable if they could overwrite dso syms
2021-06-15 01:47:53 +09:00
Rui Ueyama
bc2ece0474
Fix --relocatable
2021-06-14 13:48:26 +09:00
Rui Ueyama
333843a33d
Add --warn-unresolved-symbols and --error-unresolved-symbols
2021-06-14 00:04:07 +09:00
Rui Ueyama
4f31c22fac
Fix output section name
2021-06-13 16:51:48 +09:00
Rui Ueyama
9cc309af75
Implement --relocatable
...
Fixes https://github.com/rui314/mold/issues/46
2021-06-11 21:57:43 +09:00
Rui Ueyama
98dbddaa77
Ignore .gnu.warning.* sections
2021-06-07 22:35:32 +09:00
Rui Ueyama
3324acafc5
Rename --icf to --icf=all for compatibility with lld and gold
2021-06-07 21:55:08 +09:00
Rui Ueyama
8bf21f9ea0
Report an error for unknown -z flags
2021-06-07 20:53:35 +09:00
Rui Ueyama
6d13fe2e7f
Add -z muldefs
as an alias to --allow-multiple-definition
2021-06-07 20:48:06 +09:00
Rui Ueyama
8833dcbcb0
Fix relocations for i386 PIC
2021-06-07 18:37:50 +09:00
Rui Ueyama
a0c3fcb1bb
Do not put local symbols to .dynsym
2021-06-06 17:24:49 +09:00
Rui Ueyama
fc54693be5
Fix zlib-gnu-style compressed section decoding
2021-06-05 20:51:21 +09:00
Rui Ueyama
ee3b0293fd
Rename an envvar
2021-06-04 20:32:58 +09:00
Rui Ueyama
6e7baef8d3
Set DT_RELACOUNT field
2021-06-04 20:04:30 +09:00
Rui Ueyama
b0b2406d84
Set the entry address to .text if entry point symbol is not defined
2021-06-04 15:30:32 +09:00
Rui Ueyama
b5c68b465e
Revert "Change the default build-id size from 20 to 16 bytes"
...
This reverts commit fe76210da6
because I misunderstood the actual default size of build-id
of the GNU linkers.
2021-06-04 12:32:28 +09:00
Rui Ueyama
d3923b9f27
Weak symbols shouldn't keep as-needed DSOs
...
If all references to an DSO are weak, the DSO shouldn't be considered
being used in terms of --as-needed. This is needed for GNU ld compatibility.
2021-06-04 12:24:25 +09:00
Rui Ueyama
3fb870c80b
Add --compress-debug-info=zlib-gnu
2021-06-03 23:57:06 +09:00
Rui Ueyama
fe76210da6
Change the default build-id size from 20 to 16 bytes
...
GNU ld's default build-id size is 16.
2021-06-03 22:14:55 +09:00
Rui Ueyama
f9e91aa391
Do not embed a library fullpath if it is given by -l
2021-06-01 15:15:25 +09:00
Rui Ueyama
1f3931fc9e
Do not put non-alloc NOTE section into a PT_LOAD segment
...
This bug caused a test failure of Gentoo's dev-lang/go-1.16.4
paackage. Specifically, `go tool dist test testshared` failed
due to this bug.
2021-06-01 00:53:06 +09:00
Rui Ueyama
8219fdd688
Simplify input file priority
...
This change is required to build Gentoo's net-libs/libtorrent-0.13.8-r1
package with FEATURES=test, e.g.
$ FEATURES=test emerge net-libs/libtorrent
2021-05-31 17:09:40 +09:00