2024

2024-01

I have collected https://t.co/4DfrmQMhro differentials that are not “Closed” at https://t.co/IcmMBvz5wH

differential id,status,title,author,"*-commits" subscribers

@alex_toresh Thanks for mentioning this. Saving embedded images should be possible with some work (I cannot access the Phabricator instance now). I've added some notes to the post.

% rg -l 'phabricator-remarkup-embed-image' templates/diffs/ | wc -l 3332

Linux kernel commits++🥳LLVM assembler/lld/AddressSanitizer changes😸 https://t.co/hdt56MZnjp

@zolutal You probably will get nervous about glibc>=2.35's behavior on p_align=2MiB object files as well... (https://t.co/em5aKSszyE)

Perhaps the article can discuss how the 2MiB file size matters?

https://t.co/wy5K1I6hVd Exploring object file formats

RISC-V TLSDESC runtime tests succeeded! A pending musl patch + a pending LLVM patch + a pending lld patch https://t.co/8fBekG7kyW

On the LLVM side, the RISC-V TLSDESC work has been completed today. Updated some paragraphs...

@Manjusaka_Lee 这是哪个发行版?其实用 libLLVM.a挺容易出ODR问题的,比如:https://t.co/aIrdrnMC4Q链接libLLVM.a,a.out链接https://t.co/aIrdrnMC4Q和libLLVM*.a

https://t.co/bjoniD7VQQ Modified condition/decision coverage (MC/DC) and compiler implementations

https://t.co/EimNkmBTu2 Raw symbol names in inline assembly. expected_gcc_patches+=2; expected_linux_kernel_patches++; 🥳

@laike9m @FledgeXu > 只有一个会去折腾个人项目,没见过搞开源的

我在努力研究LLVM,虽然不是个人项目(

2024-02

https://t.co/Bn8cw9NRnQ Toolchain notes on z/Architecture

Ulrich Weigand发出了lld/ELF SystemZ patch。我周末努力研究,写出了 https://t.co/Bn8cw9NRnQ ,斗胆在patch里提到了我对s390x ABI的评论。今天Ulrich老师认真地回复了 https://t.co/C7Ok3WrxUI 好开心啊

It's so good to revisit Computer History Museum and see IBM System/360 after learning a bit about z/Architecture. While there are certainly many less useful instruction formats due to limitations as a 1960s ISA, the nibble-aligned instruction components are actually elegant. https://t.co/jVQ7Se9U8e

@chandlerc1024 @TartanLlama Replied on https://t.co/mJsNvr6Lqc

https://t.co/NNnbrj6k7L MMU-less systems and FDPIC

Oh, the original m68k -msep-data -mid-shared-library patch author left a comment!

@negativezarro @rui314 I received the requests sometimes as well:) Blog posts offer the freedom to explore any exotic topic, and I can frequently update them. The linker topic is mostly engineering and practices. I heard "extra-dry linkers and loaders book" today.

2024-03

Thrilled to make the 5000th commit to llvm-project! The Clang "Sema" patch is the 5000th if co-authored commits are not counted. https://t.co/5YknlwkmG1

@_minipli @grsecurity Hi, nice article that does extensive archaeology and collects relevant links. This illustrates that even when individual changes to each component are well intended, the system as a whole may present weakness (of course, perspectives differ on the tolerance).

@_minipli I was actually CCed on the 2020 kernel patch and I believe the patch is good. That said, I remain hesitant about the glibc dynamic loader change (have objected to the glibc patch)...

https://t.co/ROZjKZJelb A compact relocation format for ELF

@corsix Haha, sure. However, IRELATIVE is only for dynamic relocations and there is a serious ordering problem. https://t.co/ilYPKgOdLO

@corsix If IRELATIVE is a serious suggestion, how are GLOB_DAT/JUMP_SLOT supposed to work? Does the self-relocating code invoke callbacks provided by the dynamic loader? If that's the code, it would be simpler to provide a crt*.o file linked into DSOs instead of having an IRELATIVE.

@corsix Execution requirement is incompatible with static linking and analysis tools (e.g. readelf -r). This blog post also mentions a generalized RELR format, however, relative relocations usually outnumber non-relative relocations, making the latter less interesting to optimize for.

https://t.co/oRXY1Xp7Gt [RFC] RELLEB: A compact relocation format for ELF

GCC/binutils threads: https://t.co/Wzl2qI0nGy

https://t.co/9o5Dji1qVS C++ exit-time destructors

