Next | Query returned 40 messages, browsing 21 to 30 | Previous

History of commit frequency

CVS Commit History:


   2022-07-02 23:22:44 by Frederic Cambus | Files touched by this commit (2) | Package updated
Log message:
mold: update to 1.3.1.

mold 1.3.1 is a maintenance release of the high-speed linker. This release
contains the following minor bug fixes.

Bug fixes and compatibility improvements:

- mold now supports .preinit_array sections. Without this, AddressSanitizer
  didn't work in some environments. (3b75398)
- [ARM32] R_ARM_MOVT_PREL and R_ARM_PREL31 relocations are now handled
  correctly so that mold no longer emit spurious "recompile with -fPIC"
  errors. (5294300)
   2022-06-23 16:24:33 by Frederic Cambus | Files touched by this commit (1)
Log message:
mold: fix the build by reverting to using SYSTEM_TBB=1.
   2022-06-18 16:23:13 by Frederic Cambus | Files touched by this commit (3) | Package updated
Log message:
mold: update to 1.3.0.

Pkgsrc changes:

- Remove now unneeded pkg-config from USE_TOOLS
- Use <stdlib.h> on systems where <alloca.h> doesn't exist
- Link the bundled (patched) libtbb, as per upstream recommendation

Bug fixes and compatibility improvements:

- The --icf=safe option has been supported. This option enables a feature
  to find and deduplicate identical code that can be merged safely. For C++
  programs, it typically reduces the output binary size by a few percent.
  --icf=safe needs to be used with a compiler that supports .llvm_addrsig
  section; if a compiler does not support it, --icf=safe doesn't do any harm
  but cannot optimize a given program at all. That section is supported by
  LLVM/Clang at the moment, and we are working on adding it to GCC.
- LTO now works reliably under a heavy load. mold used to abort occasionally
  under such condition on Linux due to a spurious failure of pthread_create(2).
- mold now prints out undefined symbol errors in a format similar to LLVM lld.
- mold now prints out a better error message for the disk full situation.
- mold can now build GCC 12 with LTO.
- Fixed an LTO issue on 32-bits hosts such as i686.
- mold is now AddressSanitizer and UndefinedSanitizer clean.
- mold used to create broken debug info on 32-bits hosts. The bug has been
  fixed.
- mold used to accept not only a single dash but also double dashes for
  single-letter options. For example, --S was accidentally accepted as an
  alias for-S. This is unconventional, and such options are no longer
  accepted.
- --color-diagnostics is now an alias for --color-diagnostics=auto instead
  of --color-diagnostics=always for compatibility with LLVM lld.
- pkg-config is no longer needed to build mold.
- The --package-metadata option is supported.

Removed features:

- An experimental --preload flag has been removed.
   2022-05-11 09:02:11 by Frederic Cambus | Files touched by this commit (1)
Log message:
mold: install phase uses python3 command, provide a symlink.

Thanks to wiz@ once again for the heads up.
   2022-05-05 23:22:29 by Frederic Cambus | Files touched by this commit (1)
Log message:
mold: the install target requires Python.
   2022-05-05 23:11:55 by Frederic Cambus | Files touched by this commit (1)
Log message:
mold: needs pkg-config.
   2022-04-29 08:45:45 by Frederic Cambus | Files touched by this commit (2) | Package updated
Log message:
mold: update to 1.2.1.

Bug fixes and compatibility improvements:

- Various bugs in --gdb-index have been fixed.
- mold now recognizes --thinlto-cache-dir and --thinlto-cache-policy for the
  sake of compatibility with LLVM lld. (7ebd071)
- mold can now handle TLS common symbols. It looks like GCC sometimes creates
  such symbol for a thread-local variable. (cf850f8)
- In some edge cases, mold created a non-versioned symbol and a versioned one
  for the same symbol, even though if one symbol is versioned, all symbols of
  the same name must be versioned. This bug has been fixed. (8298c0a)
- mold used to write a PLT address of a symbol instead of its address to
  .symtab. This bug has been fixed. (e088db7)
- mold can now handle an input file with more than 219 symbols. (f1f2d40)
- /usr/local/libexec/mold/ld is now installed as a relative symlink instead
  of an absolute symlink. (5803c3c)
   2022-04-15 18:30:37 by Frederic Cambus | Files touched by this commit (2) | Package updated
Log message:
mold: update to 1.2.0.

mold 1.2.0 is a new release of the high-speed linker. The highlight of this
release is the 32-bit ARM support. We also added other features, and as
always, we fixed many bugs and compatibility issues in this release.

New features:

- The ARM32 target is now supported.

- --gdb-index is implemented. If this option is given, mold creates an
  .gdb_index section in an output file to speed up GNU debugger. Users have
  to compile their object files with -ggnu-pubnames to use this flag. mold
  used to ignore --gdb-index. (a7475dd)

- mold now supports the following flags: --start-address, -Tbss, -Tdata,
  -Ttext, --oformat=binary, --disable-new-dtags

