[patch/idea] Add register scrambling to testsuite
Matheus Castanho
msc@linux.ibm.com
Mon Jun 13 18:41:53 GMT 2022
Hi DJ,
DJ Delorie via Libc-alpha <libc-alpha@sourceware.org> writes:
> Florian Weimer <fweimer@redhat.com> writes:
>> This funcationality is likely more easily written as an assembler
>> routine that expects a function pointer and closure argument, performs
>> the register clobbers, and then calls the function with the closure
>> argument.
>
> I thought of putting the scramble just before the do_test calls, but
> there were more than one of those, and for the cases I'm trying to
> avoid, it doesn't matter when the regs are clobbered.
>
I was actually working on a patch similar to this one, but looks like
you beat me to it =). And you version seems cleaner.
You could embed your call to support_scramble_registers() in the CALL
macro on test-string.h:
#define CALL(impl, ...) \
({ support_scramble_registers (); (* (proto_t) (impl)->fn) (__VA_ARGS__); })
This way it would apply for all optimized function calls without
requiring many more changes. It also wouldn't affect the string
benchtests, since they use a separate CALL definition from
bench-string.h
> Calling scramble once is enough to more accurately simulate a "busy app"
> where gcc would have eventually filled all the registers with something,
> which is what happened in the bug I referenced. A closure-based asm
> routine would make the work much more complicated, for no real benefit.
>
> I've seen testsuites where each call-under-test was wrapped in a routine
> that called it multiple times, permuting the "untouched" registers each
> time. I don't think we need to go that far.
--
Matheus Castanho
More information about the Libc-alpha
mailing list