GCC Splits String Constants Into Pieces, and Your Path Audits Miss Them
Paths in Pieces
Package managers like RPM, Arch, Homebrew, and Conda scan binaries for absolute build paths, but GCC silently defeats them. It splits string constants into overlapping 16-, 32-, or 64-byte chunks for vectorized copies, so a path copied into a std::string appears nowhere in the binary — and repeated padding gets deduplicated. Clang doesn't do this and generates nearly identical code. The author argues the optimization saves little and hurts binary interpretability, and has submitted a GCC patch to opt out.
Wait, did GCC just turn /home/linuxbrew/.linuxbrew into an entirely different path /home/linuxbrew/xbrew/.linuxbrew with a made-up subdirectory xbrew? How?