Rui Ueyama
50b7497e19
Align section header to a E::wordsize boundary
...
Fixes https://github.com/rui314/mold/issues/80
2021-07-08 15:58:55 +09:00
Rui Ueyama
84d9e4d5ac
Fix regexp
2021-07-07 23:12:24 +09:00
Rui Ueyama
72cc07fb42
Merge pull request #83 from nehaljwani/dynsym-IFUNC
...
Do not replace IFUNC with FUNC in .dynsym
2021-07-07 21:48:15 +09:00
Rui Ueyama
6ae115ac69
Support R_AARCH_ABS{32,64} relocations
2021-07-07 21:06:18 +09:00
Nehal J Wani
1aec54efdb
Do not replace IFUNC with FUNC in .dynsym
...
This is a partial revert of dd04357
Signed-off-by: Nehal J Wani <nehaljw.kkd1@gmail.com>
2021-07-07 07:59:51 -04:00
Rui Ueyama
e3dccd0157
Add a test
2021-07-07 20:38:48 +09:00
Rui Ueyama
6d6df45a23
Fix definition of __GLOBAL_OFFSET_TABLE__ for AArch64
2021-07-07 12:51:23 +09:00
Rui Ueyama
d4a67f6f38
Disable an AArch64 test
2021-07-06 23:06:02 +09:00
Rui Ueyama
41497d7990
Support AARCH64 relocations
...
With this change, mold can now create a "Hello world" program
for the AArch64 target.
2021-07-06 22:24:48 +09:00
Nehal J Wani
be6d443bc8
[tests] Improve test for -spare-dynamic-tags
...
The default size and offsets of the .dynamic section are not necessarily
same with different builds of clang. For example, some builds can make
clang pass --hash-style=gnu to the linker and some --hash-style=both.
This change updates the test to compute the difference in size of the
.dynamic section before and after using the flag -spare-dynamic-tags,
making it independent of the compiler build.
Signed-off-by: Nehal J Wani <nehaljw.kkd1@gmail.com>
2021-07-03 22:35:42 -04:00
Rui Ueyama
accf96877f
Add a stub for AArch64
...
It can generate an executable, but generated executable won't run
correctly because we don't process relocations at all yet.
2021-07-03 21:39:44 +09:00
Rui Ueyama
d502b6ec60
Initial AARCH64 support
2021-07-03 20:48:38 +09:00
Rui Ueyama
3c992c02ea
Merge pull request #72 from nehaljwani/fix-pie-test
...
[tests] Fix pie test when cc isn't built with --enable-default-pie
2021-07-03 14:30:05 +09:00
Rui Ueyama
2abca8b5c1
Fix tests for non-Ubuntu-20 systems
...
Fixes https://github.com/rui314/mold/issues/67
2021-07-03 14:26:38 +09:00
Nehal J Wani
3208ceaac6
[tests] Fix pie test when cc isn't built with --enable-default-pie
...
mold: /__w/mold/mold/test/tmp/pie/a.o:(.text): R_X86_64_32 relocation
against symbol `.rodata' can not be used; recompile with -fPIE
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Signed-off-by: Nehal J Wani <nehaljw.kkd1@gmail.com>
2021-07-03 01:05:28 -04:00
Rui Ueyama
475fad3a78
Allow sysroot to be a relative path
...
Chromium cannot be built with out this patch.
2021-07-03 12:02:32 +09:00
Rui Ueyama
0fd62ce693
Fix sysroot handling
...
Fix https://github.com/rui314/mold/issues/59
2021-07-01 17:40:45 +09:00
Rui Ueyama
9abfeee0e3
Split a function and add tests
2021-07-01 10:00:08 +09:00
Rui Ueyama
6432114e2a
Fix handling of --sysroot
...
Fixes https://github.com/rui314/mold/issues/59
2021-06-30 22:15:19 +09:00
Rui Ueyama
989f69fdc5
Do not apply version scripts to DSO symbols
...
This is needed by Gentoo's dev-perl/Image-Imlib2-2.30.0-r1 package
because this fixes a mis-link issue of libbsd.
2021-06-27 21:44:42 +09:00
Rui Ueyama
5761dbc399
Fix a broken test
2021-06-27 17:03:59 +09:00
Rui Ueyama
570a3556c5
Fix exported weak symbol
...
This is needed by Gentoo's app-admin/filebeat-7.9.3 package.
2021-06-27 12:37:14 +09:00
Rui Ueyama
4436e4a57d
Improve error message for an attempt of LTO
2021-06-26 15:05:05 +09:00
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
Rui Ueyama
8940abf807
Sort .{init,fini}_array and .[cd]tors
2021-05-31 01:11:45 +09:00
Rui Ueyama
02fa969295
Place .ctors and .dtors into .init_array and .fini_array
...
This change is needed to build Gentoo's dev-lang/gprolog-1.4.5,
which is the GNU Forth package. GNU Forth creates ELF objects
itself, and it still uses .ctors and .dtors as opposed to .init_array
and .fini_array.
2021-05-30 22:05:07 +09:00
Rui Ueyama
ed98211a24
Allow to refer unversioned symbol within an object file
...
Previously, mold couldn't handle an object file which contains
versioned symbol `foo@@SOME_VERSION` that also has an undefined
symbol `foo`. Now, `foo` is resolved to `foo@@SOME_VERSION`.
This change is required to build Gentoo's media-libs/alsa-lib-1.2.3.2-r1
package.
2021-05-30 18:03:21 +09:00
Rui Ueyama
a2017e5d3a
Skip incompatible library files
...
This change is required to build Gentoo's net-libs/libtorrent-0.13.8-r1
package.
2021-05-29 20:47:16 +09:00
Rui Ueyama
3cfbc0d66c
Parallelize tests
2021-05-29 16:05:38 +09:00
Rui Ueyama
c805f7c087
Fix broken tests
2021-05-29 14:20:56 +09:00
Rui Ueyama
fbed89948c
Add -R as an alias for -rpath
...
This change is required to build Gentoo dev-erlang/stringprep package.
2021-05-29 13:42:10 +09:00
Rui Ueyama
6b10fbd834
Add end, etext and edata symbols
2021-05-29 02:07:46 +09:00
Rui Ueyama
8fe15c8dc8
Make linker-synthesized symbols to overwrite other symbols
2021-05-29 00:31:40 +09:00
Rui Ueyama
de7ba9014f
Add "GNU gold" to the --version string
...
The configure script in Gentoo's dev-libs/jansson-2.13.1-r1 package
treats mold 0.1.1 as GNU ld 0.1.1, which is from 1980s if existed.
Adding "GNU gold" to the help message solves the nasty issue, as the
configure script considers any version of GNU gold supports modern
features.
2021-05-27 15:24:30 +09:00
Rui Ueyama
310980fb7e
Add --retain-symbols-file
2021-05-27 00:31:08 +09:00
Rui Ueyama
8dd0accc89
Do not exit immediately on --version
2021-05-23 18:22:20 +09:00
Rui Ueyama
3fab4ce3d2
Add missing dependencies
2021-05-23 16:20:55 +09:00
Rui Ueyama
a0a94f4637
Add -wrap option
2021-05-22 01:54:08 +09:00
Rui Ueyama
b9ab55dfa7
Add --image-base
2021-05-21 18:37:38 +09:00
Rui Ueyama
99abd52d6e
Fix a broken test
2021-05-21 12:43:34 +09:00
Rui Ueyama
02e6c6ab5d
Make -run to intercept not only ld but also ld.lld and ld.gold
2021-05-20 14:14:35 +09:00
Rui Ueyama
968cfd0dcd
Simplify
2021-05-19 10:24:39 +09:00
Rui Ueyama
ad6aa32b41
Handle mold -run /usr/bin/ld
2021-05-14 22:55:04 +09:00
Rui Ueyama
76b0afc6b7
Add --omagic
2021-05-10 19:21:29 +09:00
Rui Ueyama
6014faec2a
Add -V option
2021-05-10 16:53:16 +09:00
Rui Ueyama
4a3480e1af
readlink() doesn't terminate a string with NUL
2021-05-10 16:40:51 +09:00
Rui Ueyama
ccd27807aa
Do not add unreferenced DSO symbols to .dynsym
2021-05-10 15:50:25 +09:00
Rui Ueyama
033834a28e
Add --help
2021-05-08 20:10:41 +09:00
Rui Ueyama
13003d2479
Add --compress-debug-sections
2021-05-06 17:20:07 +09:00
Rui Ueyama
ebe6cca2e6
Create a .repro section if MOLD_REPRO environment variable is set
2021-05-02 20:49:00 +09:00
Rui Ueyama
d11c383147
Replace --reproduce with --repro
2021-05-02 20:49:00 +09:00