首页 > 解决方案 > 如何防止 gcc 将空函数编译到相同的地址

问题描述

我在代码中添加了两个跟踪点,并想使用 bpftrace uprobe 进行跟踪;

但编译后,符号表显示这两个函数具有相同的地址:

00000000062eada0 t log::tp_fill_aggre_log(unsigned long, unsigned long, long) [clone .isra.1]
00000000062eada0 t log::tp_submit_aggre_log(unsigned long, long, long, long, long) [clone .isra.2]

这是我的跟踪点函数定义:

__attribute__((noinline))                                                                                                         
static void tp_fill_aggre_log(uint64_t buffer_id, uint64_t log_id, int64_t data_size)                                             
{                                                                                                                                 
  asm("");                                                                                                                        
}                                                                                                                                 
// can trace:                                                                                                                     
//  buffer's data_size, log_cnt, delay from last_put to freeze                                                                    
__attribute__((noinline))                                                                                                         
static void tp_submit_aggre_log(uint64_t id, int64_t data_size,                                                                   
                                int64_t log_cnt, int64_t last_put_time,                                                           
                                int64_t freeze_time)                                                                              
{                                                                                                                                 
  asm("");                                                                                                                        
}         

我怎样才能防止 gcc 做这个优化?

标签: gcccompiler-optimization

解决方案


推荐阅读