2022

2022-01

不知不觉,llvm-project 3000 commits (灌水量= =)了 https://t.co/kLwMP9Ds7f

@junairez 不想= = 其实我2021年commits还比2020年少。还是要注重质量。我是注重测试的,尽量不像某些贡献者revert/reland/revert/reland

Benchmark lib/libLLVMX86CodeGen.a creation

binutils ar is slow. Its '-T' is unfortunately incompatible with X/Open System Interface Extension. elfutils ar unfortunately doesn't support thin archives. /usr/bin/llvm-ar is slow because of slow https://t.co/QAeO1k6RMZ.1 https://t.co/YCiQbrPC8I

HJ Lu's ld.bfd -z pack-relative-relocs landed in binutils today (will be in 2.38). I'm glad that DT_RELR is (finally) making progress in the GNU land. Alan, as usual, is fixing things after patches landed, rather than catching issues during the review ;-)

@weliveindetail I am modestly concerned with this trend as well... At first glance, reliance on ld --emit-relocs, disassembly, reconstructuring CFG, recreating llvm/lib/CodeGen passes made me a bit nervous. Whether a casual contributor can update bolt's tests will be tested by time.

-DCMAKE_CXX_ARCHIVE_CREATE=' cr --thin ' speeds up archive builds and takes less space. --thin isn't widely available (binutils 2.38, pending https://t.co/QOJ4dtAWyc). The non-XSI-compliant 'T' is a makeshift, but try avoiding it in project config.

I propose that we just drop the diagnostic ("archive has no index; run ranlib to add one"): https://t.co/Ewgtse3bnm I am going to use llvm-ar rcS --thin

@rui314 Thanks for contributing to the effort.

@thakis Was it measured on Windows? (I/O slowness) lld's performance may be improved a bit by optimizing I/O, e.g. porting COFF's async file read to other ports, even if we don't do parallel symbol table initialization.

@rui314 For one input section description, the dynamic relocation offsets (of input sections) have fixed spacing. Yeah, RELR can be computed just once without causing the oscillation problem. The only requirement is first_section_alignment>=2. The waste is rare crossing output sections.

@rui314 I think updating .relr.dyn size more than once doesn't cost much, but I agree that saving it for non-thunk architectures (x86) is still useful. ld.lld may spend more time on getting the offsets (getVA is slow)... OK, I find something improvable right away...

@rui314 Sorting r_offset's parallelly does not help much. Without using some input section description patterns and --shuffle-sections, the dynamic relocations may already be ordered. In libstdc++/libc++, std::sort on a sorted sequence is very fast.

https://t.co/lPa5pOPF0n Archives and --start-lib

@rui314 I forgot one case. If range extension thunks are needed, the spacing between two sections in one input section description may change as well.... So if mold adds range extension thunks, the RELR algorithm needs to be changed.

