@@ -366,6 +366,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
366
366
feature names are appended in lexicographic order, not in priority order.
367
367
* Mangled names contain a unique set of features (no duplicates).
368
368
* Added [MOPS](#memcpy-family-of-operations-intrinsics---mops).
369
+ * Change name mangling of the default version.
369
370
* Align priorities to account for feature dependencies.
370
371
* Introduce alternative names (aliases) `rdma` for `rdm`.
371
372
* Correct FEAT_BTI feature register value.
@@ -2514,8 +2515,10 @@ compiler and it is enabled.
2514
2515
2515
2516
### Name mangling
2516
2517
2517
- The `"default"` version is not mangled on top of the language-specific name
2518
- mangling.
2518
+ The `"default"` version is mangled with `".default"` on top of the
2519
+ language-specific name mangling. All versioned functions with their mangled names
2520
+ are always resolvable.
2521
+ A function is expected to be resolvable with the original mangled name of the function.
2519
2522
2520
2523
The mangling function is compatible with the mangling for version information of
2521
2524
the [[cxxabi]](#cxxabi), and it is defined as follows:
@@ -2535,9 +2538,9 @@ For example:
2535
2538
__attribute__((target_clones("crc32", "aes+sha1")))
2536
2539
int foo(){..}
2537
2540
```
2538
- will produce these mangled names for C language: `foo`, `foo._Mcrc32`,
2539
- `foo._MaesMsha1`.
2540
-
2541
+ will produce these mangled names for C language: `foo.default `, `foo._Mcrc32`,
2542
+ `foo._MaesMsha1` while `foo` is a callable external symbol which leads to one
2543
+ of the versioned functions.
2541
2544
2542
2545
### Mapping
2543
2546
0 commit comments