2017年10月第一次给LLVM提交patch,到2020年底已经贡献三年多了。今年~1000 commits,灌水很多,挑出一些值得一提的。
LLVM
- llvm-objdump -d:显示地址而非PC-relative offset
- llvm-objdump --syms:提升GNU兼容性
- llvm-objcopy ELF:修复
-O binary
- llvm-objcopy --only-keep-debug:支持Android PT_TLS hack
- llvm-readelf --all:提升GNU兼容性
- MC清理,修复
.symver
visibility,修复redirection for undefined symbol - DebugInfn改进
- 修复一些new pass manager问题
- 清理x86 MCDisassembler
- 修复x86 FastISel问题、negative offset folding into global address问题、
R_X86_64_[REX_]GOTPCRELX
问题 - 修复x86/PowerPC integrated assembler问题
- 修复PowerPC combineVectorShuffle问题
- 支持
R_X86_64_PLTOFF64
- 给x86实现
-fpic -fno-semantic-interposition
用的local alias -fuse-init-array
清理- 实现任意relocation type的
.reloc
- 清理修复exception/call frame information问题
- 删除残余PowerPC Mach-O代码
- 让XRay使用PC-relative addresses、支持big-endian
- 重写llvm-cov gcov、支持所有已知GCC gcov读取,优化/清理gcov实现、与GCC gcov tool兼容
- 清理bugpoint
- 清理dso_local
- PGO修复critical edge split、使用COMDAT、wrok around non-determinism
- 拆分
.gcc_except_table
- 修复StackColoring BranchRelaxation JumpThreading
Clang
- 添加
-mbranches-within-32B-boundaries
- 添加
-flegacy-pass-manager
-fno-legacy-pass-manager
-gno-split-dwarf
- 实现
-fpatchable-function-entry=
及相应function attribute - 实现
-march=x86-64-v[234]
- 修复builtin function asm label
- 实现
-fprofile-update={atomic,prefer-atomic,single}
- 在linux-musl和FreeBSD>=13上用PowerPC ELFv2
- 提升
-B
COMPILER_PATH
与GCC兼容性
lld
- 帮助实现
-z force-ibt
和-z shstk
用于Intel Control-flow Enforcement Technology .debug_*
处理- 实现
-z rel
和-z rela
(意义不大) - 实现
R_PPC_COPY
和R_PPC64_COPY
- 实现PPC32 canonical PLT
- 清理
-z pac-plt
、-z force-bti
- 实现Mach-O
X86_64_RELOC_SIGNED_{1,2,4}
- 改进diagnostics
- Detect missing R_PPC64_TLSGD/R_PPC64_TLSLD and disable TLS relaxation
- 修复
--wrap
- 改进
--warn-backrefs
,实现--warn-backrefs-exclude=
- 修复
--gdb-index
- 实现
--print-archive-stats
- 实现
--rosegment
- 支持
-r --gc-sections
- 改进
SHF_LINK_ORDER
- 修复
--icf
用于C++ exceptions (language-specific data area)
Misc
- 清理compiler-rt builtins、libunwind
- 使sanitizers(asan/cfi/msan/tsan/ubsan)支持musl
GCC
3 commits
Align __patchable_function_entries to POINTER_SIZE [PR93194]
libstdc++: Fix the return type of __cxa_finalize
- 因为相关者允许,
Don't make -gsplit-dwarf imply -g
binutils
给binutils报告了诸多bugs。
- ld: 实现INPUT GROUP的相对路径查询
- ld: 实现
--export-dynamic-symbol
- gold: 支持--no-rosegment、设置
DF_1_PIE
- gdb: 支持-1为.debug_line tombstone value
- as: 修复.stabs sh_entsize
- objcopy:
--set-section-flags
支持SHF_EXCLUDE
Linux kernel
- 第一个commit
bpf: Support llvm-objcopy for vmlinux BTF
.weak
相关的修复- 和LLVM integrated assembler相关的修复