https://t.co/ROZjKZJelb Major revision. Renamed to CREL. I want to be convinced whether zigzag encoding+ULEB128 is superior to SLEB128. One-byte encoding is used the most. (The shift operation for PrefixVarInt (or a suffix-based variant) in one-byte encoding make them worse.)

https://t.co/ywQ2BUUsy6 Added paragraphs about lazy binding, static ET_EXEC, implicit addends, DT_AARCH64_AUTH_RELR, and DT_ANDROID_REL[A]. CREL is strictly better than DT_ANDROID_REL[A] now.

I (co)prevented LLVM from adding a dependency to liblzma 4 weeks ago😅The ifunc issue reported by the user allows me to improve my ifunc blog post and the Clang -Wunused-function false positive report gives me motivation to improve Clang.😅 https://t.co/xdVGRaDkKP

@hongqn @kfll @flaneur2023 对。可以用高压缩等级和长窗口,压缩速度可能比xz慢,但解压缩快很多。毕竟很多场景构建一次,使用多次,牺牲压缩速度是值得的。

@rui314 A json dependency for the sole purpose of validation is indeed weird. I objected to the libjansson dependency, but it was to no avail. https://t.co/dBATbRMmRt

2024-04

https://t.co/f1UYNYGmFv Light ELF: exploring potential size reduction

https://t.co/vDIGZeB1Ei Added an interesting case about ifunc: IRELATIVE relocations with dependency. The scenario works as long as both assembler and linker ensure a symbol table order.

@jon_roelofs Thanks for the work. I added some notes about your Mach-O implementation. https://t.co/4HamwhN7kc It seems that future xz will remove the ifunc infrastructure for crc and reply on HAVE_FUNC_ATTRIBUTE_CONSTRUCTOR. Non-gcc-non-clang compilers will use a fallback like "lazy pointer"

https://t.co/kcEguZdp1v I have some interesting results to share about Lempel-Ziv compressors and CREL (byte-oriented format allows for further compression). CREL outperforms RELA compressed with weak codecs like lz4 (level 9) and sr3a. I'm still gathering support for CREL.

Added --default-script and --debug-names to lld。原始的--debug-names patch太多了,所以整个框架我几乎重写了。发起人的测试很冗余,我重写了,且提出一个方便重建测试的脚本。 https://t.co/j0ERRUcbTD

https://t.co/bty66rbag1 When QOI meets XZ

https://t.co/EIWVFhaX17 Clang's -O0 output: branch displacement and size increase

Orange website: https://t.co/bu0NKg94Pg

2024-05

Intel Museum https://t.co/Swyc7mrcei

https://t.co/PV7SsOcMWk Exploring GNU extensions in the Linux kernel

https://t.co/e7MAwzD1P2  Evolution of the ELF object file format

HN link: https://t.co/r7nZzLgyYp

The HN link did not work likely because I was somehow shadowbanned. The link seems to work now and has been placed to the Second-Chance Pool (https://t.co/hB4KdjzgQz)

2024-06

https://t.co/GFQXnTrHWl Understanding orphan sections

Desired GNU ld changes:

  • Split -z separate-code into --rosegment and -z separate-code
  • Restore the pre-2.31 -z noseparate-code default for Linux x86, prioritizing file size concerns.
  • Add an option to place read-only sections entirely before .text https://t.co/QbT9YX57kG

https://t.co/TkuoosJW6c NativeClient's assembler extension for aligned bundling made the LLVM integrated assembler more complex, hindering improvements. Extensions added further complexity. I simplified the design by implementing aligned bundling in a different way.

RT @disruptnhandlr: A rare sight of nfc-stat-check on BOLT buildbot catching a real processing time improvement: https://t.co/773zjgfW85 =…

Assembler day and bug fix day: working hard to make LLVM faster. https://t.co/aIfkVScaLk

https://t.co/WkVEkaONKz Integrated assembler improvements in LLVM 19

2024-07

https://t.co/EpqnmOtKqy Linker compatibility and the "User-Agent" problem

@corsix @11rcombs Nice project! (I enjoyed reading /docs as well.)

Probably time for a glibc feature request:) https://t.co/2PBXkFiux3 ("special static-pie capable of loading the interpreter from a relative path").

@corsix @11rcombs Your project probably solved Firefox's relrhack in a more generic way. https://t.co/iRjUqjL8eL

I've also heard an AArch64 PAuth developer's complaint on adoping PAuth on glibc systems. Hope newer glibc will support something like rcombs' portable-dynamic musl.

