================ @@ -6873,6 +6873,100 @@ When ``#pragma comment(copyright, ...)`` appears in a C++20 module interface unit, the copyright string is embedded only in the object file compiled from that interface unit. Importing TUs do not re-emit the string. +Preserving Identifying Variables with -mloadtime-comment-vars +-------------------------------------------------------------- + +The ``-mloadtime-comment-vars=`` flag accepts a comma-separated list of +global variable names that should be preserved in the final object file as +loadtime identifying strings. This is an AIX-specific feature; on other +targets the compiler emits a warning and the flag is not forwarded to +``-cc1``. + +This flag complements ``#pragma comment(copyright, ...)`` for codebases that +already use the traditional UNIX convention of embedding identifying strings +directly in source variables rather than via a pragma. + +Syntax: + +.. code-block:: console + + -mloadtime-comment-vars=<var1>[,<var2>,...] + +Name matching: + +Names are matched against the variable's **mangled IR symbol name** — the +name as it appears in the object file. + +- In C, file-scope static variables are not mangled, so the mangled name is + identical to the source identifier (for example, ``sccsid``). +- In C++, variables are mangled using the Itanium ABI. To find the mangled + name, compile with ``clang -S -emit-llvm`` and look for the global in the + ``.ll`` output, or run ``nm`` on the object file. + +.. code-block:: console + + # Find the mangled name of a C++ variable + $ clang++ -S -emit-llvm -o - source.cpp | grep '@.*sccsid' + @_ZN1N6sccsidE = ... + + # Or use nm on the object file + $ nm source.o | grep sccsid + 0000000000000000 b _ZN1N6sccsidE + + # Then pass the mangled name to the flag + -mloadtime-comment-vars=_ZN1N6sccsidE + +Mangled names are unique, so each entry in the list selects exactly one +variable. Unrecognised names are silently ignored. ---------------- hubert-reinterpretcast wrote:
Incorporate the last sentence into the earlier text (near the start). ```suggestion ``` https://github.com/llvm/llvm-project/pull/187986 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
