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

相关推荐
二二牧人2 天前
GNU源码下载
gnu
再遇当年5 天前
因为研究平台arm,RK3588交叉编译误把我笔记本X86平台的/x86_64-linux-gnu文件删除,导致联想拯救者笔记本中的ubuntu系统损坏
linux·arm开发·ros·gnu·交叉编译·x86
liuzhilongDBA7 天前
从collation mismatch异常到其原理
数据库·version·glibc·postgres·collation
vortex58 天前
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2:Linux 动态链接的核心引擎
linux·gnu
CSDN_RTKLIB25 天前
【GNU、GCC、g++、MinGW、MSVC】上
c++·gnu
Mr_Dwj1 个月前
【运维】GNU/Linux 入门笔记
linux·运维·gnu
万象.1 个月前
GNU汇编语法和Cortex-A7常用汇编指令
服务器·汇编·gnu
CiLerLinux2 个月前
第一章 FreeRTOS简介
单片机·嵌入式硬件·物联网·gnu
序属秋秋秋2 个月前
《Linux系统编程之入门基础》【Linux的前世今生】
linux·运维·服务器·开源·unix·gnu
华强笔记3 个月前
KGDB(Kernel GNU Debugger)工具使用方法详解
网络·安全·gnu