.llvm_addrsig interop issues, which would be solved by CREL (https://t.co/lnV1t84gho)

https://t.co/doehPwnYXa (.llvm_addrsig in JDK/VM static libraries (.a files)) https://t.co/a8Susd20Zr (Ubuntu sanitizer archives have .llvm_addrsig)

https://t.co/zuL8mnwMBM

Mapping symbols: rethinking for efficiency

tl;dr Mapping symbols describe data in code and instruction sets transition (e.g. A32<=>T32). Pending LLVM integrated assembler patch that will eliminate almost all mapping symbols Mach-O LC_DATA_IN_CODE describes ranges. Compressed .strtab and .symtab might be beneficial.

LLVM MCAssembler.h has undergone a complete overhaul by me. Object file specifics have been moved to ELFObjectWriter/MachObjectWriter/WinCOFFObjectWriter/etc.

Surprising but substantial Clang compile-time reduction achieved through my recent DenseMap and hashing function optimization.

https://t.co/1tpYWPJJmu https://t.co/ww0M5QI3VH

The constraints of memory consumption and code size might make DenseMap difficult to replace. https://t.co/mw9wrwnXme

https://t.co/pG3QYTGeRj Added brief information about a significant decrease in compile time for LTO I did last week, related to the section layout algorithm.

2024-08

Recent linker patches that are interesting (lexer, cross-reference analysis, nosectionheader, and compact relocation (CREL)). I hope to see widespread CREL adoption in Linux and *BSD to significantly reduce relocatable file sizes. https://t.co/XBs6XkOLox

@markliang1994 这应该是PIE,0x3fb8是link-time address。run后要检查run-time address(0x3fb8 + load_base)。load_base可以 i proc m找出

https://t.co/dbDaRYRkvu My involvement with LLVM 19

14小时里提交了两个可执行文件格式patch🥳最近终于把Clang的RISC-V small-data-limit纠正过来了 https://t.co/lSoaAP1oLU

東京国立博物館 https://t.co/hBaZ6nADXB

2024-09

LLVM 19.1 supports experimental CREL relocations with explicit addends using the temporary section type code 0x40000020. Chrome is adopting it. I hope that people are happy with the standard code assignment: SHT_CREL = 0x20 . https://t.co/OlRf9ZnWly

Over the years, I've been honored to receive multiple awards and bonuses at Google, including:

Perfy awards: 2 gold, 2 silver, 1 bronze Healthys awards: 2 platinum Thirdys awards: 1 silver

Peer bonus: 61 Spot bonus: 13 (Monthly bonus average has been 1.23 since 2020.

It's been incredibly rewarding to be recognized for my efforts. A huge thank you to my supportive peers who have nominated me for awards, and to Google for creating such a valuable platform for recognizing employee contributions.

Now updating emails in repositories https://t.co/x238py6unF https://t.co/yU2IvT8wml

2024-10

https://t.co/u2PNJF6Guj ccls and LSP Semantic Tokens

orange site: https://t.co/LMlNN7eYwk

@chapuni Nice to meet you just 5 minutes before the end of the reception!

Who knew adding trailing enum members could cause such a stir? This is not an ABI/API break. https://t.co/ZwtwFA76Ii

2024-11

https://t.co/eNaUsRIsTK Tinkering with Neovim

https://t.co/6mIrZQQLHo Implemented textDocument/switchSourceheader for ccls. For C++ files, each interesting symbol (non-namespac definitions) votes for a header file. The header file with the most votes is selected. For header files, find the file with a corresponding #include.

https://t.co/c4AtXELWvO Keeping pace with LLVM: compatibility strategies

https://t.co/PWEl34HyaN semantic tokens, textDocument/switchSourceHeader, index strategy

https://t.co/lRpb2nppog Removing global state from LLD

2024-12

In clang-format, Google C++ style's default Default AllowShortIfStatementsOnASingleLine/AllowShortLoopsOnASingleLine are annoying https://t.co/RNdgPzVzET

wild linker, by ignoring some ELF features like COMDAT, can offer faster symbol resolution,even without full parallel resolution like mold. It turns out that many ELF features are not needed by typical Rust projects. It seems early to try incremental linking (I doubt the concept)

https://t.co/v9Ul8qsrcM introduced llvm-mc improvements (replacement for rz-asm) and a llvm-objdump trick utilizing xxd -r -p+llvm-objcopy -I binary