System.map】的更多相关文章

转自:http://blog.csdn.net/david104/article/details/7194185 当运行GNU链接器gld(ld)时若使用了"-M"选项,或者使用nm命令,则会在标准输出设备(通常是屏幕)上打印出链接映像(link map)信息,即是指由链接程序产生的目标程序内存地址映像信息.其中列出了程序段装入到内存中的位置信息.具体来讲有如下信息: 目标文件及符号信息映射到内存中的位置. 公共符号如何放置. 链接中包含的所有文件成员及其引用的符号. 通常我们会把发送…
#!/bin/bash # auto make System.map to C header file # 说明: # 该脚本主要是将Linux内核生成的System.map文件中的符号.地址存入结构体中, # 目前认为也许可以在内核驱动中直接调用对应的函数.以前在学习裸板开发中就有 # 使用Uboot中提供的printf来写程序的先例,那么这里应该也是可以的,不过这里没 # 有什么实用性,因为5W个函数,但这个结构体就要用掉进200kByte空间. # # -- 深圳 南山平山村 曾剑锋 ];…
system.map内容格式为:线性地址类型符号 具体内容如下: 00100000 A phys_startup_32 c0100000 T startup_32 c0100000 A _text                             注:表示内核代码第一个字节的地址 c01000c6 t checkCPUtype c0100147 t is486 ... c02f97b0 T __kprobes_text_end c02f9abe t iret_exc c02fa1af A…
有关System.map文件的信息好象很缺乏.其实它一点也不神秘,并且在整个事情当中它并不象看上去那么得重要.但是由于缺乏必要的文档说明,使其显得比较神秘.它就象耳垂,我们每个人都有,但却不知道是干什么用的.本网页就是用来说明这个问题的. 注意,我并不会是百分之一百正确的.例如,一个系统很可能没有/proc文件系统支持,但是大多数系统肯定有.这里我假定你是"随大流的",并有一个典型配置的系统. 某些有关内核出错(oops)的阐述来自于Alessandro Rubini的"Li…
一.vmlinuz  vmlinuz是可引导的.压缩的内核.“vm”代表“Virtual Memory”.Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制.Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”.vmlinuz是可执行 的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接,比如图中是vmlinuz-2.4.7-10的软链接.    vmlinuz的建立有两种方式.一是编译内核时通过“make zImage”创建,然后通过:  “cp…
有关System.map文件的信息好象很缺乏.其实它一点也不神秘,并且在整个事情当中它并不象看上去那么得重要.但是由于缺乏必要的文档说明,使其显得比较神秘.它就象耳垂,我们每个人都有,但却不知道是干什么用的.本网页就是用来说明这个问题的. 注意,我并不会是百分之一百正确的.例如,一个系统很可能没有/proc文件系统支持,但是大多数系统肯定有.这里我假定你是“随大流的”,并有一个典型配置的系统. 某些有关内核出错(oops)的阐述来自于Alessandro Rubini的“Linux设备驱动程序”…
System.map是一个特定内核的内核符号表.它是你当前运行的内核的System.map的链接. 内核符号表是怎么创建的呢? System.map是由“nm vmlinux”产生并且不相关的符号被滤出.对于本文中的例子,编译内核时,System.map创建在/usr/src/linux-2.4/System.map.像下面这样: nm /boot/vmlinux-2.4.7-10 > System.map 下面几行来自/usr/src/linux-2.4/Makefile: nm vmlinu…
转自:http://blog.csdn.net/ysbj123/article/details/51233618 当运行GNU链接器gld(ld)时若使用了"-M"选项,或者使用nm命令,则会在标准输出设备(通常是屏幕)上打印出链接映像(link map)信息,即是指由链接程序产生的目标程序内存地址映像信息.其中列出了程序段装入到内存中的位置信息.具体来讲有如下信息: 目标文件及符号信息映射到内存中的位置. 公共符号如何放置. 链接中包含的所有文件成员及其引用的符号. 通常我们会把发送…
Registration system 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 A new e-mail service "Berlandesk" is going to be opened in Berland in the near future. The site administration wants to launch their project as soon as possible, that's why they ask yo…
目录 . 引言 . 页表 . 结构化内存管理 . 物理内存的管理 . SLAB分配器 . 处理器高速缓存和TLB控制 . 内存管理的概念 . 内存覆盖与内存交换 . 内存连续分配管理方式 . 内存非连续分配管理方式 . 虚拟内存的概念.特征及其实现 . 请求分页管理方式实现虚拟内存 . 页面置换算法 . 页面分配策略 . 页面抖动和工作集 . 缺页异常的处理 . 堆与内存管理 0. 引言 有两种类型的计算机,分别以不同的方法管理物理内存 . UMA计算机(一致内存访问 uniform memor…
0   echo g > /proc/sysrq-trigger   怎么让系统停下来,进入进入KDB循环? 1   需要简单了解下:Linux Magic System Request 2   在sysrq数组中我并没有发现注册”g”对应调用的函数,可是调试的时候确实生效了   static struct sysrq_key_op *sysrq_key_table[36] = {  &sysrq_loglevel_op,  /* 0 */  &sysrq_loglevel_op, …
1. 引言:这篇文章提供了一种增加自定义系统调用或劫持原有的系统调用的实现方法,只针对 linux 系统.主要思路是获取系统调用表 sys_call_table 地址,然后用新函数地址覆盖系统调用表某个元素的值,最终代码可以以modules的模式使用,也可以直接编译进内核使用. 2. 获取系统调用表基地址的方法: cat System.map | grep "sys_call_table" 3. 获取了系统调用表基地址后,如果直接修改这个表,会报错unable to handle ke…
Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 C 语言重写了 Unix 系统后,大量的Unix衍生版本开始出现,许多公司把 unix 移植到新的机型上,开发者们都按照自己的方式不断增强系统的功能.Unix 系统设计简洁并在发布时提供源代码,所以许多团体都对其进行了进一步的开发.加州大学伯克利分校便是其中影响最大的一个.在BSD基础上,很多厂商也…
加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optimal /dev/sda (parted)print     命令查看是否有除了sda其他分区 如果有则删除 (parted)rm 2(2为分区的编号,有其他的也需要一并删除) (parted)mklabel gpt  此操作会清除掉所有分区上的所有数据 如果是MBR 则使用命令mklabel msdo…
第一次写技术博客,还有些兴奋呢.我是CrazyCatJack,大家可以叫我CCJ或者疯猫.我即将成为一名嵌入式Linux的驱动工程师,现在还是一枚大四狗,呼呼~大学期间做了一些项目和比赛,都是基于32位的MCU(例如STM32.Freescale K60),这些呢都是根据网上的视频,PDF自学的.现在想更进一步,学习一下嵌入式Linux.UCOS-II等嵌入式系统.因为给板子加系统是一个必然趋势,控制会越来越复杂,内容也越来越多的.有一个系统统筹管理是非常棒的选择.好了,废话少说,今天开始我的第…
make jCPU_NUM 以CPU_NUM数量同时进行编译CPU_NUM = 当前PC的处理器数量*处理器的核心数 从上电开始1.系统上电,执行固化在IROM中的代码,目的初始化基本的系统功能,已经加载BL1代码2.BL1代码继续进行初始化,初始化DRAM控制器(400000000-80000000可用)3.uboot.bin开始在0x43E00000 地址位置开始执行 common(uboot命令)556 U_BOOT_CMD( ) 这个宏函数 设置了当前命令执行以及需要执行函数 do_mo…
源码阅读方法1.源码目录结构2.配置(支持当前使用的硬件)3.编译(Makefile)4.启动流程 工具使用1.在同一文件查找 shitf+8 N n进行上下查找 2.在工程目录中 ctags uboot版本选择:2013 uboot 2010版本前 只能识别zImage 文件 uboot 2013 能够识别uImage文件 选用原则:1.适用于当前开发板2.资料问题 uboot目录结构平台相关arch(架构) board(板级结构) 平台无关common(uboot命令) disk(磁盘) d…
本节内容概要描述了Linux内核从开机引导到系统正常运行过程中对堆栈的使用方式.这部分内容的说明与内核代码关系比较密切,可以先跳过.在开始阅读相应代码时再回来仔细研究. Linux 0.12系统中共使用了4种堆栈.第1种是系统引导初始化时临时使用的堆栈:第2种是进入保护模式之后提供内核程序初始化使用的堆栈,位于内核代码地址空间固定位置处.该堆栈也是后来任务0使用的用户态堆栈:第3种是每个任务通过系统调用,执行内核程序时使用的堆栈,我们称之为任务的内核态堆栈.每个任务都有自己独立的内核态堆栈:第4…
使用以下命令查看: ps -aux | sort -k4,4n ps auxw --sort=rss ps auxw --sort=%cpu linux 下的ps命令 %CPU 进程的cpu占用率 %MEM 进程的内存占用率 VSZ 进程所使用的虚存的大小 RSS 进程使用的驻留集大小或者是实际内存的大小 TTY 与进程关联的终端(tty) STAT 检查的状态:进程状态使用字符表示的,如R(running正在运行或准备运行).S(sleeping睡眠).I(idle空闲).Z (僵死).D(不…
1. 准备工作 确认内核及版本信息 [root@hostname ~]# uname -r 2.6.32-220.el6.x86_64 [root@hostname ~]# cat /etc/centos-release CentOS release 6.2 (Final) 安装软件 编译安装新内核,依赖于开发环境和开发库 # yum grouplist //查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库: # yum groupinstall "Developme…
方法1: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # .  /etc/profile 注意: . 和 /etc/profile 有空格 方法2: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # source /etc/profile 附:Linux中source命令的用法 source命令: source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。 用法:…
第十八章调试 18.1 准备开始          需要准备的东西: l  一个bug:大部分bug通常都不是行为可靠而且定义明确的 l  一个藏匿bug的内核版本:找出bug首先出现的版本 l  相关内核代码的知识和运气 最好能让bug重现,有一些bug存在而且有人没办法让他重现,因为内核与用户程序和硬件间的交互很微妙. 18.2内核中的bug 可以有无数种原因产生,表象也变化多端.代码中的错误往往引发一系列连锁反应,目击者才看到bug. 18.3通过打印来调试 内核提供了打印函数printk…
了解了LFS的内容后,至于内核的更新就一目了然了 http://www.cnblogs.com/2018/p/3979305.html http://www.cnblogs.com/2018/p/3981399.html 不过有些资料LFS上也没有,如下是概要的汇总了相关的资料 内核更新 http://jingyan.baidu.com/article/08b6a591f187ff14a809228a.html 1.内核版本显示命令uname  -r       (uname查看操作系统信息,r…
八. 构建LFS系统 1. 准备虚拟内核文件系统 内核会挂载几个文件系统用于自己和用户空间程序交换信息.这些文件系统是虚拟的,并不占用实际磁盘空间, 它们的内容会放在内存里. mkdir -pv $LFS/{dev,proc,sys,run} mknod -m 600 $LFS/dev/console c 5 1 mknod -m 666 $LFS/dev/null c 1 3 mount -v --bind /dev $LFS/dev mount -vt devpts devpts $LFS/…
imx6开启启动之后,运行板子上的ROM程序.ROM确定启动的设备,进行一些初始化,然后读取IVT,进行寄存器初始化,最后运行uboot/cpu/arm_cortexa8/start.S中的_start函数. 参考 http://blog.csdn.net/njuitjf/article/details/20563867 http://blog.csdn.net/sz_zh/article/details/7930341 截取IMX6SDLRM.pdf部分内容 8.6.1 Image Vecto…
直接输入ps后可以看到如下信息: # ps ps USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME root      1     0     276    188   c0099f1c 000086e8 S /init root      2     0     0      0     c004df64 00000000 S kthreadd root      3     2     0      0     c003…
linux内核的linux-3.6.5\Documentation\kbuild\makefiles.txt Linux Kernel Makefiles This document describes the Linux kernel Makefiles. === Table of Contents === Overview === Who does what === The kbuild files --- 3.1 Goal definitions --- 3.2 Built-in obje…
关于linux内核源码 两个很关键的目录,一个是arch(architecture),支持不同cpu体系架构的源代码,其中最重要的就是x86(一般把x86留下,其他的目录删掉),另一个是init(其中的main.c是整个linux内核启动的起点,不过这里面不是main()函数,而是一个叫start_kernel的函数),linux内核的核心代码在kernel目录中.上一节中的命令make allnoconfig就是关闭所有的可选项,目的是可以让之后的编译更快的完成. 实验分析 由于这一周自己的电…
<Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一些资深的特殊功能 健壮性 在任何时候内核的任何地方都能调用printk()函数,只有在终端还未初始化的时候不能调用. 在中断上下文和进程上下文中被调用 在任何持有锁时被调用 在多处理器上同时被调用,并且不必使用锁. 解决办法是提供一个变体函数early _ printk(),但这种办法在某些硬件体系结构上无法…
公板芯片型号:MCIMX6L8DVN10AB 我的板子芯片型号:MCIMX6L2EVN10AB no GPU ,no EPDC 调板子时一定要注意,首先要搞清楚硬件芯片的具体差异,然后去nxp的官网找区别,网址如下:https://community.nxp.com/search.jspa?q=imx6sl%20no%20gpu%20no%20epdc 一直认为gpu,epdc是内核起来一定时间后才初始化的,这是错误的. 之前程序打印信息:Uncompressing Linux...  done…