On 10/12/22 02:03, Christoph Müllner wrote:


So we have the following atomics ABIs:
 I) GCC implementation
 II) LLVM implementation
 III) Specified ABI in the "Code Porting and Mapping Guidelines" appendix of the RISC-V specification

And presumably we don't have any way to distinguish between I and II at the DSO or object level.  That implies that if we're going to get to III, then we have to mark new code.  We obviously can't mark pre-existing bits (and I may have implied we should do that in my earlier message, my goof).




And there are two proposed solutions:
 a) Finding a new ABI that is compatible with I) and II) is of course a solution, but we don't know if and when such a solution exists.  b) Going to introduce III) causes a break and therefore needs special care (e.g. let the user decide via command line flag or provide a compatibility mode).

I don't see that a) and b) contradict each other.
Why not going for both:
 -) Continue to work on a backward compatible solution
 -) Enable the "new" ABI from the specification appendix via command line flag
 -) Reevaluate the situation in 12 months to decide the next steps
I would lean towards making the new, more correct, behavior the default and having the old behavior enabled by a command line flag. But otherwise what you're suggesting seems reasonable.


Jeff

Reply via email to