Assembler Testing #22056
Replies: 4 comments 14 replies
-
@zkWildfire Are you still looking into this? |
Beta Was this translation helpful? Give feedback.
-
I was investigating the use of IntelSDE and at least at that time it seemed to me prohibitively slow to run all the OpenSSL tests under it. |
Beta Was this translation helpful? Give feedback.
-
How slow are we talking? Could it run as a daily check on branches? Weekly? |
Beta Was this translation helpful? Give feedback.
-
It's not a high vs low level API thing, but that you ideally want to test the asm functions directly. Testing up the stack will work, but the more C functions in the call stack, the more likely you miss bugs due to what the compiler happened to emit for the C calls. Also calling conventions get complicated with too many arguments, or parameters that aren't word-sized. It's a lot easier to say that you don't allow such type signatures in internal asm functions than to constrain the public API. |
Beta Was this translation helpful? Give feedback.
-
Is there a plan to add CI and tests for all the assembler calls?
We have had multiple issues related to untested assembler recently so this seems like a good idea.
Intel SDE
Getting Intel SDE into github actions CI.. Will need to check that the license is ok to do this. As it is an emulator we would only want to run this on a smaller test set. There are some marketplace github actions for SDE that have a MIT license
(e.g. https://github.com/petarpetrovt/setup-sde)
(It looks like you can run the emulator using)
sde [-option] -- exe_name [args]
TESTS
@davidben has suggested copying boringssl
(See #21522 (comment))
This is perlasm code written for multiple platforms and c++ that would need conversion to c.
This requires understanding what all the code is doing (as well as registers, unwinding and trampoline functions).
It would also require multiple reviewers to also understand it.
It is hooking into low level calls to do the checking at the deprecated low level API level. (Not sure if these will eventually be removed) and then calling the global assembler ABI which it wishes to check… So they kind of need to be internal tests. The internal tests we currently have use the test framework which is perl based, so this may not fit nicely into the current system. So it might then need its own test system?
Beta Was this translation helpful? Give feedback.
All reactions