一如既往,主要在工具链领域耕耘。
Blogging
I have been busy creating posts, authoring a total of 31 blog posts (including this one). 7 posts resonated on Hacker News, garnering over 50 points. (https://news.ycombinator.com/from?site=maskray.me).
I have also revised many posts initially written between 2020 and 2024.
Mastodon: https://hachyderm.io/@meowray
GCC
I made 5 commits to the project, including the addition of the x86 inline asm constraint "Ws". you can read more about that in my earlier post Raw symbol names in inline assembly.
I believe that modernizing code review and test infrastructure will enhance the contributor experience and attract more contributors.
llvm-project
- Reviewed
numerous patches. query
is:pr created:>2024-01-01 reviewed-by:MaskRay
=> "989 Closed" - Official maintainer status on the MC layer and binary utilities
- My involvement with LLVM 18 and 19
Key Points:
- TODO
- Added a script update_test_body.py to generate elaborated IR and assembly tests (#89026)
- MC
- Made some MC and assembler improvements in LLVM 19
- Fixed some intrusive changes to the generic code due to AIX and z/OS.
- Made llvm-mc better as an assembler and disassembler
- Light ELF
- AArch64 mapping symbol size optimization
- Enabled StackSafetyAnalysis for AddressSanitizer to remove
instrumentations on stack-allocated variables that are guaranteed to be
safe from memory access bugs
- Bail out if MemIntrinsic length is -1
- Bail out when calling ifunc
- Added the Clang cc1 option
--output-asm-variant=
and cleaned up internals of its friends (x86-asm-syntax
). llvm/ADT/Hashing.h
stability
llvm/ADT/Hashing.h stability
To facilitate improvements, llvm/ADT/Hashing.h
promised
to be non-deteriministic so that users could not depend on exact hash
values. However, the values were actually deterministic unless
set_fixed_execution_hash_seed
was called. A lot of internal
code incorrectly relied on the stability of
hash_value/hash_combine/hash_combine_range
. I have fixed
them and landed https://github.com/llvm/llvm-project/pull/96282 to make
the hash value non-deteriministic in
LLVM_ENABLE_ABI_BREAKING_CHECKS
builds.
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 18 ELF changes and lld 19 ELF changes for detail.
Linux kernel
Contributed 4 commits.
ccls
I finally removed support for LLVM 7, 8, and 9. The latest release https://github.com/MaskRay/ccls/releases/tag/0.20241108 has some nice features.
- didOpen: sort index requests. When you open A/B/foo.cc, files under "A/B/" and "A/" will be prioritized during the initial indexing process, leading to a quicker response time.
- Support for older these LLVM versions 7, 8, and 9 has been dropped.
- LSP semantic tokens are now supported. See usage guide https://maskray.me/blog/2024-10-20-ccls-and-lsp-semantic-tokens usage (including rainbow semantic highlighting)
- textDocument/switchSourceHeader (LSP extension) is now supported.
Misc
Reported 12 feature requests or bugs to binutils.
objdump -R: dump SHT_RELR relocations?
gas arm aarch64: missing mapping symbols $d in the absence of alignment directives
gas: Extend .loc directive to emit a label
Compressed .strtab and .symtab
gas: Support \+ in .rept/.irp/.irpc directives
ld: Add CLASS to allow separate section matching and referring
gas/ld: Implicit addends for non-code sections
binutils: Support CREL relocation format
ld arm: global/weak non-hidden symbols referenced by R_ARM_FUNCDESC are unnecessarily exported
ld arm: fdpic link segfaults on R_ARM_GOTOFFFUNCDESC referencing a hidden symbol
ld arm: fdpic link may have null pointer dereference in allocate_dynrelocs_for_symbol
objcopy: add --prefix-symbols-remove
Reported 2 feature requests to glibc