一如既往,主要在工具链领域耕耘。
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_checkfor Bazel's llvm and clang projects - Implemented
LLVM_ENABLE_REVERSE_ITERATIONforStringMap - Added
llvm::xxh3_64bitsand 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=functionwork for C and non-x86 architectures - Fixed several major problems of assembler implementation of RISC-V linker relaxation
- clangSema:
%lbrecognization for printf/scanf, checking the failure memory order foratomic_compare_exchange-family built-in functions,-Wc++11-narrowing-const-reference - llvm-objdump:
@pltsymbols for x86.plt.got, mapping symbol improvements,--disassemble-symbolschanges, etc - Supported
R_RISCV_SET_ULEB128/R_RISCV_SUB_ULEB128for.uleb128directives - 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=hfsortdefault
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:
ld: Should --gc-sections respect RHS of a symbol assignment?objcopy: add support for changing ELF symbol visibilityrtld: resolve ifunc relocations after JUMP_SLOT/GLOB_DAT/etcld riscv: --emit-relocs does not retain the original relocation typegas aarch64: GOT relocations referencing a local symbol should not be changed to reference STT_SECTIONobjcopy --set-section-flags: support toggling a flaggas x86: reject {call,jmp} [offset func] in Intel syntax
My commits:
PR30592 objcopy: allow --set-section-flags to add or remove SHF_X86_64_LARGEld: 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