2024-12

When Toshiba Media Processor (mep) was upstreamed to binutils-gdb in 2007-01 (https://sourceware.org/pipermail/binutils/2007-January/), binutils got the complex relocations support. While the gas STT_RELC feature is only enabled for Toshiba Media Processor, the ld support is available for all targets. Therefore, an EM_386 object file can use STT_RELC symbols.

In 2012, Ian Lance Taylor said

ELF is designed to permit fast program loading at runtime, and to permit fast linking. Changing symbol and relocation values to take general expressions works against that goal.


Software keyboard remappers allow you to use a key both as a normal key (tap) and a modifier (hold). kmonad, keyd, and kanata are a few choices.

"At Home Modifier by Evdev" (2011) annd xcape (2012) are precursors that only allow mapping one single key.


When single stepping in gdb, you can skip boring C++ STL functions with skip -rfu ^std::. While the skip command provides a glob pattern option, it's likely not useful. In gdb/skip.c, the glob pattern option calls fnmatch with FNM_FILE_NAME, which does not allow the metacharacter * to match slashes. Therefore, skip -gfi /usr/include/* does not skip /usr/include/c++/14.2.1/bits/version.h

gdb's fnmatch utility was introduced for the auto-load feature and it mandates FNM_FILE_NAME.


https://github.com/llvm/llvm-project/pull/117458 clang -M issue.

GNU Make's path canonicalization does not resolve symlinks for IO performance concerns. For example, /a/../b where '/a' is a symlink to '/c/d', it should be '/c/b' but make (and ninja) canonicalizes it as '/b'.

2025-01

Clang generates the available_externally linkage for the instantiated bar below.

1
2
3
4
5
6
7
8
9
10
template <typename T>
struct A {
[[gnu::always_inline]] T bar(T a) { return a * 2; }
};

extern template class A<int>;

int foo(int a) {
return A<int>().bar(a);
}

Decker/lil explains why undefined variables evaluate to 0. It's convenient for nullable chain deck.card.widgets.visited.value:1

https://lobste.rs/s/wmlme8/learn_lil_10_minutes