Revert "Revert "Merge pull request #4590 from crabtw/abi""

This reverts commit 625405562c278cb2e45bec6805f13d2c1de8049e.