我已经设计了自己的编程语言,并且正在为它开发编译器。该语言被转换为普通C语言,然后调用gcc
来编译和链接以这种语言制作的程序,称为Perun。
涉及到名称修饰,类似于在C ++中的用法。我有一个名为perun-demangle
的实用程序,可以将错误的名称转换为易于理解的形式。示例:
$ perun-demangle Per_FD3std4priv5posix14FDOutputStream10writeBytes_M3std4priv5posix14FDOutputStream_0_AU8
std.priv.posix.FDOutputStream.writeBytes(std.priv.posix.FDOutputStream, byte_t[])
如果我们尝试链接程序,但是缺少该函数的定义,则gcc
(由Perun编译器调用以链接程序)仅输出:
undefined reference to `Per_FD3std4priv5posix14FDOutputStream10writeBytes_M3std4priv5posix14FDOutputStream_0_AU8'
但是,当使用g++
链接C ++代码时,链接程序会理解如何分解C ++符号并在错误消息中输出其易于理解的形式。大概是使用c++filt
来完成的。
我的问题是:我可以以某种方式使链接器使用perun-demangle
而不是c++filt
来自动整理错误消息中的符号吗?