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

相关推荐
漫步企鹅5 天前
【漏洞修复】Android 10 系统源码中的 glibc、curl、openssl、cups、zlib 更新到最新版本
android·glibc·openssl·curl·zlib·漏洞修复·cups
perseverance5212 天前
基于Arm GNU Toolchain编译生成的.elf转hex/bin文件格式方法
gnu
WIFI_BT_DEV1 个月前
Linux设备驱动开发-UART驱动
linux·arm开发·驱动开发·嵌入式硬件·硬件架构·信息与通信·gnu
WIFI_BT_DEV1 个月前
Linux设备驱动开发-中断
linux·c语言·arm开发·驱动开发·嵌入式硬件·硬件架构·gnu
wzhao1011 个月前
elf_loader:一个使用Rust编写的ELF加载器
linux·rust·gnu
Once_day2 个月前
GCC之编译(8)AR打包命令
ar·gnu·gcc
乔宕一2 个月前
在 vscode + cmake + GNU 工具链的基础上配置 JLINK
vscode·gnu·jlink
成都—大数据开发工程师—杨洋3 个月前
Tidb集群升级到8.5.0过程中服务器遇到的坑
服务器·数据库·python·tidb·glibc
LIKEYYLL3 个月前
GNU Octave:特性、使用案例、工具箱、环境与界面
服务器·gnu
凛冬将至__4 个月前
【GNU】gcc -g编译选项 -g0 -g1 -g2 -g3 -gdwarf
linux·gnu·gcc