问题标签 [relocation]

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 投票
8 回答
1960 浏览

memory-management - 为什么每次都从同一个内存地址执行一个函数?

我正在反汇编一个可执行文件:

每次内存地址都是一样的:0x004012d0.

内存地址不是由操作系统动态分配的吗?

更新

现在我看到它是虚拟空间,它可以在某些平台上随机化。

有人可以发布一个改变的 gdb 转储吗?

0 投票
2 回答
10959 浏览

linker - NASM x86_64 中的重定位被截断以适应错误

我正在使用配备 Intel Core 2 CPU 和 2GB RAM 的计算机。我的操作系统是 Ubuntu 9.04。当我尝试编译此代码时:

当我编译此代码“NASM -f bin UARTLOOP.asm”时,编译器可以创建 UARTLOOP.o 文件而不会出现任何错误。当我尝试将 .o 文件与“ld UARTLOOP.o”链接时,它告诉:

你有一些想法来解决这个问题吗?谢谢=)

更新

的输出nasm -hf是:

用法:nasm [-@ response file] [-o outfile] [-f format] [-l listfile] [options...] [--] 文件名或 nasm -v 获取版本信息

0 投票
2 回答
734 浏览

android - 如何扩展 SomeActivity 以重新定位例如 onCreateOptionsMenu?

我知道这应该相当简单,但我还是不明白。
我有一个 Activity (我们称之为XyActivity)已经很长了。因此,我想将一些被覆盖的方法重新定位到子类(我们称之为XyOptions)。看起来像这样:

不幸的是,XyOptions中的方法永远不会被调用。我不明白为什么。我敢肯定答案是微不足道的,所以请指出我的方向。

谢谢,
斯特夫

0 投票
4 回答
69223 浏览

c++ - 链接器是做什么的?

我一直想知道。我知道编译器会将您编写的代码转换为二进制文件,但链接器是做什么的?他们对我来说一直是个谜。

我大致了解什么是“链接”。这是对库和框架的引用被添加到二进制文件中的时候。我不明白除此之外的任何事情。对我来说,它“有效”。我也了解动态链接的基础知识,但没有太深。

有人可以解释这些条款吗?

0 投票
2 回答
2418 浏览

c - 为什么 main 函数总是加载在同一个地址,而变量大部分时间都有不同的地址?

我今天写了这个小程序,结果让我大吃一惊。这是程序

在我的机器上,主函数总是加载到地址“0x80483d4”并且变量的地址不断变化这是怎么发生的?我在操作系统中读到,作为虚拟化方案的一部分,操作系统不断重新定位指令的地址。那么为什么每次我运行这个程序时,main 都加载到同一个地址?

提前谢谢你们。

0 投票
2 回答
2623 浏览

c++ - 如何应用 DOP 并保持良好的用户界面?

目前我想为控制台优化我的 3d 引擎。更准确地说,我希望对缓存更加友好,并让我的结构更加面向数据,但也希望保持我漂亮的用户界面。

例如:

所以用户可以在他的代码中使用接口指针。

但是
在我的引擎中,我目前存储指向场景节点的指针。

因此,在面向数据的设计中,最好使用数组结构而不是结构数组。所以我的节点从...

对这个...

因此,如果我想应用 DOP,我会在这里看到两个问题。首先,我如何在不让用户使用 ID、索引等的情况下保持我漂亮的用户界面?

其次,当某些向量调整大小而不让用户界面指针指向必杀技时,如何处理属性重定位?

目前我的想法是实现一种handle_vector,您可以从中获得持久“指针”的句柄:

因此,当实习生 std::vector 调整大小时,它会更新其句柄。“句柄”存储指向实际对象的指针,并且“->”运算符被重载以实现良好的包装。但这种方法对我来说听起来有点复杂?!

你怎么看?如何保持良好的界面,但在内存中保持连续思考以更好地使用缓存?

谢谢你的帮助!

0 投票
3 回答
5316 浏览

memory-management - 段的静态重定位或静态重定位是什么意思

elf 格式的可执行文件包含各种段,如代码、数据、bss、堆栈等。如果我们说段 xyz 是静态重定位的,那意味着什么?

elf 格式的二进制文件包含每个段的相对地址。当我们说静态重定位时,是否意味着相对地址实际上是物理地址?

0 投票
1 回答
1086 浏览

gcc - 64 位平台上的 ELF 对象文件大小限制是多少?

假设 x86 64 和 linux 平台。

如果查看 ELF 标头,偏移量都是 64 位的。

所以用relocatoin R_X86_64_64很容易创建大于4G的目标文件。这意味着静态 .o 文件和可执行文件可以与 64 位一样大。

但是,对于像 gcc 这样的共享库,我们只有 R_X86_64_PLT32 重定位。这意味着创建大于 4GB 的共享库是不可能的,对吧?

因此,如果我想构建一个庞大的程序,其中一个 .o 文件足够大 (>4GB) ,唯一的选择是静态链接吗?

欢迎任何评论。

谢谢,利米

0 投票
1 回答
7778 浏览

svn - Subversion SVN:存储库已被移动存储库永久移动到 XXX 请重新定位

我现在不了解 SVN。当我更改文件并尝试更新时,它给了我以下错误:

据我所知,我没有更改存储库的地址或任何东西。其他客户端也有同样的错误,因此存储库似乎有问题,而不是 svn 客户端。有什么建议么?我的存储库的地址是“/var/svn/repository”,这是我的 Apache-Config 中的 Location-tag:

这是我的存储库的结构:

更新:

我的工作副本中的 svn info 命令给了我以下结果:

0 投票
2 回答
4559 浏览

arm - 带有可重定位代码的静态局部变量的问题

我正在构建一个在裸机上具有可重定位代码的项目。它是一个 Cortex M3 嵌入式应用程序。我没有动态链接器,并且在我的启动代码中实现了所有重定位。

大多数情况下它正在工作,但我的本地静态变量似乎定位不正确。它们的地址被我的可执行文件在内存中的偏移量所抵消——即我编译我的代码,就好像它是在内存位置 0 加载但我实际上将它加载到位于 0x8000 的内存中一样。静态局部变量的内存地址偏移量为 0x8000,这是不好的。

我的全局变量由 GOT 正确定位,但静态局部变量根本不在 GOT 中(至少在我运行时它们没有出现readelf -r)。我正在编译我的代码,并且-fpic链接器已经指定了。我认为我必须缺少一个编译和/或链接选项来指示将 GOT 用于静态局部变量或指示它对它们使用绝对寻址。 -fpic-piegcc

似乎当前代码将 PC 添加到静态局部变量的位置。