一如既往,主要在工具链领域耕耘。
Blog
Wrote 31 blog posts (including this one, mainly about toolchains) and revised many posts initially written between 2020 and 2024.
6 posts managed to get more than 50 points on Hacker News. (https://news.ycombinator.com/from?site=maskray.me).
GCC
Made 5 commits to GCC and earned committer access. Added the inline asm constraint "Ws" to the x86 port for raw symbol names.
llvm-project
- Reviewed many many patches
- Official maintainer status on the MC layer and binary utilities
- 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
- Improved raw symbol name support in inline assembly
- 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 internlas of thex86-asm-syntax
cl::opt option. - llvm-objcopy
- Added
--compress-sections
as a generalized--compress-debug-sections
- Maintenance
- Added
- llvm-objdump
- Fixed
spurious
warning: failed to compute relocation: R_RISCV_SUB_ULEB128, Invalid data was encountered while parsing the file
- Print
...
even if a mapping symbol is active - Handle
-M
for--macho
. Used by objdump on macOS
- Fixed
spurious
- Made easy optimizations to
DenseMap
andSmallPtrSet
- Simplify bit mixer
- Optimize find/erase
- clear: don't access TombstoneKey if
std::is_trivially_destructible
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.