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

相关推荐
jimy15 小时前
C语言历史版本和gnu扩展版本
c语言·算法·gnu
17岁boy想当攻城狮5 天前
GlibC 在线程里引发use-after-free退出时才崩溃原因与分析
c·glibc
✎ ﹏梦醒͜ღ҉繁华落℘6 天前
Makefile(四)--gcc 和gdb
c语言·gnu·gcc和gdb
无巧不成书02187 天前
Rust开发环境完全指南:Windows/Linux双平台配置与实战
linux·windows·rust·gnu·msvc·mingw-w64安装·镜像配置
✎ ﹏梦醒͜ღ҉繁华落℘18 天前
Makefile -GNU和MakeFile关系(二)
服务器·gnu
独小乐19 天前
012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇
c语言·汇编·笔记·单片机·嵌入式硬件·arm·gnu
独小乐21 天前
007.GNU C内联汇编杂谈|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·汇编·单片机·嵌入式硬件·arm·gnu
jiayi_199921 天前
[bug] unsupported GNU version! gcc versions later than 12 are not supported!
服务器·bug·gnu
RisunJan1 个月前
Linux命令-make(GNU的工程化编译工具)
linux·运维·gnu
让学习成为一种生活方式1 个月前
GNU Parallel 安装与使用--生信工具078
服务器·gnu