Use of $Super$ $  and$Sub$ $to patch symbol definitions

2023-05-16

在无法修改现有符号的情况下,可以使用特殊模式。

现有符号无法修改,例如,如果它位于外部库或ROM代码中。 在这种情况下,您可以使用$Super$$ 和$Sub$$模式来修补现有符号。

修补函数foo()的定义:

$Super$$foo
标识原始未修补的函数foo()。 用它来直接调用原始函数。
$Sub$$foo
标识调用的新函数而不是原始函数foo()。 用它来添加在原始功能之前或之后处理。

注意
$Super$$$Sub$$机制仅适用于静态链接时,$Super$$引用不能导入或导出到动态符号表中。


以下示例显示如何使用$Super$$$Sub$$插入对函数的调用
在调用遗留函数foo()之前的ExtraFunc()。

extern void ExtraFunc(void); extern void $Super$$foo(void):
/* this function is called instead of the original foo() */
void $Sub$$foo(void)
{
 ExtraFunc(); /* does some extra setup work */
 $Super$$foo(); /* calls the original foo() function */
 /* To avoid calling the original foo() function
 * omit the $Super$$foo(); function call.
 */
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Use of $Super$ $  and$Sub$ $to patch symbol definitions 的相关文章

  • 堆叠特征中 super 的含义取决于调用站点?

    我无法用语言对此进行很好的描述 所以 请看这个例子 trait Base def foo Base trait One extends Base override def foo One lt super foo trait Two ext
  • 在 Objective C 类别中使用 Super?

    我想重写 Objective C 类中的一个方法 但我没有源代码 我已经研究过了 看来类别应该允许我这样做 但我想在我的新方法中使用旧方法的结果 使用 super 来获取旧方法的结果 每当我尝试这个时 我的方法都会被调用 但 超级 为零 知
  • java子类的私有final字段可以在超级构造函数完成之前初始化吗?

    我有一对像这样的课程 public abstract class Class1 public Class1 function2 protected abstract void function2 public class Class2 im
  • 为什么补丁找不到这个文件?

    我想对 u boot 源代码应用补丁 但是 Linux 不允许我这么做 我拥有的 reg ubuntu NextGen trunk FW thirdparty u boot patch p1 lt u boot u boot 2013 01
  • PATCH/PUT 不接受多部分/表单数据文件上传?

    知道为什么 PATCH 和 PUT 不接受多部分 表单数据文件上传吗 当我跑步时var dump FILES 它输出array 0 有什么想法为什么会发生这种情况吗 如果我发布文件 它工作正常 以下是我正在运行的请求的示例 提前致谢 PUT
  • 用“/”字符修补 kubernetes 标签

    我有以下代码 https stackoverflow com questions 57310483 whats the shortest way to add a label to a pod using the kubernetes go
  • super() 和显式 super(Cl,self) (带有 __slots__ 和 attrs)有什么区别

    我正在使用attrspython 包 结合继承和槽 我想从派生方法中调用父类的方法 该问题演示如下 import attr attr s slots True class Base def meth self print hello att
  • 当 super() 被调用时,元类如何与 MRO 列表一起工作?

    我对以下代码示例感到非常困惑 class Meta 1 type def call cls a kw line 1 print entering Meta 1 call print cls line 4 print cls mro line
  • 当使用 svn cp 或 svn mv 时,如何使 svn diff 生成补丁将应用的文件?

    场景是 svn cp 或 mv 某些文件 修改该文件 svn diff gt 我的补丁 在其他机器上 相同的工作副本 但没有更改 尝试应用我的补丁 失败 gt 尝试修改不存在的文件 在这种情况下 如何使 svn diff 生成适用于补丁的补
  • PyQt4 使用 __init__ 的不同方式

    所以 我正在尝试使用 PyQt4 从基本的 Python 转向一些 GUI 编程 我正在看几本不同的书籍和教程 它们似乎都有稍微不同的启动类定义的方式 一个教程是这样开始课程的 class Example QtGui QDialog def
  • 单元测试覆盖调用 super() 的方法

    我试图找出为重写方法编写单元测试的最佳方法 该方法调用 super 作为最后一步 基本上 我想在基类中使用参数之前对其进行处理 下面是一个方法的示例 Override public JobExecution run Job job JobP
  • “git format-patch”和“git diff”有什么区别?

    我没有看到 git format patch 和 git diff 的输出有什么区别 有什么区别吗 我是否能够使用 git diff 生成补丁 然后使用 git apply 应用它 我的问题是我已将更改添加到索引中 但显然 git form
  • 如何将 git 补丁从一个存储库应用到另一个存储库?

    我有两个存储库 一个是库的主存储库 另一个是使用该库的项目 如果我对从属项目中进行修复 我想要一种简单的方法来将该补丁应用回上游 该文件在每个存储库中的位置都不同 主要仓库 www playdar org static playdar js
  • 在已部署的 Grails 应用程序上创建补丁的简单方法

    我在我的客户端服务器计算机上的 tomcat6 上部署了 grails 应用程序 但该应用程序仍然需要许多修复 因此客户端计算机上发现的每个错误或缺少功能 我创建一个补丁并通过 ftp 上的 tar gz 文件交付给客户端这将替换部署的文件
  • 如何在 Gradle 中应用补丁文件?

    我有一个 Gradle 构建脚本 可以成功构建我的项目并编译我需要的所有工件 然而 在某些情况下 我想让其他开发人员可以选择修补某些文件 例如 在其中一个档案中有一个 xml 文件 其中包含有关数据库挂钩的信息 一些开发人员使用其他版本 甚
  • 如何在 git 树的顶部应用补丁以防止重复?

    我正在为一个我认为很简单的问题寻求建议 并且通过创建一个小脚本确实可能很简单 但我认为应该已经有一种方法可以使用 git quilt stgit 来做到这一点 我不太擅长 git 这给我带来了一些问题 我的问题 我有一个 git 树 lin
  • 当直接从`object`继承时,我应该调用super().__init__()吗?

    由于这个问题是关于继承和super 让我们从编写一个类开始 这是一个代表一个人的简单日常类 class Person def init self name super init self name name 像每个好类一样 它在初始化自身之
  • Python super 和设置父类属性

    我在 Python super 以及继承和属性方面遇到了一个非常奇怪的问题 首先 代码 usr bin env python3 import pyglet import pygame class Sprite pyglet sprite S
  • 运行时静默更新应用程序

    我的应用程序最初将使用 Windows Installer 进行部署 我正在寻找的解决方案的主要特征包括 支持应用程序静默更新 运行 或自动重启 客户 易于维护和管理包装 过程 避免复杂的定制或 安装脚本 您对我如何实现这一目标有什么想法吗
  • 来自外部 .diff 文件的交互式补丁

    Linux 是否有命令或程序允许交互式地修补源代码 在屏幕上打印每个块并在将其应用到文件之前等待确认 就像是git add p 但是从另一个 diff 文件中进行更改 您始终可以在 shell ruby python 中编写脚本 逐行读取该

随机推荐

  • LDR和ADR

    转自 xff1a https www douban com note 331036776 ARM汇编有ldr指令以及ldr adr伪指令 xff0c 他门都可以将标号表达式作为操作数 xff0c 下面通过分析一段代码以及对应的反汇编结果来说
  • 在显示屏上显示的数字的方法

    在现实屏上显示的数字的时候经常需要对数据进行分解 xff0c 得到数据 的每一位再依次显示 xff0c 方法有很多种 xff0c 下面介绍经常用到的3种方法 第一种方法 xff1a 不断的利用取整运算与取余运算得到每一位 void disp
  • 可变参数列表的简单实现

    使用可变参数列表实现一个sum函数 include lt stdio h gt define AUPBND sizeof int 1 define ADNBND sizeof int 1 define bnd X bnd sizeof X
  • 函数指针实例

    include lt stdio h gt void fun1 void printf 34 I 96 m fun1 n 34 void fun2 void printf 34 I 96 m fun2 n 34 void fun3 void
  • makefile小试牛刀

    使用make编译两个 c文件 div span style font size 14px a c void fun1 void int main fun1 return 0 span div div span style font size
  • 线程,进程,程序的区别

    转载自 xff1a https mp weixin qq com s O6 cZ9t8aJUMyeb7TbcbTQ 任务是代码运行的一个映象 xff0c 从系统的角度看 xff0c 任务是竞争系统资源的最小运行单元 任务可以使用或等待CPU
  • ubuntu14.04 samba服务器安装配置

    Data 2016 12 19 Author cjh Theme samba install andconfiguration 在介绍如何安装配置samba之前 xff0c 先简单介绍linux中两个命令的区别分别是update和upgra
  • 在数组中进行图形绘制

    include lt stdio h gt define k 2 43 1 define 2 define s 0 static unsigned short stop 61 s k k k k k k k s k k k k k k k
  • socket函数

    转自 xff1a http blog csdn net guoping16 article details 6584382 1 基本套接字函数 xff08 1 xff09 socket函数原型 socket 建立一个socket文件描述符
  • 进程与线程

    第一章 xff1a 计算机系统漫游 进程 xff1a 进程是操作系统对一个正在运行的程序的一种抽象 xff0c 一个系统可以同时运行多个进程 xff0c 看上去是CPU并发的执行多个程序 xff0c 实际上是通过进程切换来实现的 xff0c
  • GDI GDI+ 的区别

    转载自 xff1a http www cnblogs com lidabo p 3701252 html GDI 43 是GDI的下一个版本 xff0c 它进行了很好的改进 xff0c 并且易用性更好 GDI的一个好处就是你不必知道任何关于
  • GDI GDI+ 的区别

    转载自 xff1a http www cnblogs com lidabo p 3701252 html GDI 43 是GDI的下一个版本 xff0c 它进行了很好的改进 xff0c 并且易用性更好 GDI的一个好处就是你不必知道任何关于
  • 使用的DockPanel的心得

    使用这个控件的时候后一定要先Show this DockPlan1 才能使用DockTo this DockPlan1 DockStyle Bottom 固定位置 xff0c 否则会抛出异常
  • C#使用双缓冲解决绘图闪屏的问题

    最近在工作需要使用C 绘制图形 xff0c 看了一下绘制的函数觉得很简单就开始着手工作了 xff0c 但是在实际应用的时候发现鼠标进行绘制的时候会闪屏 xff0c 原因是图元重绘的时间不一致 xff0c 百度一下有很多更详细的 xff0c
  • 关于捕获键盘信息的processDialogkey方法

    转载自 xff1a http blog csdn net lucifinil s article details 6318189 在一些控件里的keydown方法 xff0c 没有办法捕获所有的按键消息 比如自己写一个窗体控件库 xff0c
  • C#泛型委托

    因为项目原因最近要使用C 进行编程 xff0c 于是每天现学现卖一点一点的进行开发 之前很长的时间一直使用C和C 43 43 进行编程 xff0c 于是转到C 一开始开始不是特别适应的 xff0c 特别是C 这门语言没有了指针 xff0c
  • 基于windows的Ubuntu双系统安装

    Data 2016 12 19 Author cjh Theme Ubuntu dual system installation 前期准备 1 Ubuntu相关版本镜像ios 2 UltraISO 用于制作U盘启动盘 3 EasyBCD 2
  • 汇编文件.S和.s的区别

    c C 原始程序 xff1b 预处理 编译 汇编 C C 43 43 原始程序 xff1b 预处理 编译 汇编 ccC 43 43 原始程序 xff1b 预处理 编译 汇编 cxx C 43 43 原始程序 xff1b 预处理 编译 汇编
  • 串口网口数据帧解析(支持连包、断传、错误数据过滤)

    本文转载自 xff1a https blog csdn net hwb 1988 article details 45872379 嵌入式系统中 xff0c 关于数据接受部分确实思考了很多 xff0c 下面总结下个人经验 关于串口传输 xf
  • Use of $Super$ $  and$Sub$ $to patch symbol definitions

    在无法修改现有符号的情况下 xff0c 可以使用特殊模式 现有符号无法修改 xff0c 例如 xff0c 如果它位于外部库或ROM代码中 在这种情况下 xff0c 您可以使用 Super 和 Sub 模式来修补现有符号 修补函数foo xf