Parallel ld.lld --compress-debug-sections=zlib (https://t.co/elfCMMkVo8). (Debugged quite a bit zlib&pigz🤣) It's like a simplified pigz (no preload of the previous shard tail as dictionary, no cross-block marker). 512KiB/1MiB/2MiB shard sizes all appear to work well.

When linking chrome and a Release build of clang, -DCMAKE_EXE_LINKER_FLAGS=-Wl,--push-state,--whole-archive,path/to/libmimalloc.a,--pop-state makes ld.lld 1.12x as fast. LD_PRELOAD is 1.11x as fast. Unfortunately distros don't like such customization to packages.

https://t.co/07jsGVOYSm

2022-02

San Jose寶華禪寺, 中國文化公園 https://t.co/GSKm0okArQ

https://t.co/wB1XQTqB4m All about COMMON symbols

@rui314 Without a header, the output may be difficult to understand. --cref is similar to --print-dependencies. While requiring some efforts to parse, its output is actually quite nice... (though a bit space inefficient because the file column wastes 50 characters)

@rui314 In addition, unmangled output is likely more useful.

@adhemerval bmake is nice (0) built-in support for separte src/obj trees (1) meta mode (self-tracking build system) (2) logical AND operators && and || are supported in .if and .elif conditional structures (3) variable modifiers

Thanks to Michael for standing by me and objecting to the output section type (READONLY). https://t.co/dIkO5yViXS

While writing All about COMMON symbols, going down the rabbit hole allowed me to find several useless COMMON linker options for -r and a gold compatibility problem inherited to ld.lld. Cleaning grub and crunchgen... Now my website link is included in a FreeBSD commit message. https://t.co/aBZXUCps1P

@adhemerval MIPS makes relocation scanning in ld.lld slow and more difficult to parallelize :(

@rui314 ld.lld's form takes a section pattern to, for example, shuffle just .init_array

@rui314 Yes. The overloading may not be bad, though, as for different option names the apply order may not be clear (--reverse-sections --shuffle-section=...).

Changed ld.lld to handle archives using the --start-lib code path (https://t.co/pM6I2CGOtV). Linking chrome with --threads=8 is 1.05x as fast, while linking Release build clang is 1.01x as fast.

@rui314 It can, but "--start-lib and --end-lib have poor support in build systems" (https://t.co/lPa5pOPF0n)...

@rui314 build/config/compiler/BUILD.gn already has arflags = [ "-T" ]. Perhaps the change is to add -S beside -T (which should be --thin)....

Fedora .note.package https://t.co/OoxAqWBExT makes me deeply concerned. A linker script usage should be justified (current form is incompatible with gold/mold). Even if justified, it should not use -dT (https://t.co/cpJDxQR65t) or (READONLY) (https://t.co/r1A8rEEQBv)

@rui314 I suggested using an assembler to create .note.package (https://t.co/Bak21VoJxO) The reply is https://t.co/M9jOCA2xcP "Compiled object do not work and cannot possibly work sanely in this context." I think I have asked for evidence but do not receive an example.

@rui314 SHT_NOTE not in a section group is a GC root. Their linker script fragment usage (without KEEP) does not have an effect on preventing GC.

Around 2021-07, on binutils@sourceware.org, I argued twice (READONLY) is unneeded and that advice was ignored.

Oh, well, I got this response: https://t.co/FQgbONpmdG "There is nothing to fix, it is all working as intended, please stop creating entropy"

kernel commits即将+2。 好好遊玩前要好好写performance review(还在写)🌚🌚🌚 https://t.co/MVH5szamUK

The Museum of Contemporary Art没有什么东西= = 今天去Japanese American National Museum凑巧赶上了Citizen 13660展最后一天。附近的书店里中国的网络小说翻译成英文远销海外了= = https://t.co/CctFYYCBaY

@ruki69529530 嗯。The Getty Center票卖完了没有去成T_T,下次还要再去一次,然后还要加上Universal Studios Hollywood

@ruki69529530 飞机

@rui314 @porglezomp I just checked. GNU ld and gold can still link Chrome. There is a dependency backsliding risk if they don't add --warn-backrefs, but that is usually not difficult to fix.

使用https://t.co/7QDKmqPdXQ,工作人员问age 。听到这个问题还挺开心的(感觉已经很老了)😹😹

https://t.co/9DTMqkZTOD (lld 14 ELF changes) I was on a trip and therefore spent really little time on this article (just realized that I should write one to keep a cadence...)😹

If one module consists of N features, the time complexity incrementally updating this module may be more than O(N), because the N features may interact and lead to more than linear edges. This rule applies to introducing multi-threading to ld.lld's symbol processing.

@rui314 Nice usage of call PLT[0]! Other arches only use tail call to always keep the tail call state for unwinding (unsure they were designed to do so), but x86 already did push index thing... Anyway, every new scheme has a risk whether disassemblers (objdump) and debuggers recognize.

@rui314 https://t.co/q0rKBSF538 is for such discussions. And perhaps dig up binutils and gdb mailing list messages whether anything need attention. (I acknowledge that there is always a GNU ld risk that they don't want to change an existing scheme that "works".)

Changed Clang to default to -fPIE/-pie for *-linux-gnu (https://t.co/mEWc30NdYK). Long overdue (for many years system GCC and Clang have this PIC difference)...

CLANG_DEFAULT_PIE_ON_LINUX: Took me an hour to compose a reply. I had to think harder on every sentence whether it could make the other side unhappy. If you ask me, I feel frustrated that he even said so.

These are trying times and people get annoyed easily. My reply to N at 6:10UTC and next reply to T were useful, (in the meanwhile I really thought I fixed the issue) but my subsequent were not. The 6:46UTC to T was useful because T is BoD member: when there is suspicion he stands

by one side without even reading the other side's words, it's necessary to remind him. Then I did not realize zorg changes were not live (bot still green) and T replied so quickly and ignored every point but the revert policy. Then my subsequent replies were made too quickly and

were not meaningful. It was so late and I did not have energy to write a patch (if you look at ppv's revert there was a fixed arm32 thing to consider). My last thing before sleep (prepared a revert but failed to consider the arm32).

https://t.co/nY11pOSdei

@upsuper "会议时坐在他两边的人都拿出手机开始刷新闻……" 他当时在做什么?

2022-03

@Ramborambowski The all or nothing nature of changing EI_OSABI makes it inconvenient to represent individual ELF features. You probably need to accept that ELFOSABI_GNU will be used for Linux, which is not necessarily too bad. GCC C++ objects will likely get ELFOSABI_GNU from -fgnu-unique anyway

@Ramborambowski The preferred way to indicate an OS-specific object is to use a note section (see FreeBSD), beside requesting a ELFOSABI_* value. ELFOSABI_NONE just isn't a good way.

Museum of Fine Arts, Boston 1 괴석도(怪石圖) 金瑛(泉石磷磷聲佀琴 閒眠静聽洗塵心 莫輕數疊青菭石 一夜潺湲直萬金) 2 Little Miss Hone(Samuel Morse,电报发明人之一;手持的是😺) 3 Chandelier+Bust of George IV 4 La Japonaise(受到日本文化冲击,Claude Monet给Camille Monet绘制的) https://t.co/cLT9RVpVLZ

1 Ravine(Vincent van Goah https://t.co/H1rmtVLmCi) https://t.co/GcKiPnG2Wp

@rui314 @koobs This is unconventional. There are other options which take a vector (e.g. -u) but there is no --no-X to clear the vector. Resetting -rpath seems to me may break some programs in subtle ways, so while I can imagine some uses, I do not endorse it (yet).

@rui314 @koobs For portability and possible forward progress, @koobs can ask what binutils@sourceware.org thinks. There is also always the wrapper approach (checking --no-rpath and remove all previous --rpath options) which works with all linkers.

Looks like "When can glibc be built with Clang?" will get an answer. Adhemerval has done awesome work in https://t.co/pbIaX4vAUe Compiling with Clang has revealed some bugs. Great that it does not require --disable-float128 or --disable-werror.

I use for i in *.mp4; do ffmpeg -i $i -c:v libx265 -vf 'scale=trunc(iw*2/5):trunc(ih*2/5)' -c:a libopus -crf 24 -map_metadata 0 small/$i; done to make the videos smaller. The first three are screenshots taken from the fuzzy videos😹 https://t.co/VlSzTLMNEW

@ygo96 @Manjusaka_Lee 卡是因为什么?是不是每次cd目录都要 stat 一堆文件判断语言?

Protea lepidocarpodendron and some Leucospermum in San Francisco Botanical Garden. Silky soft (like cat fur...) https://t.co/bj1W2O6YkW

Conservatory of Flowers in SF Golden Gate Park https://t.co/ojXSHJBldy

Much work... AArch64+AVR+LoongArch+PowerPC+SPIR-V+x86😹 https://t.co/O7XAxHD0pQ

@mieluo --fortran-common只有某种PowerPC legacy library用

Hope my revert request for the clang driver change has been sufficiently gentle. Realized I care about this area so now I subscribed to all such patches. 8hr before needing to catch a flight🤣 https://t.co/hBdx4t4q0k

2022-04

Flamingos may peck at a companion? https://t.co/vu17BJhgEf

Denver Botanic Gardens and Denver Art Museum https://t.co/Iaszwa4sHM

Hadn't contributed to glibc for a while. Got one in today . One gas patch improved a legacy option usage in glibc. Realized that Jan Beulich is now a global maintainer of binutils. Congratulations! This really helps review bandwith. https://t.co/nM36hLipCb

History Colorado Center. There is a guitar used by John Denver (co-written two state songs!). Ralph L. Carr Colorado Judicial Center. There is a learning center on the 1st floor. https://t.co/kdQSY83HoS

There is a🐅at the aquarium... https://t.co/y7a0k4BbwG

A Lyft driver told me that Meow Wolf is nice. The nicer thing is that it closes at 22:00, so a cool place for (immersed art and game) entertainment after visiting other attractions. https://t.co/KX60tP1lFC

https://t.co/5tBv3qj6Sm

Denver->Akata->SFO. For weather monitor system issues Akata did not allow landing, so the plane diverted to SFO. I could not leave and had to take the SFO->Akata->SFO circle😿At Akata passengers had to go through the security again even for connection😿The detour costed 3+hrs.

@rui314 Thanks for the notification! What does libbacktrace do and how is working around it critical? For .debug_frame style backtrace reporting? Or C++23 for libstdc++?

https://t.co/Soc2A5LRFl

Trying to remove PGO/sanitizer passes from legacy pass manager. Notified Julia/ldc/Rust. Perhaps "... will go away" may get more attention than the feature-request style "Port xxx to new pass manager"🤔 https://t.co/MZWrZrnpFG

Created feature request to many projects using LLVM legacy pass manager for optimization pipeline: bcc,bpftrace,halide,ldc, clspv,swiftshader,xls.

glibc https://t.co/9nllDDlt3j has an interesting bug for non-PI_STATIC_AND_HIDDEN arches (e.g. m68k). rtld.c processes R_68K_RELATIVE and other relocs in one loop. Due to loop-invariant code motion, loading the jump table address from GOT (switch (r_type)) may be ordered before

R_68K_RELATIVE processing, causing the jump table address to be unrelocated/incorrect. musl https://t.co/9nllDD3jPb avoids the problem and other potential problems with multiple hard barriers. __dls2 is the one which glibc can take insight from to avoid the m68k breakage for 2.35

Glad that some folks share the concern that llvm-project repo is getting too big and adding new projects needs more attention. Honestly my feeling is some groups added projects just to lower their integration cost. Some projects have particularly low build ratio among devs.

Sometimes it's a subtle relation that "I don't block your adding X, so that when I add Y you won't object, either".

compiler-rt D77912 Hope arm32/riscv folks will address this udiv issue. I think it is an invalid claim, but such things are always a matter of how much time you may spend, do people believe in your or a lawyer's professionalism, whether it's professional doesn't matter.

My llvm-project fixes this week: Go binding, -Wunused-variable, non-determinism, miscompile, Bazel change, lld, P2036R3, help user migrate away from removed CodeGen API😹 https://t.co/H2FE1hwocV

https://t.co/FDGGi3Exl9 PI_STATIC_AND_HIDDEN in glibc rtld

https://t.co/7xppEfZRuf says "Linux 5.13 kernel is default, with 4.4 backup on big endian"

gdb is broken with 5.x on powerpc32. Hope someone can fix it...

@adhemerval There is a comment for rtld.c #ifdef PI_STATIC_AND_HIDDEN. It is just probably not so clear. I am thinking of defining an opposite macro to replace PI_STATIC_AND_HIDDEN. Then wish that new ports will not need to care about this at all:)

https://t.co/bmeFnhZPbg

2022-05

Overhauled https://t.co/qCVCVGSaZz and https://t.co/Qe1Kg02tJF . Sent glibc patches to simplify code and fix aarch64/arm.

Learning glibc🎡 https://t.co/dEWrz0eNxh

@ShoaibMeenai I used one spelling in neomutt (using gmail imap) and another in gmail (web)... Either is fine:)

@delphij 刚刚测试,glibc x86-64 gcc -Os -static needs 816KiB (--gc-sections=>795KiB); musl needs just 10KiB.

San Diego Museum of Art; San Diego History Center; Comic-Con https://t.co/CjQTeoEg6Z

San Diego Air & Space Museum, Japanese Friendship Garden https://t.co/43sbqhbIoS

A Mother's Day Celebration, Spreckels Organ Society #SpreckelsOrgan https://t.co/LhneeLewIL

llvm-nm aimed for GNU compatibility. In circa 2013 it was modified to replace classical nm on macOS. The two have conflicting short options -s and it's troublesome. llvm-nm added some options without asking binutils and caused conflicting -U now. https://t.co/PaFLAkYvZX

I am thankful to Nick for willing to change/add nm -U/-W to make nm/llvm-nm more compatible. The two will do better coordination in the future. This is an important reason that I am subscribed to the binutils mailing list.

山坡羊🐏 (at San Diego Zoo Safari Park) https://t.co/qCtApUoAey

@iskyzh 您要去哪儿?

https://t.co/q9ZiDdfE3n

@rui314 I think they have corporate usage which require an ISA in complete control (domestic technology means a lot to some). (There is some copy-n-paste from MIPS and RISC-V, though.) My biggest concern is that they did not engage enthusiasts and domain experts early enough

@rui314 ... and there is some mess in their upstreaming processes.

https://t.co/dhObCOWBOE Nice article on bringing randomness/reverse to the build system. Informed sjg (bmake maintainer) of the feature. Reported issues to glibc (https://t.co/l9qRMShdvI) (See also: ld.lld --shuffle-sections, libc++ unspecified behavior randomization)

Lands End Trail, San Francisco https://t.co/DhtMBQs4xO

So there is now a feature request about --package-metadata https://t.co/sfz7FnvHtt https://t.co/OEMlHReSbk . Unsurprisingly I'd question the usefulness when a relocatable object file (most linkers) or a linker script (many linkers) suffices. The "FDO" note owner looks wrong to me

Built tools/perf for the first time. Submitted a patch to fix a stack unwinding issue related to ld.lld's default --rosegment -z noseparate-code layout (perf record --call-graph dwarf ./a.out && perf report) https://t.co/DVpLu2u75G https://t.co/MW3DPhlMdw

论持久战。忘记提几天前修复GNU toolchain protected symbol问题的一个阶段性胜利了 https://t.co/RdOHVvRDVc

Norton Simon Museum, Pasadena, California https://t.co/PxJCw4dHR8

The Huntington Library, Art Museum, and Botanical Gardens. Philosophiæ Naturalis Principia Mathematica; A Journal of the Plague Year; The Second Part of Henrie the Fourth; Draft of "Walden" https://t.co/2G2em21OdB

@lichray Sat/Sun/Mon在Monterey Park,现在已经返回Bay Area了……以后再去Los Angeles County再联系大大吧~

流芳園 at the Huntington on Sunday https://t.co/jqL4ZXpjVh

2022-06

linux_perf_commits=1;LLVM更新救火(处理SLPVectorizer事务,处理opaque pointers fallout😱);尝试修复GNU ld aarch64;积攒glibc声誉;防止lld wasm走歧路;促进在MTE事务上和GCC的双边关系😼;及时blocking reviewer防止后悔.. 周六有饭局事情多得处理不完了😹 https://t.co/q1Kkm4DVhy

In llvm-project: A developd a major feature in area X. A's colleague B (both were new in this area) clicked "Accept", then A landed the patch in, say 6 hours, leaving stakeholders no chance for review. I then checked and found controversial designs (barring coding issues).

In other occasions "colleague B" can be replaced with one from another group with fame in the community but B made decisions for an area C cared about. Both activities motivate me to "Request Changes" or add myself as a blocking reviewer more frequently for areas I care about.

For the first type, sometimes the stakeholders took responsibility as well as they hadn't perform timely review before B clicked "Accept" (very common, since people can move on). Unfortunate.

Existing lld patches adding RISC-V relaxation do not handle iteration/st_size correctly, and undoing "deleting bytes" seems inelegant. I have created an alternative https://t.co/oNY3dRmHEp and wonder if anyone wants to test it. Linked Linux kernel without -mno-relax is bootable.

Removed ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA from glibc. Added a warning for copy relocations on protected data. Protected symbols started to become usable.

Molly Brown House Museum "... Brown wasn't allowed to testify in front of the Senate investigating committee about the sinking because she was a woman" 8名中国乘客中6名获救,被驱逐去古巴,后移居英国、香港、或加拿大。方榮山?趴在木板上存活下来,启发James Cameron写了Jack和Rose的故事 https://t.co/SzfeoV93bC

@rui314 I fixed this on glibc side (milestone: 2.33 https://t.co/upUjJz4X5U). glibc needs to be compiled with a modern GCC.

Saw GCC -nolibstdc++ patch and informed them of -nostdlib++. Thanks to Iain Sandoe for the argument "if GCC already has an option spelling, usually clang would follow that - it does not seem unreasonable to reciprocate." clang --stdlib/-nostdlib++ aren't great names.

GNU ld's aarch64 port does the right thing for protected symbols now. https://t.co/Mo0jrXrXad

Under the weather since the afternoon (slept for 3- hrs)😴Updated ld.lld: added quoted string support to ENTRY/TARGET, fixed precedences for ==, !=, and the ternary operator, added a bunch of compound assignment operators... https://t.co/asHU0rdkN9

@__dichn__ On Phabricator, if anyone clicks "Approve", the Diff will turn green. Sometimes a patch is approved by sb even if it is not in a ready shape. If I care about a component enough, I may click "request changes" or change myself to a blocking reviewer so the Diff turns white again...

@__dichn__ It's very rare that I fundamentally reject some Differentials. More commonly I think a Diff needs to do XYZ before it should be considered. A big problem in llvm-project nowadays is that a component's maintainers do not have bandwidth to review XX new feature and a reviewer from

@__dichn__ another area may approve a Diff. That's fine, but sometimes the author may not know to ping relevant folks or wait sufficiently long time before landing or the person clicking Approve may miss something.

I am excited that many folks want Zstandard for debug sections (I have wanted this for a long time) https://t.co/EeROKk4wdA I proposed ELFCOMPRESS_ZSTD on generic-abi and notified binutils/gdb/gcc/gnu-gabi.

2022-07

How to answer this question? https://t.co/gACzFmcX0P "Hence the need to have asked why is Zstd different, and why now the time to act on that, rather than waiting a bit more."

@scturtle @__broken_mike 您去哪儿了?

@ZhenboLi1 @thautwarm rm 的时候再三确认没有加 -r ,就行了吧

Wing Luke Museum of the Asian Pacific American Experience. Chee Kung Tong (the guide said Sun Yat-sen came to this place (where these stuff were moved from) on his fundraising tour (in 1911)) https://t.co/vwhlH5FziM

Victor Kai Wang (see "an undiscovered painter makes his museum debut at Wing Luke"; "May 16" counter-revolutionary victim) https://t.co/Q2hWf5GHWV

Seattle Art Museum on Saturday https://t.co/1NjzBuKmtz

Seattle Asian Art Museum on Saturday 沈周 秋江晚釣圖?(Solitary Angler on an Autumn River) 文徵明 余畫金焦落照圖吳水部德徵先生寄示二詩題謝長句(Poem for the painting "Sunset over the Jin and Jiao Mountains”) 聖武天皇(Emperor Shōmu) 書法(賢愚因緣經卷十 Sutra of the Wise and the Fool https://t.co/rq2znhEj5O

Museum of History & Industry https://t.co/ynGRyTRo8u

Bellevue Downtown Park and Meydenbauer Bay Park. Story behind the "Lest We Go" monument for WWI https://t.co/caSRIazklR https://t.co/itnsf2XHn1

@scturtle 吓坏

Pushed my lld RISC-V linker relaxation patches today. Projects will no longer need -mno-relax. The local-exec TLS relaxation is a missing piece. For PC-relative to GP-relative relaxation, I am still of the opinion that GP is probably a mistake.

@thautwarm Nim也不需要,语法更优雅

Not sure whether ELFCOMPRESS_ZSTD can catch glibc 2.36 (~2022-08-01), https://t.co/sGBlNrmVXl , but let me try...

遇到一个试图改lld某heuristic,但没有表现出专业性的、高很多级的校友。"it may not be useful to you or employee-name, but this is useful to us" "Please don't abuse the administrator rights"😹就不是希望patch被接受的正常态度了。我还是试图保持平静

我最初的评论可能过于简短,促使他想较真(当然我仍坚信自己的判断),这是我需要改进的点。讲真,如果是他的某个值得尊敬的、有60+ lld commits的同事发patch的话,可能很早就接受了

Unallocatable global register (GP) for RISC-V psABI: https://t.co/j5xz7VRyA1 (just in case someone tries to propose such a patch to lld)

https://t.co/OT5ZNodEES RISC-V linker relaxation in lld

https://t.co/hpzEOfSi6P (in Chinese, bilibili's postmortem on a 2021-07-13 incident) reminded me that when Lua 5.4 was released, I asked on lua-l whether it's possible to define LUA_NOCVTN2S/LUA_NOCVTS2N by default and BDFL rejected the idea.😂 https://t.co/2TiTn7xRGX

Finally, protected symbol in GNU ld's x86 port is fixed. Protected data symbols had serious regression in binutils 2.26 time. Now fixed, along with the function symbol which had been broken for ~20 years (likely ever since binutils's x86 port supported visibility). https://t.co/hhlVBx0u6A

2022-08

谢谢riscv-elf-psabi-doc组织的认可。给AArch64 ABI提了20+评论。给glibc 2.36做了一点微小工作(包括:在LoongArch合并前指出了一些rtld问题)。musl终于快要合并DT_RELR了🎉 https://t.co/DmxjOspSLY

Landed https://t.co/aMow4Ghmbm which changes ld.lld to initialize input section in parallel. A single digit speedup, benefiting glibc malloc more than mimalloc.

DT_GNU_HASH entering generic ABI is disliked by Solaris... I want to insist that sticking with the existing ELFOSABI_NONE is fine. Marking an object ELFOSABI_GNU isn't really useful. OT: Direct binding is great but having it in the Linux world is (unfortunately) so unlikely. https://t.co/qd10m8PUNM

Campbell->Capitola, Santa Cruz->Carmel-by-the-sea->Bixby Creek Bridge->San Simeon(missed Hearst castle's tour, visited its small museum)->Cachuma Lake Vista Point(closed at 19:00, missed)->Santa Barbara->Pasadena https://t.co/VljK0OPOR9

参观了Venice Beach、玩了Santa Monica Pier🎡今天晚上见到了久仰的lichray

About the DT_HASH change for glibc provided DSOs. Carlos has a great summary of how EPIC's "Easy Anti-Cheat" makes an unreasonable requirement on DT_HASH (https://t.co/UHt8wwYe71). Some people did't even read that it is unrelated to the ability to interpret DT_HASH for user DSO.

Two types of arguments are derailing: "DT_GNU_HASH has no good official documentation" "DT_HASH is required by the generic ABI". https://t.co/n0uRUnkWTC.6 linked by GNU ld uses ELFOSABI_GNU, so I am not really sure how the second can be used as an argument.

In addition, the number of dynamic symbols isn't really a thing the generic ABI requires. Some people read that some non-dynamic-loading tasks require the number. I think such an interpretation reads too much from the specification as it diverges from ELF's liberal spirit.

@Plagman2 The statement about glibc is wrong. See https://t.co/J9guV5O72J and related comments. The Easy Anti-Cheat use case just boils down to an unfortunate instance of Hyrum's Law. I wanted to comment just because this tweet went viral on Reddit and I wish that people know the truth.

https://t.co/eTR1982jFD

Going-to-the-Sun Road https://t.co/KBeBlsup5F

Hidden Lake Trail, Glacier National Park https://t.co/2vyCiBqdp8

@cxm95 Which binary sanitization?

Grinnell Glacier, Montana https://t.co/yLfeEIp2ZE

It was raining heavily in the return trip and we had to get through the mudflow... https://t.co/TwevJsaYkq

After 10~20 min...

五岭逶迤腾细浪,乌蒙磅礴走泥丸😱😱😱 https://t.co/hfUzsjtHpg

https://t.co/B3kpzM241r

2022-09

Revamped https://t.co/jSuShPe9ut Made -Bsymbolic and --export-dynamic* parts less confusing...

@delphij 去Glacier part的时候靠金拱门四个人只吃了$19... 还多看了一段日落时的美景。金拱门真好

@rui314 Perhaps contact Chimera Linux folks like q66

https://t.co/Lz6JD1czPo

Clang C++/ObjC++ defaults to gnu++17 now (except CUDA/HIP/PlayStation). Fixed ~70 tests🤣Added some lit magic, raised a test method discussion

GCC's change https://t.co/xw5BqVzgde did not modify many test files because their coverage is somewhat lacking (https://t.co/qs2ImE3sQL) https://t.co/I7RuUFdv1F

https://t.co/nvZrADhNrt

In a Release build of -fPIC/-pie clang, relocation scanning takes 25% time in ld.lld. My pending parallel relocation scanning https://t.co/pgsvXd3POZ will have a huge speed-up (1.27x as fast).

@rui314 Which hack? I think the traditional local-dynamic to local-exec code sequence is good since DTPOFF converts to negative offsets like local-exec. With the proposed change, static __thread int a, b; -fpic -pie => sub + non-negative DTPOFF which is kinda weird.

@rui314 What is "when the corresponding symbol is relaxed"? TLS symbols are like in a separate address space and cannot be relaxed.

I have a parallel ld.lld --compress-debug-sections=zstd patch but I suspect I missed some tricks zstdcli uses and I am unclear whether using ZSTD_c_nbWorkers is as good as pzstd, so it is time to ask Yann and Nick... https://t.co/x9mEAU1L8R

@rui314 Still puzzled. Whether it's GD/LD, the current relaxation scheme is like compiler-generated code for LE: negative symbol offsets. I agree that rewriting movq %fs:0, %rax to another insn can be shorter and make room for another insn, but positive symbol offsets are not like LE.

@rui314 The codegen seems fine as it essentially considers all tls symbols non-preemptible. This can easily emulated using hidden visibility. I think -ftls-model=local-dynamic has little value and is often misused.

@rui314 mimalloc appears to use initial-exec (inappropriate but fine with glibc and FreeBSD rtld). And -ftls-model=local-dynamic is used to revert that default. The right solution should be to remove the option completely...

Spent 5 hours on a binutils-gdb zstd patch: https://t.co/asMayPYeIb This will add support to gas/ld/objcopy/objdump/addr2line/nm and gdb.

I reported that R_RISCV_CALL{,_PLT} distinction was unneeded in 2019. CALL was deprecated recently.I changed LLVM integrated assembler to always use CALL_PLT. binutils followed suit.Slightly unfortunate:CALL_PLT instead of CALL is kept because BFD does something weird with CALL😂

https://t.co/3jYzQIBcbM Layering check with Clang

见完一个四年不见的、即将去Seattle的、OI时期的复旦附中朋友🥹 现在见十年以上、即使行业相关性较大的朋友的频度也是以年计

@shyhaimao 海猫姐在哪儿?

@quininers = =

@shankerwangmiao 想念汪喵

binutils 2.40 and gdb 13 will support zstd compressed debug sections. autotools is awesome.🤣 for i in bfd binutils gas gdb ld; do (cd ~/Dev/binutils-gdb/\(i; PATH=~/projects/automake-1.15.1/bin:\)PATH ~/projects/autoconf-2.69/bin/autoreconf -vf) done https://t.co/GfoigTcyG0

@delphij @hdcola Nim

@delphij The FreeBSD commit message is very kind to the glibc behavior in the Ulrich era:( https://t.co/adASAZbRaj https://t.co/FvgGUWPOzP

My biggest complaint about clang -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang is that it starts with -e instead of --e, so it conflicts with -e (ld option forwarder, --entry).

2022-10

Latest ld.lld can be a malloc benchmark thanks to parallel relocation scanning. https://t.co/SLCW1kveuk mimalloc and jemalloc are still faster with --threads={16,32,64} while glibc malloc/snmalloc are much slower.

@yyw2000 用英文了,因为感觉其他人也在看= = This tests linking a release build clang. (When compressed debug sections are involved, the performance gap between lld/mold diminishes...)

For relocation scanning, there is perhaps one large allocation in each task. NUMA perhaps matters more.

@tobiashieta Thanks for the recommendation. lld linked with rpmalloc is still fast with --threads={16,32}.

@yyw2000 My test does not use compressed debug sections (either input or output). (My previous work is on parallelizing output compression/etc.) Updated the gist to include rpmalloc statistics and the output of /usr/bin/time -f '%e don't know why jemalloc is so fast:)

Revamped https://t.co/xMoSuqbjle Does anyone know a C minifizer? The self-contained amalgamation needs 64+KiB when you import std/algorithm, which makes the output not suitable for Codeforces...

@disruptnhandlr I use clang-format for now (ColumnLimit: 9999 IndentWidth: 0 ContinuationIndentWidth: 0 SpaceBeforeAssignmentOperators: false SpaceBeforeParens: Never) and will probably try some clang::Rewriter based standalone tool following rename-fun/rename-var in creduce...

@yihong0618 捂脸😂现在只会toolchain,不学FP

https://t.co/64U3jbz4A1 Good enough for my use case. It needs some polishing.

@rui314 This is the obsoleted ELF v1 ABI. To a first approximation it's dead... I know that it lives in the Linux kernel and very few Linux distros which haven't switched.

Support for !STDC C compilers makes zlib interfaces messy... https://t.co/l0JmjrMg9g

1
2
3
4
5
6
7
8
9
10
11
12
13
// From madler
#ifdef __STDC__
# define OF(args) args
#else
# define OF(args) ()
#endif

int f OF((int x));
int f(x)
int x;
{
return x * x;
}

@mgorny_gentoo It is. I wish that the author can acknowledge that non-STDC compilers can just stick with older versions of zlib (as I replied in a previous comment)....

第一次参加朋友的婚礼后酒宴🥳🥳🥳高中时抄过在座四个同学的作业🤦🤦🤦

My useful changes in the two days: fixed two longstanding LTO bugs. Improved .addrsig_sym semantics. Improved llvm-objcopy --decompress-debug-sections semantics. Added SOURCE_DATE_EPOCH support to Clang. https://t.co/ANcQEDQYNS

@alex_toresh @tobiashieta I wish that Linux distros replace allocators for their clang and lld packages, but am unsure this requires adding more CMake complexity to llvm-project...

@bruxisma Some executables (toolchain ones e.g. clang/lld) are used more while some are used less. LLVM_LINK_LLVM_DYLIB doesn't work with MSVC builds and adding every executable may increase the total size non-trivially.

@tobiashieta @alex_toresh @bruxisma Some work can improve the situation, e.g. LLVM_TOOL_LLVM_DRIVER_BUILD helps make toolchain executables smaller.

@bruxisma @tobiashieta @alex_toresh It's not a coincidence that many who have performed many llvm-project code reviews have expressed very strong objection (https://t.co/BHsLgl03uU). It's unfair to dismiss these complaints about GitHub's code review system. Super long post worth reading https://t.co/BxVeq0nezh

@rui314 I don't mind:)

Got my first dynamorio commit for DT_RELR support. This is the fourth ELF loader I have updated for DT_RELR🤭 Updated https://t.co/tzvo0UrI9g mentioined that some programming languages (Jai,Odin) support relative pointers.

感动🥹之后翻新一下这篇文章🥹 https://t.co/VRGkXlJRWT

@ParkyMatthew Sorry, I didn't. Rerun tests with a -DSNMALLOC_STATIC_LIBRARY_PREFIX= build of snmalloc...

https://t.co/2pZrXdHQNT (Initial fixes for clang build support) is exciting! I reviewed 12 glibc patches today🥳I am motivated to fix clang -MP for an edge case and analyze the glibc alias-to-a-weak-alias story (https://t.co/NWxGhfwXua). https://t.co/my9dsOtwqN

https://t.co/UOBGnmsW8D Distribution of debug information (WIP, but quite long now)

2022-11

Added LSP callHierarchy to ccls (note: $ccls/call was implemented long before LSP counterpart). I am unfamiliar with vscode extension development and don't know how to update vscode-ccls... https://t.co/RsVb8GHdqu

@RichFelker The two RW PT_LOAD segment scheme avoids an unnecessary maxpagesize alignment as used by GNU ld (pad the start of the RW to make the end of PT_GNU_RELRO maxpagesize aligned (I think they switched from commonpagesize to maxpagesize recently)). https://t.co/xvQwlD4H9c

@RichFelker q66 patches Clang Driver to use -z now for musl triples. With -z now, ppc64 .plt (GOTPLT) is part of PT_GNU_RELRO (first RW PT_LOAD in lld). SHT_NOBITS .plt makes the first RW p_filesz<p_memsz. The second RW has .bss and naturally has p_filesz<p_memsz. -z lazy fixes the issue.

https://t.co/KqKQ7gajqa lld linked musl on PowerPC64

@shyhaimao 真怀念啊。现在如果花时间看一点题(如做过的)不知道价值大吗?

感觉很多年没有写过minimum-cost flow了(LeetCode Weekly Contest)🥴wrong answer两次🥴 https://t.co/mmEFFpcVPS

https://t.co/O4SU3zPYMY _FORTIFY_SOURCE

@gaocegege 默认编译到 Chez Scheme ,挺奇妙的

两个人问我怎样才能支持lld s390x,我说没有人给我提供s390x资源玩啊~

对一个四年前见过的Nintendo人我们以前见过。我说这一年来我有时会改改,大幅提升了性能了。他说Switch用上LLVM toolchain各种ELF工具,感谢我的lld/ELF改动。

两个人说搜索东西就找到了我的blog~

@yyw2000 我不玩Switch所以没法核实,但我不相信这个说法。lld 3.9还很不成熟,aarch64支持也很不完善

外面风声鹤唳,万事不想关心。小楫轻舟,梦入芙蓉浦。 https://t.co/Lz6yBVhBUz

Added zstd support to gold and dwp (https://t.co/sGCrLu15iC). Automake based testsuite is awesome! https://t.co/0rwzhhNkRY

IMHO an elegant Manacher's algorithm implementation with even substring lengths. Hmm, handing the odd lengths with the padding trick seems more convenient. https://t.co/lAQuYufbZD

I noticed OpenBSD https://t.co/mSjvQPxOoy (immutable userland mappings) due to a llvm-readobj patch for PT_OPENBSD_IMMUTABLE. Is it useful or just a security theater?

https://t.co/hoMJvFJmj4 ODR violation detection

https://t.co/G5jXYVokR0 "More on immutable"

https://t.co/N06ZGSjG7t Relocatable linking

Spotted two minor issues: RISC-V __global_pointer$ and x86-32/x86-64 TLS_MODULE_BASE should not be defined in -r mode. Fix them in lld. Reported the TLS_MODULE_BASE issue to GNU ld (https://t.co/LlGRde2cOv) and it was fixed 67min after. Rapid fix!

https://t.co/1Z6Hjg0n8K

Washington Monument, World War II Memorial, Lincoln Memorial https://t.co/X98JYeGokn

"Freedom is not free" https://t.co/J0Ver8AZEe

"Out of the mountain of despair, a stone of hope.""The ultimate measure of a man is not where he stands in moments of convenience and comfort, but where he stands at times of challenge and controversy,""We must come to see that the end we seek is a society at peace with itself,.. https://t.co/2nyZC9m8ja

@yyw2000 今天想想我能说的就是拍摄下这些文字了…… 现在Linux laptop买什么好呢?不考虑macOS/Windows

今天看到的最有感触的展品:America's Presidents: National Portrait Gallery放映的"Tear down this wall!" https://t.co/oAlj0foiNc

下雨,下午雨小时去National Archives Museum,看到了Founding Documents in the Rotunda for the Charters of Freedom。友:广场那周围都没有地铁,走起来很累;我:走Constitution Ave和Independence Ave,不累

@ruki69529530 没有啊(现在这种时局不考虑的)。在Washington, DC玩

https://t.co/ogu2lJS7au

?听?台:1969年10月播放了任毅的《我的家乡》(别称知青之歌) https://t.co/j9dUwsOzV3

https://t.co/nQIgIjrXhT

Barack Obama: "Once your term's up, you're going to be a citizen once again and that I think is both humbling but extremely gratifying, because it reminds us that this is a democracy." https://t.co/emNGUyvb5u

2022-12

今天处理了(ThinLTO,--emit-relocs,libc weak def)咨询,glibc arm static-pie triage,(KCFI,ld64.lld ThinLTO,llvm-objdump mapping symbol,.variant_cc还有一些想不起来的) review,(.addrsig_sym,.riscv.attributes,clang -p) patches。还有很多要处理下周才能继续好好的玩耍

Weekly第四题想省事,写Floyd–Warshall。很多年前OI时N=500 O(N^3)也是无所顾忌的,结果LeetCode因-fsanitize=address,undefined TLE。用plain array和__attribute__((no_sanitize("address"),no_sanitize("undefined")))。但比赛时没有多想operator[]还会被instrument TLE😭提交了GCC feature request https://t.co/9pwxGR9dph

@yyw2000 #pragma GCC optimize("O3") ? 写在规则里不能用了吗?没写的话取消成绩太坑了。 我以前用过asm解决 stack space (usually 8MiB)太小的问题。一些题目会形成一个链让朴素DFS stack overflow...

呐喊自序刚好是一百年前的 https://t.co/00GtmLE1IX

Contributed 4000 commits to llvm-project (main branch)🥳🎉🏖️🎡 (Well, a lot of cleanups...)

MACRO-11 has .irp 0,1,2,3,4,5,6,7,8,9 and .irpc i,0123456789 but doesn't provide convenient generalized iteration. The feature is inherited by GNU as and LLVM MC. I want to iterate from 0 to 31 in a patch and I end up with #define FROM_0_TO_31 0,1,2,...,31; .irp i,FROM_0_TO_31.

Along Kalakaua Avenue, Holonunu, 81st Annual Pearl Harbor Memorial Anniversary Parade https://t.co/74kUBkdBUn

Pearl Harbor survivors🫡 https://t.co/lTrAgO4web

@Delta2315 Ah, what do you need?

@Delta2315 I know a small portion of the code base but I have a somewhat good understanding about the {llvm,clang,...}/lib/{xxx,yyy,zzz} level directories. So perhaps I shall create a github gist about this information at some point...

“招国魂兮何方,大风泱泱兮大潮滂滂。”(梁启超《二十世纪太平洋歌》) “学为人之途,游阿美利加。”读梁启超《夏威夷游记》谈防疫有感。 https://t.co/WaE1dEn1pg

夏威夷王国后主Liliʻuokalani是一名伟大的作曲家。“最是仓皇辞庙日,教坊犹奏别离歌” https://t.co/NTkl4E4zwA

《金史·哀宗本紀》:「我為金紫十年,太子十年,人主十年,自知無大過惡,死無恨矣。所恨者祖宗傳祚百年,至我而絕,與自古荒淫暴亂之君等為亡國,獨此為介介耳。」

https://t.co/G3fll7tXwV

ʻIolani Palace

玉树后庭花 陈叔宝

丽宇芳林对高阁,新妆艳质本倾城。 映户凝娇乍不进,出帷含态笑相迎。 妖姬脸似花含露,玉树流光照后庭。 https://t.co/c9WcqMOsgk

An adapted "First they came" for LoongArch mistakes (and many also RISC-V's😹) https://t.co/c3iPZrLnxO

内部一块石碑有《大清国浙江宁波府镌赠美国华盛顿纪念塔碑》。月初去Washington, DC的时候不知道😭 https://t.co/em9lnzNV7z

Photocopies of 1930+ edition《周髀算经》(Zhoubi Suanjing)《测圆海镜》(Ceyuan haijing)? There is a tag "Fumigated NOV 31 1936" on one page... https://t.co/NuKdGHt5Er

@gengjiawen 思想很超前了

邮箱未读终于清零了,不知道是否可持续。 lld/stack unwinding答疑/CFI/armv4t thunk/arm be/ThinLTO/test-list sourceware test/...

2 commits (not shown) did not make me so happy (1 is about someone who hasn't contributed in 3 years LGTMed his colleague disrespecting my valid reply.) https://t.co/vJAC5VMURd

https://t.co/OoeohYSmVg Control-flow integrity

https://t.co/ygucaSreu4 TRAPSLED complained by stein makes a linker implementation inconvenent. I've fixed several ld.lld issues related to TRAPSLED (synthetic sections, PT_GNU_RELRO, etc) and finally made it do the right thing for -z separate-code. This is an example that ...

... an inefficient mitigation has taken so much implementation effort. But if I remove it, perhaps some security group from a team will complain, even if they never write exploits themselves.

https://t.co/vcsJZN3me3 elaborated the global function pointer alternative. https://t.co/ZpdSWqEFeO added a section "Symbol assignments within an output section"

😭😭😭😭😭 https://t.co/Di7dAYU4NM

@gengjiawen 一月打的,失效了吧。还好没有发烧……只有喉咙疼+咳嗽

@MinakoOikawa 第一次

Expressed concern of LoongArch linker relaxation on their binutils patches (https://t.co/N5EUQUb0xg) and revised The dark side of RISC-V linker relaxation (https://t.co/OHNGARYaaV)

Advent of Code in the Jai programming language https://t.co/uSiDYmbBAm

https://t.co/x6icZWeaIS 区间第k小值总结(fenwick tree nested segment trees, wavelet matrix, parallel binary search, Mo's algorithm, etc)

@freeze0xBFF It's about competitive programming and I think most of my subscribers will not be interested in it...

In llvm-project, https://t.co/v0q4MIGm3z has an incorrect date (2021-09; should be near 2022-08-11). So git log --since=d where 2021-09<d<2022-08-11 will lose many many commits. --since-as-filter= is good. (https://t.co/e3P3JhP7gX.)

https://t.co/zYzoaCRVxM year end summary

On the last day of 2022, I implemented x86-32 -fno-plt TLS GD/LD optimizations in lld and updated my TLS post to include an example. In today's LeetCode Weekly, forgot to cast size() to a signed type and got a wrong answer. Ugly C++😭😭😭 https://t.co/G1T9e7H4hu