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

相关推荐
wzhao1013 天前
Relink 0.15.1:一个 no_std 的 ELF 加载器/链接器
linux·rust·gnu
wzhao1014 天前
动态链接器(十一):线程局部存储
linux·rust·gnu
GanGanGanGan_12 天前
CentOS 7.9 glibc 2.17 源码编译升级到 glibc 2.31
linux·运维·centos·glibc
jimy121 天前
C语言历史版本和gnu扩展版本
c语言·算法·gnu
17岁boy想当攻城狮1 个月前
GlibC 在线程里引发use-after-free退出时才崩溃原因与分析
c·glibc
✎ ﹏梦醒͜ღ҉繁华落℘1 个月前
Makefile(四)--gcc 和gdb
c语言·gnu·gcc和gdb
无巧不成书02181 个月前
Rust开发环境完全指南:Windows/Linux双平台配置与实战
linux·windows·rust·gnu·msvc·mingw-w64安装·镜像配置
✎ ﹏梦醒͜ღ҉繁华落℘1 个月前
Makefile -GNU和MakeFile关系(二)
服务器·gnu
独小乐1 个月前
012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇
c语言·汇编·笔记·单片机·嵌入式硬件·arm·gnu
独小乐1 个月前
007.GNU C内联汇编杂谈|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·汇编·单片机·嵌入式硬件·arm·gnu