Deprecated features:

- An experimental, mold-specific --preload flag has been marked as
  deprecated. It's still usable, but a warning message will be displayed
  if that flag is given.

Bug fixes and compatibility improvements:

- -dy and -dn are now accepted as aliases for -Bdynamic and -Bstatic,
  respectively. (82e8072)

- -static-pie now works with older versions of glibc thanks to a few bug
  fixes. (3d68824, 0884f27)

- Issues found by UndefinedBehaviorSanizer, AddressSanitizer and
  ThreadSanitizer are fixed. (bf26753, f4753b3, e1e4e9f)

- mold used to place sections with very large section alignment
  requirements to wrong places in an output file. That caused a mysterious
  crash of a produced binary (#405). That bug was most noticeable when
  Nvidia-provided object files are given because they tend to contain such
  sections. This bug has been fixed. (100922b)

- .ctors and .dtors sections are now recognized by mold, and their contents
  are sorted with a special rule. This shouldn't affect most build
  environments because these sections have been superseded by .init_array
  and .fini_array sections a long time ago. But it looks like some old
  i386 compilers are still using .ctors and .dtors. (392781a)

- For a non-position-independent executable, we have to make address-taken
  PLT entries as "canonical". Marking all PLT entries canonical should be
  harmless in theory, so we did so. However, some programs, notably Qt
  library, assume that non-address-taken PLTs can never be canonical
  (#352). For the sake of compatibility with such programs, we now make
  PLTs canonical only when their addresses are taken. (e0bc74a)

- mold now defines _TLS_MODULE_BASE_ symbol. A reference to this symbol
  can occur if -mtls-dialect=gnu2 is given to a compiler. The flag tells
  the compiler to use TLSDESC mechanism instead of the regular TLS access
  mechanism to access thread-local variables. (5feab82)

- libbacktrace sometimes fail to read compressed debug sections in
  mold-generated files due to a bug. We not only fix that libbacktrace's
  bug (ianlancetaylor/libbacktrace#87) but also implemented a workaround
  to mold (ba63479) so that mold works with older versions of libbacktrace.

- [ARM64] mold now recognizes R_AARCH64_LD_PREL_LO19 relocation. (146ddd7)

- [RISCV64] The correct semantics of R_RISCV_ALIGN is implemented.
  (0daf623)
   2022-03-08 15:04:57 by Frederic Cambus | Files touched by this commit (3) | Package updated
Log message:
mold: update to 1.1.1.

New features:

- The --dependency-file option has been added. The option is analogous to
  the compiler's -MM option; it generates a text file containing dependency
  information in the Makefile format, so that you can include a generated
  file into a Makefile to automate the file dependency management. (a054bcd)
- mold has gained the --reverse-sections option. If the option is given,
  mold reverses the list of input sections before assigning them the
  addresses in an output file. This option is useful to find a bug in global
  initializers (e.g. constructors of global variables.) In C++, the execution
  order of global initializers is guaranteed only within a single compilation
  unit (they are executed from top to bottom.) If two global initializers
  are in different object files, they can be executed in any order. Reversing
  the execution order of the global initializers in different input files
  should help you identify a bug in your program. If your program does not
  work with -Wl,--reverse-sections, your program depends on the undefined
  behavior.
- --shuffle-sections now takes an optional seed for the random number
  generator in the form of --shuffle-sections=<number>. (8f21cc3)
- mold now supports the following LTO-related options for compatibility
  with LLVM lld: --disable-verify, --lto-O, --lto-cs-profile-file,
  --lto-cs-profile-generate, --lto-debug-pass-manager, --lto-emit-asm,
  --lto-obj-path, --lto-partitions, --lto-pseudo-probe-for-profiling,
  --lto-sample-profile, --no-legacy-pass-manager,
  --no-lto-legacy-pass-manager, --opt-remarks-filename, --opt-remarks-format,
  --opt-remarks-hotness-threshold, --opt-remarks-passes,
  --opt-remarks-with_hotness, --save-temps, --thinlto-emit-imports-files,
  --thinlto-index-only, --thinlto-index-only, --thinlto-jobs, --thinlto-jobs,
  --thinlto-object-suffix-replace, --thinlto-prefix-replace (e413433)
- -noinhibit-exec and --warn-shared-textrel have been supported.

Performance improvements:

- We optimized mold's memory usage by reducing the sizes of
  frequently-allocated objects. Compared to mold 1.1, we observed ~6%
  reduction of maximum resident set size (RSS) when linking Chromium. Our
  maximum RSS is smaller than LLVM lld and GNU gold as far as we tested. We
  measured maximum RSSes with time -v. (f2d27d8, 7068c0c, 83e05da, 4dae896)
- If Intel CET-based security-enhanced PLT is enabled (i.e. -z ibtplt is
  given), mold used to create a PLT section in which each entry is 32 bytes
  long. We optimized the machine code sequence of the CET-enabled PLT
  section, so each PLT entry now occupies only 16 bytes, reducing the size
  of .plt by almost half. (480efde)

Bug fixes and compatibility improvements:

- -static-pie now works with recent versions of glibc. Previously,
  statically-linked position-independent executable would crash on startup
  when linked with mold. (3999aa8)
- Previously, mold sometimes created corrupted output file on x86-64 if
  an input file containing thread-local variables were compiled with
  -mcmodel=large (#360). This issue has been fixed. (4aa4bfa)
- Previously, mold created corrupted debug info section on i386 if an
  input debug section is also compressed using the compiler -gz option.
  (#361) This issue has been fixed. (3068364)
- mold used to create multiple .init_array sections if input files contain
  both writable and non-writable .int_array sections. That caused an issue
  that some initializer functions would not be executed on process startup.
  (#363). This issue has been fixed. (4198627)
- When building a large program with GCC LTO, mold occasionally failed
  with "too many open files" error. This issue has been resolved. (e67f460)
- Previously, mold created a corrupted dynamic relocation table if .got.plt
  is missing. This issue has been fixed by always creating
  _GLOBAL_OFFSET_TABLE_ symbol in .got on any target. mold used to try to
  create the symbol in .got.plt on x86-64 or i386. (eb79859)
   2022-02-21 12:47:41 by Frederic Cambus | Files touched by this commit (3) | Package updated
Log message:
mold: update to 1.1.

mold 1.1 is a new release of the high-performance linker. It contains
a few new major features and various bug fixes.

New features:

- Native LTO (link-time optimization) support has been added.
  mold used to invoke ld.bfd or ld.lld if it encountered a GCC
  IR (intermediate representation) file or an LLVM IR file to
  delegate the task to the LTO-capable linkers, respectively.
  Now, mold handles IR files directly. This feature is implemented
  using the linker plugin API which is also used by GNU ld and
  GNU gold. Note that the LTO support has been added for completeness
  and not for speed. mold is only marginally faster than the
  other linkers for LTO builds because not linking but code
  optimization dominates. (46995bc)
- RISC-V (RV64) is now supported as both host and target platforms.
  mold can link real-world large programs such as mold itself or
  LLVM Clang for RISC-V. (e76f7c0)
- The -emit-relocs option is supported. If the option is given,
  mold copies relocation sections from input files to an output
  file. This feature is used by some post-link binary optimization
  or analysis tools such as Facebook's Bolt. (26fe71d)
- mold gained the --shuffle-sections option. If the option is
  given, the linker randomly shuffle the order of input sections
  before fixing their addresses in the virtual address space.
  This feature is useful in some situations. First, it can be
  used as a strong form of ASLR (address space layout randomization).
  Second, you can enable it when you are benchmarking some other
  program to get more reliable benchmark numbers, because even
  the same machine code can vary in performance if they are laid
  out differently in the virtual address space. You want to make
  sure that you got good/bad benchmark numbers not by coincidence
  by shuffling input sections. (7e91897)
- The --print-dependencies and --print-dependencies=full options
  were added. They print out dependencies between input files in
  the CSV format. That is, they print out the information as to
  which file depends on which file to use which symbol. We added
  this feature with a few use cases in mind. First, you can use
  this to analyze why some object file was pulled out from an
  archive and got linked to an output file. Second, when you want
  to eliminate all dependencies to some library, you can find
  all of them very easy with this feature. Note that this is an
  experimental feature and may change or removed in feature
  releases of mold. (a1287c2)
- The following options are added: --warn-once (f24b997),
  --warn-textrel (6ffcae4)
- Runtime dependency to libxxhash has been eliminated. (e5f4b96)

Bug fixes and compatibility improvements:

- A PT_GNU_RELRO segment is now aligned up to the next page
  boundary. Previously, mold didn't align it up, and the runtime
  loader align it down, so the last partial page would not be
  protected by the RELRO mechanism. Now, the entire RELRO segment
  is guaranteed to be read-only at runtime. (0a0f9b3)
- The .got.plt section is now protected by RELRO if -z now is
  given. This is possible because writes to .got.plt happen only
  during process startup if all symbols are resolved on process
  startup. (73159e2)
- Previously, mold reported an error if object files created with
  old GCC (with -fgnu-unique) are mixed with ones created with
  newer GCC or Clang (with -fno-gnu-unique) (#324). Now, mold
  accepts such input files. (e65c5d2)
- mold can now be built with musl libc. (42b7eb8)
- mold-generated .symtab section now contains section symbols
  and symbols derived from input shared object files. (e4c03c2,
  1550b5a)
- mold-generated executables can now run under valgrind. Previously,
  valgrind aborted on startup due to an assertion failure because
  it didn't expect for an executable to have both .bss and .dynbss
  sections. mold generated .dynbss to contain copy-relocated
  symbols. The section has been renamed .copyrel to workaround
  the valgrind's issue. (0f8bf23)

Next | Query returned 40 messages, browsing 21 to 30 | Previous