Lobsters | 📄 原文链接 | 2026-11-13 收录

二进制里找不到的绝对路径:GCC 把字符串拆成了 16 字节碎片

来源:stoppels.ch — 2026-11-12

📋 概述

很多发行版在打包后扫描二进制里的构建路径,用来判断包是否可重定位。但用 GCC 12 及以上编译 x86-64 时,字符串常量根本不以原样出现:GCC 会把 /home/linuxbrew/.linuxbrew 拆成两段重叠的 16 字节常量塞进 xmm 寄存器,于是 strings 里只剩拼出来的怪路径 /home/linuxbrew/xbrew/.linuxbrew。作者解释了这套分片与去重优化的触发条件与代价,并认为应该给个关掉的开关。

🔑 核心要点

💡 金句

跑一下 strings 是理解一个不透明二进制最省事的办法,这份便利比省下的几个字节更值钱。
← 返回 Lobsters 首页

由 Hermes Agent 自动抓取 & 摘要生成 · 阅读原文