1
1
mirror of https://github.com/rui314/mold.git synced 2024-10-05 17:17:40 +03:00

Compare commits

...

8 Commits

Author SHA1 Message Date
Christian Sattler
dfb4180504
Merge 24f818820b into b145377c39 2024-07-02 11:12:24 +03:00
Rui Ueyama
b145377c39
Merge pull request #1296 from marxin/improve-gdb-index-test
Improve --gdb-index test by using readelf --debug=gdb_index
2024-07-01 17:15:51 +09:00
Martin Liska
08f2a74be7 Improve --gdb-index test by using readelf --debug=gdb_index 2024-06-30 16:07:47 +02:00
Rui Ueyama
82fb10fe26 Fix a test 2024-06-28 15:57:10 +09:00
Rui Ueyama
34f4d654d3 Add an entry for AlmaLinnux 2024-06-28 15:54:39 +09:00
Rui Ueyama
091395df33 Link with -ldl for dlopen()
Fixes https://github.com/rui314/mold/issues/1293
2024-06-28 11:00:37 +09:00
Rui Ueyama
a38be94064 Simplify 2024-06-27 19:51:06 +09:00
Christian Sattler
24f818820b
Fix typos in design.md 2021-12-26 14:37:35 +01:00
6 changed files with 14 additions and 7 deletions

View File

@ -61,6 +61,8 @@ target_compile_features(mold PRIVATE cxx_std_20)
if(MINGW)
target_link_libraries(mold PRIVATE dl)
else()
target_link_libraries(mold PRIVATE ${CMAKE_DL_LIBS})
endif()
if(NOT "${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC")

View File

@ -163,7 +163,7 @@ tool.
(i.e. `_start`) or a few other root sections. In mold, we are using
multiple threads to mark sections concurrently.
- Similarly, BFD, gold an lld support Identical Comdat Folding (ICF)
- Similarly, BFD, gold and lld support Identical Comdat Folding (ICF)
as yet another size optimization. ICF merges two or more read-only
sections that happen to have the same contents and relocations.
To do that, we have to find isomorphic subgraphs from larger graphs.
@ -381,7 +381,7 @@ not plan to implement and why I turned them down.
fixing the final file layout.
The other reason to reject this idea is because there's good a
chance for this idea to have a negative impact on linker's overall
chance for this idea to have a negative impact on the linker's overall
performance. If we copy file contents before fixing the layout, we
can't apply relocations to them while copying because symbol
addresses are not available yet. If we fix the file layout first, we

View File

@ -554,8 +554,7 @@ std::vector<std::string> parse_nonpositional_args(Context<E> &ctx) {
//
// - Static PIE binaries crash on startup in some RISC-V environment if
// we write addends to relocated places.
if constexpr (is_sparc<E> || is_riscv<E>)
ctx.arg.apply_dynamic_relocs = false;
ctx.arg.apply_dynamic_relocs = !is_sparc<E> && !is_riscv<E>;
auto read_arg = [&](std::string name) {
for (const std::string &opt : add_dashes(name)) {

View File

@ -43,6 +43,9 @@ clear-linux-*)
swupd update
swupd bundle-add c-basic diffutils
;;
almalinux-*)
dnf install -y gcc-toolset-13-gcc-c++ gcc-toolset-13-libstdc++-devel cmake diffutils
;;
*)
echo "Error: don't know anything about build dependencies on $ID-$VERSION_ID"
exit 1

View File

@ -18,14 +18,14 @@ cat <<EOF | $CC -o $t/libbar.so -shared -fPIC -Wl,-soname,libbar.so -xc -
int fn2() { return 42; }
EOF
$CC -o $t/exe1 $t/a.o -Wl,-no-as-needed -L$t -lbar -lfoo
$CC -B. -o $t/exe1 $t/a.o -Wl,-no-as-needed -L$t -lbar -lfoo
readelf --dynamic $t/exe1 > $t/log1
grep -Fq 'Shared library: [libfoo.so]' $t/log1
grep -Fq 'Shared library: [libbar.so]' $t/log1
$CC -o $t/exe2 $t/a.o -Wl,-as-needed -L$t -lbar -lfoo
$CC -B. -o $t/exe2 $t/a.o -Wl,-as-needed -L$t -lbar -lfoo
readelf --dynamic $t/exe2 > $t/log2
! grep -Fq 'Shared library: [libfoo.so]' $t/log2 || false
grep -Fq 'Shared library: [libfoo.so]' $t/log2
! grep -Fq 'Shared library: [libbar.so]' $t/log2 || false

View File

@ -65,6 +65,8 @@ $CC -c -o $t/d.o $t/d.c -fPIC -g -ggnu-pubnames -gdwarf-5 -ffunction-sections
$CC -B. -shared -o $t/e.so $t/a.o $t/b.o $t/c.o $t/d.o -Wl,--gdb-index
readelf -WS $t/e.so 2> /dev/null | grep -Fq .gdb_index
readelf --debug=gdb_index $t/e.so 2> /dev/null | grep -q 'fn1: .* \[global, function\]'
readelf --debug=gdb_index $t/e.so 2> /dev/null | grep -q 'char: .* \[static, type\]'
cat <<EOF | $CC -c -o $t/f.o -fPIC -g -ggnu-pubnames -gdwarf-5 -xc - -gz
void fn1();
@ -76,6 +78,7 @@ EOF
$CC -B. -o $t/exe $t/e.so $t/f.o -Wl,--gdb-index
readelf -WS $t/exe 2> /dev/null | grep -Fq .gdb_index
readelf --debug=gdb_index $t/exe 2> /dev/null | grep -q 'main: .* \[global, function\]'
$QEMU $t/exe | grep -q 'Hello world'