Skip to content

Commit

Permalink
[FMV] Change the default versions name mangling. (ARM-software#277)
Browse files Browse the repository at this point in the history
  • Loading branch information
DanielKristofKiss authored and hassnaaHamdi committed Mar 11, 2024
1 parent 942d18e commit 20228f5
Showing 1 changed file with 8 additions and 5 deletions.
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.
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

0 comments on commit 20228f5

Please sign in to comment.