问题标签 [got]

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 回答
49 浏览

npm - 我安装的 NPM 模块导致错误 [ERR_REQUIRE_ESM]: Must use import to load ES Module

我已将gotNPM 模块安装到我的项目中,但现在它引起了问题。

它说要删除type:module,但我不能这样做,因为它是 NPM 模块而不是我的。

我该如何解决这个问题?

这是一个使用 NestJS 生成的新项目,其中没有其他可能导致问题的项目。

0 投票
0 回答
56 浏览

c - 在共享对象中,为什么 gcc 会通过 GOT 对定义在同一个共享对象中的全局变量进行重定位?

在 Stack 上回答另一个问题时,我自己也遇到了一个问题。在 shared.c 中使用以下代码:

编译:

如果我用 反汇编代码objdump -D shared.so,我会得到以下信息shared_func

使用readelf -S shared.so,我得到(对于 GOT):

如果我错了,请纠正我,但是,看看这个,访问的重定位glob_var似乎是通过 GOT。正如我在一些网站上所读到的,这是由于 x86-64 机器代码的限制,其中 RIP 相对寻址被限制为 32 位偏移量。这个解释让我不太满意,因为由于全局变量在同一个共享对象中,所以保证在自己的数据段中可以找到。因此可以使用 RIP 相对寻址来访问全局变量而不会出现问题。

glob_var如果已声明GOT 重定位,我会理解,extern但在这种情况下,它是在同一个共享对象中定义的。为什么 gcc 需要通过 GOT 进行重定位?是因为它无法检测到全局变量是在同一个共享对象中定义的吗?

相关: 为什么在使用 GOT 引用的共享对象中定义非静态全局变量?

以上是11岁,没有回答我的问题,因为那里似乎没有合适的答案。

奖励:<glob_var@@Base-0x54>反汇编是什么意思shared_func?为什么不是<glob_var@GOT>

谢谢你的帮助!