一如既往,主要在工具链领域耕耘。
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
forStringMap
- 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 foratomic_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 | % git shortlog -sn 2679e8bba3e166e3174971d040b9457ec7b7d768...main --grep 'Reviewed .*MaskRay' | awk '{s+=$1}END{print s}' |
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 visibility
rtld: resolve ifunc relocations after JUMP_SLOT/GLOB_DAT/etc
ld riscv: --emit-relocs does not retain the original relocation type
gas aarch64: GOT relocations referencing a local symbol should not be changed to reference STT_SECTION
objcopy --set-section-flags: support toggling a flag
gas x86: reject {call,jmp} [offset func] in Intel syntax
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