Maybe Dmitry can shed some light on this. He actually suggested that optimization. - Alex On 29.09.21 10:33, Peter Zijlstra wrote: > On Mon, Sep 27, 2021 at 07:33:40PM +0200, Alexander Lochmann wrote: >> The existing trace mode stores PCs in execution order. This could lead >> to a buffer overflow if sufficient amonut of kernel code is executed. >> Thus, a user might not see all executed PCs. KCOV_MODE_UNIQUE favors >> completeness over execution order. While ignoring the execution order, >> it marks a PC as exectued by setting a bit representing that PC. Each >> bit in the shared buffer represents every fourth byte of the text >> segment. Since a call instruction on every supported architecture is >> at least four bytes, it is safe to just store every fourth byte of the >> text segment. > > I'm still trying to wake up, but why are call instruction more important > than other instructions? Specifically, I'd think any branch instruction > matters for coverage. > > More specifically, x86 can do a tail call with just 2 bytes. > -- Alexander Lochmann PGP key: 0xBC3EF6FD Heiliger Weg 72 phone: +49.231.28053964 D-44141 Dortmund mobile: +49.151.15738323