Subject: CVS commit: pkgsrc/devel/mold
From: Frederic Cambus
Date: 2022-03-08 15:04:57
Message id: 20220308140458.0370FFB24@cvs.NetBSD.org

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)

Files:
RevisionActionfile
1.10modifypkgsrc/devel/mold/Makefile
1.12modifypkgsrc/devel/mold/distinfo
1.9modifypkgsrc/devel/mold/patches/patch-Makefile