[swift-dev] Validating ABI consistency between runtime C++ and standard library Swift code

Kevin Choi code.kchoi at gmail.com
Wed Oct 12 02:21:20 CDT 2016


> getting the ABI slightly wrong

Does this call for something like a validation pass? It would seem
appropriate to apply it to SIL and not LLVM IR since it's inter-language
ABI specific to Swift frontend.

On Tue, Oct 11, 2016 at 8:17 PM, Daniel Dunbar via swift-dev <
swift-dev at swift.org> wrote:

> Can you directly pass arguments to the function crossing the ABI boundary,
> and can you directly access them on the other side? If so, what you can do
> is simply synthesize arguments that cross the full range of the
> bit-representation of the argument types, and validate that you see the
> same range on the other side.
>
> I don't know anything about what this interface looks like so I don't have
> more specific ideas, but if you can give me a little more context I've
> worked on this in the past...
>
> Technically you can't necessarily compare the LLVM IR, since there are
> ways to represent the same ABI call with different #s of IR arguments in
> corner cases.
>
>  - Daniel
>
> > On Oct 11, 2016, at 8:10 PM, Joe Groff via swift-dev <
> swift-dev at swift.org> wrote:
> >
> > I just tracked down a bug due to C++ code in the Swift runtime code
> trying to interface with standard library code written in Swift, but
> getting the ABI slightly wrong and leading to some nasty hard-to-reproduce
> heisenbugs. While I've narrowed down the bug in this specific case, it
> seems like this is a potentially continuing source of maintenance bugs,
> especially as we try to bring up the Swift calling convention in the coming
> year. I'm wondering if there's anything we could do to help validate that
> C++ and Swift code in the runtime is correctly interfacing. We could at
> least check that we're passing the right number of arguments by comparing
> the LLVM IR of the runtime and stdlib, perhaps, though this would have to
> be a fuzzy type-level match since Clang and Swift aren't normally going to
> agree on the exact pointer types of arguments.
> >
> > -Joe
> > _______________________________________________
> > swift-dev mailing list
> > swift-dev at swift.org
> > https://lists.swift.org/mailman/listinfo/swift-dev
>
> _______________________________________________
> swift-dev mailing list
> swift-dev at swift.org
> https://lists.swift.org/mailman/listinfo/swift-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20161012/f9b4c899/attachment.html>


More information about the swift-dev mailing list