2020年总结
2020-12-31 17:00:00 Author: maskray.me(查看原文) 阅读量:209 收藏

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_COPYR_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相关的修复

其他


文章来源: http://maskray.me/blog/2020-12-31-summary
如有侵权请联系:admin#unsafe.sh