$Super$$ and $Sub$$

Arm Compiler for Embedded Reference Guide中有介绍,$Super$$ and $Sub$$是Armlink提供的wrapper symbol,可以使用它们在不修改原symbol定义的情况下,扩展(patch)原symbol的功能。
可能适用的场景:

  • 函数定义在库中。
  • 函数固化在ROM中。

用法示例:
已有函数foo(),如果需要在不修改foo()的前提下,在foo()前插入新的执行代码ExtraFunc(),则可借助$Super$$ and $Sub$$来实现:

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.
                   */
}

参考:
Use of Super$$ andSub$$ to patch symbol definitions

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容