相关疑难解决方法(0)

符号etext,edata和end定义在哪里?

这是来自Linux手册页的代码:

#include <stdio.h>
#include <stdlib.h>

extern char etext, edata, end;

int main() {
    printf("First address past:\n");
    printf("    program text (etext)      %10p\n", &etext);
    printf("    initialized data (edata)  %10p\n", &edata);
    printf("    uninitialized data (end)  %10p\n", &end);

    exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

运行时,下面的程序产生如下输出:

$ ./a.out
First address past:
    program text (etext)       0x8048568
    initialized data (edata)   0x804a01c
    uninitialized data (end)   0x804a024
Run Code Online (Sandbox Code Playgroud)

在哪里etext,edata end界定?如何为这些符号赋值?它是由链接器还是别的?

c linker gcc ld

17
推荐指数
3
解决办法
7068
查看次数

使文本段可写,ELF

我需要使可执行ELF的.text段可写.我需要修改的程序是用C编写的,我可以编译它.有任何想法吗?

非常感谢.

c text gcc elf ld

6
推荐指数
1
解决办法
3962
查看次数

标签 统计

c ×2

gcc ×2

ld ×2

elf ×1

linker ×1

text ×1