Gnu: binutils: ld: .gnu.warning.链接时的主动警告 glibc

这个是一个gnu的extension,glibc会使用这个功能,标记即将被淘汰的符号,产生链接时的警告,比如:

cpp 复制代码
/* When a reference to SYMBOL is encountered, the linker will emit a
   warning message MSG.  */
/* We want the .gnu.warning.SYMBOL section to be unallocated.  */
#define __make_section_unallocated(section_string)	\
  asm (".section " section_string "\n\t.previous");
  
#define link_warning(symbol, msg) \
  __make_section_unallocated (".gnu.warning." #symbol) \
  static const char __evoke_link_warning_##symbol[]	\
    __attribute__ ((used, section (".gnu.warning." #symbol __sec_comment))) \
    = msg;
    
link_warning (pthread_attr_setstackaddr,
              "the use of `pthread_attr_setstackaddr' is deprecated, use `pthread_attr_setstack'")

效果

cpp 复制代码
/tmp/ccVxpFwZ.o: In function `main':
warning1.c:(.text+0xe): warning: the use of `pthread_attr_setstackaddr' is deprecated, use `pthread_attr_setstack'

需要注意,如果函数和main函数是再一个编译单元,不会trigger这个warning。需要变成成单独的o/so文件,在链接时才会报错。

相关推荐
GDAL4 小时前
全面讲解GNU:从起源到应用
服务器·云计算·gnu
GDAL4 小时前
GNU力量注入Windows:打造高效跨平台开发新纪元
服务器·windows·gnu
异构算力老群群2 天前
从零到一:构建你的第一个AI项目(实战教程)
人工智能·学习·bash·gnu
看星星的派大星9 天前
GNU风格代码编译(27)
linux·服务器·gnu
看星星的派大星10 天前
汇编伪指令 GNU 风格(24)
linux·服务器·汇编·gnu
夜流冰16 天前
GNU/Linux - 进程关联的控制终端
linux·gnu
xky1306102chenhong16 天前
GNU的编译工具链
gnu
千千道18 天前
GNU 汇编语法基础
linux·汇编·gnu
Bia020 天前
Linux实现异步IO的方法:epoll,posix aio,libaio,io_uring
linux·网络·数据库·gnu