Due to some GNU legacy/compatibility reasons, if an object file doesn't have a .note.GNU-stack section, it is assumed to require an executable stack when linked.
If the executable stack is not actually required, the solution is to add something like this into every .S file:
Using the example program from the README, the result can be checked with the execstack tool, or by inspecting the /proc/$(pidof example)/maps of the running process:
Before
X example
7ffde499b000-7ffde49bc000 rwxp 00000000 00:00 0 [stack]
After
- example
7ffdf5616000-7ffdf5637000 rw-p 00000000 00:00 0 [stack]
The text was updated successfully, but these errors were encountered:
Changes since 0.3.6:
- BUGFIX: The C implementation was incorrect on big endian systems for
inputs longer than 1024 bytes. This bug affected all previous versions
of the C implementation. Little endian platforms like x86 were
unaffected. The Rust implementation was also unaffected.
@jakub-zwolakowski and @pascal-cuoq from TrustInSoft reported this
bug: #118
- BUGFIX: The C build on x86-64 was producing binaries with an
executable stack. @tristanheaven reported this bug:
#109
- @mkrupcale added optimized implementations for SSE2. This improves
performance on older x86 processors that don't support SSE4.1.
- The C implementation now exposes the
`blake3_hasher_init_derive_key_raw` function, to make it easier to
implement language bindings. Added by @k0001.
Due to some GNU legacy/compatibility reasons, if an object file doesn't have a
.note.GNU-stacksection, it is assumed to require an executable stack when linked.If the executable stack is not actually required, the solution is to add something like this into every .S file:
Using the example program from the README, the result can be checked with the
execstacktool, or by inspecting the /proc/$(pidof example)/maps of the running process:Before
After
The text was updated successfully, but these errors were encountered: