函数扩展属性
__attribute__,GCC可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。
共享库构造函数和析构函数
共享库在装载时执行初始化动作,在程序的main之前运行,后面的析构函数在程序结束之后或者调用exit之后。
void __attribute__((constructor)) init_function(void);
void __attribute__((destructor)) fini_function(void);
扩展: GCC提供一种优先级的策略:constructor(5),析构函数数字越小约优先,析构函数相反。
待慢慢扩展。。。
裸函数
__attribute__((naked))
对于这种函数,编译器不会生成任何函数入口代码和退出代码。这种函数一般应用在与操作系统内核相关的代码中,如中断处理函数、钩子函数等。
详细可见Linux pg打桩例子中代码。