| LLVM-CXXMAP(1) | LLVM | LLVM-CXXMAP(1) |
نام (NAME)
llvm-cxxmap - ابزار نگاشت مجدد نامهای درهمریخته
خلاصه دستور (SYNOPSIS)
llvm-cxxmap [گزینهها] symbol-file-1 symbol-file-2
توضیحات (DESCRIPTION)
ابزار llvm-cxxmap تطبیق تقریبی (fuzzy matching) نامهای درهمریختهٔ ++C را بر اساس فایلی انجام میدهد که مؤلفههای معادل نامها را توصیف میکند.
فایلهای نماد باید شامل فهرستی از نامهای درهمریختهٔ ++C باشند (یک نام در هر خط). خطوط خالی و خطوطی که با # شروع میشوند نادیده گرفته میشوند. خروجی، فهرستی از جفتنمادهای معادل است (یک جفت در هر خط)، به این صورت:
<symbol-1> <symbol-2>
که در آن <symbol-1> نمادی از symbol-file-1 و <symbol-2> نمادی از symbol-file-2 است. نگاشتهایی که در آنها هر دو نماد یکسان باشند حذف میشوند.
گزینهها (OPTIONS)
- -remapping-file=file, -r=file
- مشخص کردن فایلی شامل فهرستی از قوانین همارزی که باید برای تعیین معادل بودن دو نماد استفاده شود. الزامی است. بخش «فایل نگاشت مجدد (REMAPPING FILE)» را ببینید.
- -output=file, -o=file
- مشخص کردن فایلی برای نوشتن فهرست نامهای تطبیقیافته در آن. در صورت عدم تعیین، این فهرست در خروجی استاندارد (stdout) نوشته خواهد شد.
- -Wambiguous
- در صورتی که چندین نماد معادل (اما متمایز) در symbol-file-2 وجود داشته باشد، یک هشدار صادر میکند.
- -Wincomplete
- در صورتی که symbol-file-1 حاوی نمادی باشد که هیچ نماد معادلی برای آن در symbol-file-2 وجود ندارد، یک هشدار صادر میکند.
فایل نگاشت مجدد (REMAPPING FILE)
فایل نگاشت مجدد یک فایل متنی شامل خطوطی با ساختار زیر است:
fragmentkind fragment1 fragment2
که در آن fragmentkind یکی از مقادیر name، type یا encoding است که مشخص میکند آیا قطعات نام درهمریختهٔ بعدی به ترتیب از نوع <name http://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangle.name>، <type http://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangle.type> یا <encoding http://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangle.encoding> هستند یا خیر. خطوط خالی و خطوطی که با # شروع میشوند نادیده گرفته میشوند.
نامهای C درهمریختهنشده (Unmangled) را میتوان به صورت یک encoding که یک <source-name http://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangle.source-name> (دارای پیشوند طول) است بیان کرد:
# C function "void foo_bar()" is remapped to C++ function "void foo::bar()". encoding 7foo_bar _Z3foo3barv
برای سهولت کار، جایگزینیهای درونی (built-in <substitution>s) مانند St و Ss به عنوان <name> پذیرفته میشوند (اگرچه از نظر فنی <name> نیستند).
به عنوان مثال، برای مشخص کردن اینکه absl::string_view و std::string_view باید معادل یکدیگر در نظر گرفته شوند، میتوان از فایل نگاشت مجدد زیر استفاده کرد:
# absl::string_view is considered equivalent to std::string_view type N4absl11string_viewE St17basic_string_viewIcSt11char_traitsIcEE # std:: might be std::__1:: in libc++ or std::__cxx11:: in libstdc++ name St St3__1 name St St7__cxx11
نکته:
نویسنده (AUTHOR)
توسعه و نگهداری توسط تیم LLVM (https://llvm.org).
حق نشر (COPYRIGHT)
2003-2026, پروژه LLVM
| 2026-07-15 | 22 |