-
Notifications
You must be signed in to change notification settings - Fork 277
C library: fix use of va_list for AARCH64 #8366
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #8366 +/- ##
========================================
Coverage 78.36% 78.36%
========================================
Files 1726 1726
Lines 188382 188382
Branches 18240 18240
========================================
Hits 147629 147629
Misses 40753 40753 ☔ View full report in Codecov by Sentry. |
Is this something that ought to get an |
Are you suggesting this for improved code clarity or for other reasons? |
The fact that |
This is a fixup to "C model library: Support ARM64 va_list types" that 1) only changed only a subset of the code locations that required change and 2) did so with a crude workaround. Really, we need to abide by ARM's procedure call standard for ARM64, which mandates that `va_list` be a particular struct. See https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#definition-of-va-list and https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#the-va-arg-macro While at it, also add the necessary define for Visual Studio's support of ARM64. Fixes: diffblue#8357
20e7cef
to
40a3dbb
Compare
This is now fixed: we no longer use that workaround and instead have suitable code depending on arch ifdefs. |
This release addresses build failures on aarch64 (64-bit ARM) platforms (via PR diffblue#8366) and for some CMake configurations (via PR diffblue#8435). Users of loop invariants with dynamic frames have two changes to their user experience: 1) Users will no longer need to give unwinding specifications for `do { ... } while(0)` loops. 2) Loop invariants that are conjunctions will be turned into more fine-grained properties to ease debugging of loop invariants when they aren't successfully proved.
The fix from diffblue#8366 must not be used on macOS as that platform still uses `__builtin_va_list` instead of the ARM-mandated struct.
The fix from diffblue#8366 must not be used on macOS as that platform still uses `__builtin_va_list` instead of the ARM-mandated struct.
aarch64 ABI (section 7.1.4) mandates that va_list is a struct with particular members. The C library model was fixed in diffblue#8366, but we didn't yet implement the struct type support in goto conversion.
aarch64 ABI (section 7.1.4) mandates that va_list is a struct with particular members. The C library model was fixed in diffblue#8366, but we didn't yet implement the struct type support in goto conversion.
aarch64 ABI (section 7.1.4) mandates that va_list is a struct with particular members. The C library model was fixed in diffblue#8366, but we didn't yet implement the struct type support in goto conversion.
aarch64 ABI (section 7.1.4) mandates that va_list is a struct with particular members. The C library model was fixed in diffblue#8366, but we didn't yet implement the struct type support in goto conversion.
aarch64 ABI (section 7.1.4) mandates that va_list is a struct with particular members. The C library model was fixed in diffblue#8366, but we didn't yet implement the struct type support in goto conversion.
aarch64 ABI (section 7.1.4) mandates that va_list is a struct with particular members. The C library model was fixed in diffblue#8366, but we didn't yet implement the struct type support in goto conversion.
This is a fixup to "C model library: Support ARM64 va_list types" that
and
Really, we need to abide by ARM's procedure call standard for ARM64,
which mandates that
va_list
be a particular struct. Seehttps://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#definition-of-va-list
and
https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#the-va-arg-macro
While at it, also add the necessary define for Visual Studio's support
of ARM64.
Fixes: #8357