> I see that there is function named sha1_block_armv8 defined in
> crypto/sha/asm/sha1-armv8.pl, but I cannot find any function that
> calls it.

Note that symbol is not global, you can't even link to it from outside.
But the real question is if code is *executed*. As calling is not the
only way to get code executed, you can also branch to it. And that's
what happens, there is branch to symbol's "shadow" .Lv8_entry label from
sha1_block_data_order. Why does it branch to "shadow" label? In order to
prevent assembler from generating relocation for linker to resolve. Why
symbol at all? It's development artefact (general-purpose
sha1_block_data_order and sha1_block_armv8 were developed one after
another), but it's still useful when it comes to debugging or profiling.
And it also allows to change mind about not making the symbol global,
for example if module needs to be re-purposed.

-- 
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to