1

我正在使用 tcc 编译器编译以下代码:

#include <stdio.h>
#include <string.h>

void main()
{
    // intializing the secret code in the secret section.
    char* secret __attribute__ ((section(".secret")));
    secret = "myKey";

    // receive the user input.
    char* guess;    
    printf( "Enter your password\n");
    scanf("%s", guess);

    // detrmine success
    int result = strcmp(secret, guess);
    if(!result)
        printf( "Success\n" );
    else
        printf( "Wrong\n" );

}

根据 tcc 参考:https : //bellard.org/tcc/tcc-doc.html#linker 第 3.3 节,tcc 为 C 实现“__ 属性 __”GNU 扩展,因此编译后“secrect”字符串应该在一个新的装配部分。但是,当我在 .exe 文件上使用 dumpbin 实用程序时,它告诉我我只有两个部分:.text 和 .data ...

  Summary

    1000 .data
    1000 .text

即使我使用像“.text”这样的现有部分,我也遇到了这个问题,仍然是“.data”中存储的“秘密”

即使使用未初始化的整数,我也没有“.bss”部分,只有“.text”和“.data”。

注意:我得到了 tcc 的最新版本。

请帮忙!

4

0 回答 0