main.c

int enable;
int test = ; int main()
{
int temp; add();
return ;
} int add()
{
return ;
}

o反汇编的地址都是0起始,elf的地址都是映射后的地址。

多了一个.rela.text,大小为12字节

偏移为4,什么意思?

info的次高8位为重定位目标所在节符号表的索引为9,即为add,其数值为0x0000 0020,即第4列Sym.Value的数值。

低8位表示type,即R_SPARC_WDISP30(在ABI sparc supplement中有定义),表示( S + A - P ) > > 2

什么意思?推测,S为Sym.Value,A为Addend,P为?合起来即为0x0000 0000 + 0 - 0 = 0x0000 0020

为什么o文件的反汇编为call main+4呢?如果新加一个del函数,则是call main+c?不明白

难道o文件的调用关系不准确,需要看elf文件的?

ELF文件之七——使用链接脚本-2个函数-data-bss-temp-call的更多相关文章

  1. ELF文件之四——使用链接脚本-2个函数-data

    main.c ; int main() { ; } int add() { ; } main.o 反汇编可以看到多了.text节的反汇编,存储的是全局变量的初始化数值 main.o对比,text段后面 ...

  2. ELF文件之八——使用链接脚本-2个函数-data-bss-temp-call-debug信息

    gcc编译选项可以设置生成调试信息, debug信息格式有stabs,coff,xcoff,dwarf. 常用的有两种格式,stab和dwarf,stab较早,dwarf较新.两种格式介绍:https ...

  3. ELF文件之三——使用链接脚本-2个函数

    main.c int main() { ; } int add() { ; } main.o的比较 与之二相比,section header offset由0x90变为0xA4,增加0x14,即add ...

  4. ELF文件之六——使用链接脚本-2个函数-data-bss-temp

    main.c int enable; ; int main() { int temp; ; } int add() { ; } elf反汇编结果如下,可以看出main函数中的栈多开了8字节,虽然局部变 ...

  5. ELF文件之五——使用链接脚本-2个函数-data-bss

    main.c int enable; ; int main() { ; } int add() { ; } bss段在elf中虽然size是4,但并不占filesize,节头表如下图所示 程序头中,项 ...

  6. ELF文件之九——使用链接脚本-2个函数-data-bss-temp-call-debug信息-struct

    main.c int enable; ; struct aaa { int membera; char memberb; }s_aaa; int main() { int temp; add(); d ...

  7. 裸板驱动总结(makefile+lds链接脚本+裸板调试)

    在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~40 ...

  8. arm裸板驱动总结(makefile+lds链接脚本+裸板调试)

    在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~40 ...

  9. 四、u-boot 链接脚本

    4.1 C语言中的段 编译器在编译程序的时候,将程序中的所有的元素分成了一些组成部分,各部分构成一个段,所以说段是可执行程序的组成部分. 代码段:代码段就是程序中的可执行部分,直观理解代码段就是函数堆 ...

随机推荐

  1. Python使用requests爬取一个网页并保存

    #导入 requests模块import requests #设置请求头,让网站监测是浏览器 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 6. ...

  2. gcd竞赛模板

    int gcd(int a,int b) { ) return a; return gcd(b,a%b); }

  3. eclipse git 解决冲突 解决 mergetool 不能使用问题

    eclipse git 解决冲突 解决 mergetool 不能使用问题 本地代码 远程代码 第一步 --> 同步远程资源库,检查是否存在冲突 这里有冲突出现 第二步 --> 如果存在冲突 ...

  4. numpy初识 old

    一.创建ndarrary 1.使用np.arrary()创建 1).一维数组 import numpy as np np.array([1, 2, 3, 4]) 2).二维数组 np.array([[ ...

  5. python 线程信号量

    线程信号量和进程信号量相似 # 线程信号量 import time from threading import Semaphore from threading import Thread def t ...

  6. vwmare 十月第 1 弹

    step one 不管 是 ubuntu 还是 win vm tools 都是需要在虚拟的系统里面的去安装的. 这一点是相同的.

  7. Ninject 初步 -Getting Started with Ninject 精通ASP-NET-MVC-5-弗瑞曼 Listing 6-10

  8. Java程序员学习Go指南(二)

    摘抄:https://www.luozhiyun.com/archives/211 Go中的结构体 构建结构体 如下: type AnimalCategory struct { kingdom str ...

  9. kafka for centos7

    https://blog.csdn.net/wqh8522/article/details/79163467

  10. Dubbo如何支持本地调用?injvm方式解析

    Dubbo是一个远程调用的框架,对于一个服务提供者,暴露了一个接口供外部消费者调用,那么对于提供者自己是否可以调用这个接口,需要什么特殊处理吗? 这篇文章就分享下Dubbo关于本地调用的实现机制,以及 ...