Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FMV] Change the default versions name mangling. #277

Merged
merged 5 commits into from
Mar 8, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions main/acle.md
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
feature names are appended in lexicographic order, not in priority order.
* Mangled names contain a unique set of features (no duplicates).
* Added [MOPS](#memcpy-family-of-operations-intrinsics---mops).
* Change name mangling of the default version.
* Align priorities to account for feature dependencies.
* Introduce alternative names (aliases) `rdma` for `rdm`.
* Correct FEAT_BTI feature register value.
Comment on lines +369 to 372
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed
Aligned
Introduced
Corrected

Expand Down Expand Up @@ -2514,8 +2515,10 @@ compiler and it is enabled.

### Name mangling

The `"default"` version is not mangled on top of the language-specific name
mangling.
The `"default"` version is mangled with `".default"` on top of the
language-specific name mangling. All versioned functions with their mangled names
are always resolvable.
A function is expected to be resolvable with the original mangled name of the function.

The mangling function is compatible with the mangling for version information of
the [[cxxabi]](#cxxabi), and it is defined as follows:
Expand All @@ -2535,9 +2538,9 @@ For example:
__attribute__((target_clones("crc32", "aes+sha1")))
int foo(){..}
```
will produce these mangled names for C language: `foo`, `foo._Mcrc32`,
`foo._MaesMsha1`.

will produce these mangled names for C language: `foo.default`, `foo._Mcrc32`,
`foo._MaesMsha1` while `foo` is a callable external symbol which leads to one
of the versioned functions.

### Mapping

Expand Down
Loading