C library: fix use of va_list for AARCH64#8366
Merged
tautschnig merged 1 commit intodiffblue:developfrom Sep 19, 2024
Merged
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. |
Collaborator
|
Is this something that ought to get an |
Collaborator
Author
Are you suggesting this for improved code clarity or for other reasons? |
Collaborator
|
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
Collaborator
Author
This is now fixed: we no longer use that workaround and instead have suitable code depending on arch ifdefs. |
kroening
approved these changes
Sep 18, 2024
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Sep 19, 2024
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Sep 19, 2024
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.
3 tasks
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Sep 19, 2024
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Feb 9, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Feb 9, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Feb 9, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Feb 10, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Apr 29, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Jun 17, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Jun 24, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Jun 24, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Jun 24, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Jun 24, 2025
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.
tautschnig
added a commit
to tautschnig/cbmc
that referenced
this pull request
Jun 25, 2025
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 file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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_listbe 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