-flto标记带有gcc 5.1.0的segfault

时间:2018-07-23 16:28:56

标签: c gcc segmentation-fault memset

我在Windows上使用gcc 5.1.0。

调用memset时,我会收到SEGFAULT,这在启用-flto标志(链接时间优化)时不会发生。

/*#### function.h ####*/
void secure_bzero (void *s,size_t size);

/*##### function.c ####*/
/* Securely erase size bytes from s */
void WEAK __attribute__((noinline)) secure_bzero (void *s,size_t size) { 
     memset(s,0,size);
}

当我想在CodeBlocks中调试应用程序时,我注意到了分段错误。我启用了调试符号标志(-g),并警告说-flto与-g的组合是“目前处于实验阶段,预计会产生错误的结果。”

我不明白分段错误是怎么产生的。

感谢Eugene Sh。提示完整示例:

#include "function.h"
int main(){
    unsigned char seed[32];
    for (int i=0; i<32; i++){
        seed[i] = i;
    }
    secure_bzero(seed,sizeof(seed));
    return 1;
}

0 个答案:

没有答案