diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2018-10-24 23:28:28 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2018-10-24 23:28:28 +0000 |
commit | 81a650ee87eb679e85a4ca3b1565c5fbd362a472 (patch) | |
tree | 6974432a98b0b6876d5ba3e165a8ad6169c23672 /lldb/packages/Python/lldbsuite/test/python_api/target/TestTargetAPI.py | |
parent | ed9513472c111f6bbf1e34d33a4b5b45aa3c8d76 (diff) | |
download | bcm5719-llvm-81a650ee87eb679e85a4ca3b1565c5fbd362a472.tar.gz bcm5719-llvm-81a650ee87eb679e85a4ca3b1565c5fbd362a472.zip |
Driver,CodeGen: introduce support for Swift CFString layout
Add a new driver level flag `-fcf-runtime-abi=` that allows one to specify the
runtime ABI for CoreFoundation. This controls the language interoperability.
In particular, this is relevant for generating the CFConstantString classes
(primarily through the `__builtin___CFStringMakeConstantString` builtin) which
construct a reference to the "CFObject"'s `isa` field. This type differs
between swift 4.1 and 4.2+.
Valid values for the new option include:
- objc [default behaviour] - enable ObjectiveC interoperability
- swift-4.1 - enable interoperability with swift 4.1
- swift-4.2 - enable interoperability with swift 4.2
- swift-5.0 - enable interoperability with swift 5.0
- swift [alias] - target the latest swift ABI
Furthermore, swift 4.2+ changed the layout for the CFString when building
CoreFoundation *without* ObjectiveC interoperability. In such a case, a field
was added to the CFObject base type changing it from: <{ const int*, int }> to
<{ uintptr_t, uintptr_t, uint64_t }>.
In swift 5.0, the CFString type will be further adjusted to change the length
from a uint32_t on everything but BE LP64 targets to uint64_t.
Note that the default behaviour for clang remains unchanged and the new layout
must be explicitly opted into via `-fcf-runtime-abi=swift*`.
llvm-svn: 345222
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/target/TestTargetAPI.py')
0 files changed, 0 insertions, 0 deletions