2023年总结

一如既往,主要在工具链领域耕耘。

llvm-project

I made 700+ commits this year. Many are clean-up commits or fixup for others' work. I hope that I can do more useful work next year.

  • Enabled --features=layering_check for Bazel's llvm and clang projects
  • Implemented LLVM_ENABLE_REVERSE_ITERATION for StringMap
  • Added llvm::xxh3_64bits and adopted it in llvm/clang/lld
  • Made AArch64 changes to msan and dfsan
  • Made various improvements to the clang driver, including -### exit code, auxiliary files, errors for unsupported target-specific options, -fsanitize=kcfi, and XRay
  • Made various sanitizer changes
  • Made -fsanitize=function work for C and non-x86 architectures
  • Fixed several major problems of assembler implementation of RISC-V linker relaxation
  • clangSema: %lb recognization for printf/scanf, checking the failure memory order for atomic_compare_exchange-family built-in functions, -Wc++11-narrowing-const-reference
  • llvm-objdump: @plt symbols for x86 .plt.got, mapping symbol improvements, --disassemble-symbols changes, etc
  • Supported R_RISCV_SET_ULEB128/R_RISCV_SUB_ULEB128 for .uleb128 directives
  • gcov: fix instrumentation crashes when using inline variables, #line, and #include, made llvm-cov gcov work with a smaller stack size
  • LTO: fixed local ifunc for ThinLTO, reported errors when parsing module-level inline assembly
  • CodeLayout: fixed a correctness bug and improved performance to be suitable for lld/ELF --call-graph-profile-sort=hfsort default

Reviewed many commits. A lot of people don't add a Reviewed By: tag. Anyway, counting commits with the tag can give an underestimate.

1
2
% git shortlog -sn 2679e8bba3e166e3174971d040b9457ec7b7d768...main --grep 'Reviewed .*MaskRay' | awk '{s+=$1}END{print s}'
395

Many GitHub pull requests are not counted.

I created a read-only archive of the LLVM phabricator instance.

lld/ELF

lld/ELF is quite stable. I have made some maintenance changes. As usual, I wrote the ELF port's release notes for the two releases. See lld 16 ELF changes and lld 17 ELF changes for detail.

I made some slides on how I improved the performance of lld/ELF.

psABI

I have made changes to x86-64, AArch64, and RISC-V psABI documents.

binutils

Reported many bugs and feature requests:

My commits:

  • PR30592 objcopy: allow --set-section-flags to add or remove SHF_X86_64_LARGE
  • ld: Allow R_386_GOT32 for call *__tls_get_addr@GOT(%reg)
  • ld: Allow R_X86_64_GOTPCREL for call *__tls_get_addr@GOTPCREL(%rip)
  • RISC-V: Add --[no-]relax-gp to ld

GCC

I had one patch landed supporting -mlarge-data-threshold= for x86-64 -mcmodel=medium.

Linux kernel

8 commits. Consulted on a number of toolchain questions.

Blog

Wrote 29 blog posts (including this one, mainly about toolchains) and revised many posts initially written between 2020 and 2023.

Misc

Trips: Orlando, Philadelphia, Harrisburg, Trenton, Newark, New York City, Alaska, Ontario, Quebec, Nova Scotia, Chicago, Atlanta, Miami, Jamaica, Haiti.

Mastodon: https://hachyderm.io/@meowray