我有一些SPARC二进制文件已使用似乎是SunPro CC编译器的文件进行了编译。二进制文件中的符号指的是非常早期的C ++实现(预命名空间),看起来像这样:

对应于以下方法:

__0oHistreamrsRUl.
__0oHistreamrsRi.
__0oHistreamrsRf.
__0oKistrstreamdtv.
__0oHistreamrsPc.
__0oKistrstreamctPCc.
__0oNIostream_initdtv.
__0oNIostream_initctv.


为了取得进一步的进展,我想了解这里使用的处理方案,但是我的Google-fu太弱了。在哪里可以找到有关此处使用的名称处理方案的文档?

评论

没有名称空间支持?那一定要回到Sun Workshop时代。

该二进制文件已有15年的历史了。我可以对重整方案(__0前缀,H = 7个字符的符号,依此类推)进行一些猜测,但是最好有一个引用。我已经搜索了开放源代码存储库,希望找到一个解映射器,但是没有找到一个了解这种特定解映射方案的数据库。

我想知道Retrocomputing上是否有人可以找到该信息...

#1 楼

作为Sun WorkShop™for Solaris 2.x的一部分,我在archive.org上找到了以下文档:

mangling.ps

#2 楼

您应该可以直接使用c++filt。注意不要使用binutils中的一个。确保使用正确的安装路径,例如:


/opt/SolarisStudio/solarisstudio12.3/prod/bin/c++filt


评论


虽然这有助于解决特定问题,但实际上并不能解决所要求的问题;是否有关于使用的篡改方案的文档?

–伊戈尔·斯科钦斯基♦
18/09/10在19:29

@IgorSkochinsky然后,这实际上是一个很好的练习!如果OP可以访问编译器,则应该可以编写文档(例如itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling)

–tibar
18年9月12日在13:09