问题标签 [symbol-table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
190 浏览

debug-symbols - 如何访问库的符号表,查找例程符号名称

我需要识别链接到 OpenSSL 库的 linux 可执行文件中使用的加密例程的地址。如何访问 openssl 符号表?

如何从 openssl cyptolib 中检索上述信息?

谁能帮我解决这个问题?

0 投票
1 回答
264 浏览

g++ - 如何找到我的代码的哪一部分与符号表中的条目相关联?

我正在做一个项目,该项目需要在 Linux 机器上执行,结果证明它没有GLIBCXX_3.4.20库的版本,但代码需要它。有没有办法找到我的代码(C++)的哪一部分要求这个版本?

objdump我使用and读取了 ELF 文件realdef,发现哪个符号需要它: _ZSt24__throw_out_of_rang@GLIBCXX_3.4.20 (4) 但我不知道我的代码的哪一部分可以关联。

0 投票
1 回答
88 浏览

symbol-table - 最终可执行文件中的符号表要求?

我读到 Windows 可移植可执行格式包含一个符号表。我理解为什么在编译的语义分析阶段以及代码生成期间需要符号表。但我不明白为什么最终的可执行文件本身应该包含一个符号表,因为在这个阶段地址被映射到汇编代码中。我错过了什么??

0 投票
4 回答
4653 浏览

c - 如何区分静态函数与 C 中的 nm 或 readelf 输出

我正在尝试在可执行文件上处理 nm 或 readelf -s 的输出。但是,我无法在输出中区分静态函数。

这是我正在使用的内容:

测试.c

其他.c

我像这样编译这些:

然后运行 ​​nm 命令以获取所有符号:

其中出现了以下两个符号(对于我的静态函数):

有没有一种方法可以区分特定的 foo 函数来自哪个文件?或者我需要在编译之前做一些魔法才能让它工作吗?

对于我的用例,我应该补充一点,我可以访问最终的二进制文件和它使用的目标文件,但我实际上无法自己构建它以确保它具有符号表。

谢谢!

0 投票
1 回答
753 浏览

compiler-construction - Three-address code and symbol tables

I am working on a hobby retargetable C compiler in OCaml and I'm building it bottom up. So far I have an annotated AST type, abridged:

and a three-address code type (again abridged):

I have functions written that will transform an AST into a list of TAC nodes ignoring the annotations. Regarding this I have two questions:

  1. What do I do differently when transforming a type-annotated AST to a list of TAC nodes? Should I add annotations to TAC nodes too? This would allow me to later transform high level int/char types into lower-level ones like I16/I8.

  2. How do I handle scoping? What if I have two Vars that have the same name in different scopes?

0 投票
2 回答
1155 浏览

c++ - 使用符号表在 C++ 中按名称引用变量

基本上是标题所要求的。

由于对 和符号表等更高级的概念有点不熟悉C++,我已经在网上对其进行了研究,但我正在努力寻找实现我最终目标的任何方向。我见过的大多数教程都适合 C 语言,而我发现的最接近的问题(here)让我陷入了困境,因为我尝试编译它,但我没有得到想要的结果,而且我我对如何工作还不太extern "C"确定。

最后,我希望能够从符号表中访问一个变量,并更改该变量。我玩过nmand objdump(并且来自硬件背景,看起来很酷),我研究了dlsym,dlopen等,但我不确定这对我有什么帮助(特别是因为我已经看到它使用过在 C 中比其他任何东西都多)。

任何建议或小段代码(这样我就可以编写自己的示例程序)都会很棒。补充一下,这是在一个带有过时版本的 G++ 的 Linux 系统上(我现在不在机器上,所以我没有那个信息),我现在无权升级它。

0 投票
1 回答
5446 浏览

yacc - lex 和 yacc(符号表生成)

我是 lex 和 yacc 以及编译器设计的新手。我想知道在哪个阶段(词汇、句法或任何其他阶段)以及如何生成符号表?

我可以简要介绍一下通过给 yacc 提供 -v 选项生成的 y.output 文件吗?我试图调查它,但没有得到太多信息。

我能否知道除了编译器设计之外还使用了 lex 和 yacc 的其他应用程序。

0 投票
0 回答
277 浏览

gcc - 尝试确定性gcc编译,符号表问题

我为嵌入式系统工作,我正在尝试制作一个每次都能产生完全相同的可执行文件的构建。使用 -frandom-seed 确实有助于稳定原本可变的名称,但我仍然有一些我遇到问题的符号。例如:

0x00003bfc _ZN13WorkingMemory17ReadTransactionalERN3HSL4FileERN58_GLOBAL__N_.. .. .._.._working_memory.cc_AE42A16A_FF4623503AllE

“.._..”等部分显然是根据我传递的 -frandom-seed, id est, 源文件名。在后面的几个十六进制数中,第二个有时是不同的,我猜它可能与编译日期有关,但我不确定。我在 ARM 上工作,使用 gcc 3.4.0,使用 FLAT 可执行文件。我尝试在 ELF 文件上使用 strip 删除符号,但这会阻止 FLAT 转换。有任何想法吗?

0 投票
3 回答
5984 浏览

c++ - C++ 代码的符号表是否包含函数名和类名?

我一直在搜索有关 C++ 代码的符号表是否包含函数名称和类名称的各种帖子。我可以在帖子上找到的东西是它取决于编译器的类型,

如果它一次性编译代码,则不需要在符号表中存储类名和子例程名

但如果它是一个多遍编译器,它可以添加有关它遇到的类及其子例程的信息,以便它可以进行参数类型检查并发出有意义的错误消息。

我不明白它是否真的依赖于编译器?我假设编译器(用于 C++ 代码)会将函数名和类名放在表中,无论它是单通道编译器还是多通道编译器。它如何依赖于通行证?我没有这么好的/深入的知识。此外,任何人都可以显示一个简单的 C++ 类的示例符号表,它看起来如何(带有类名的函数名)?

0 投票
2 回答
74 浏览

javascript - 将背景 Javascript 映射到符号表的开发工具?

我正在查看 Firefox 开发工具(不是 firebug),它们似乎没有跟踪后台 Javascript(例如使用 执行的代码setInterval)。是否有任何开发人员工具可以跟踪setInterval运行以及下一次执行的时间?