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文件,在链接时才会报错。

相关推荐
独小乐1 天前
007.GNU C内联汇编杂谈|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·汇编·单片机·嵌入式硬件·arm·gnu
jiayi_19991 天前
[bug] unsupported GNU version! gcc versions later than 12 are not supported!
服务器·bug·gnu
RisunJan21 天前
Linux命令-make(GNU的工程化编译工具)
linux·运维·gnu
让学习成为一种生活方式22 天前
GNU Parallel 安装与使用--生信工具078
服务器·gnu
UhMITKJvJkro2 个月前
基于SUMO实现备选路径推荐以及实时动态道路信息获取,这个小车每到一个路口、就返回这个路口的信...
gnu
wangjialelele2 个月前
Linux信号处理、中断、与页表映射
linux·运维·ubuntu·centos·信号处理·gnu
赌博羊2 个月前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
linux·运维·gnu
lGSrsEpqUxi2 个月前
聊聊独特的母线电流估算算法模型
gnu
勾股导航2 个月前
Windows安装GPU环境
人工智能·windows·gnu
dingdingfish2 个月前
GNU Parallel 学习 - 第1章:How to read this book
bash·shell·gnu·parallel