tcc编译器__attribute __(section)不会将数据放在提到的部分中

时间:2018-10-08 09:06:05

标签: c attributes tcc

我正在使用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扩展,因此在编译后,“ secret”字符串应位于新的汇编节中。 但是,当我在.exe文件上使用dumpbin实用程序时,它告诉我只有两个部分:.text和.data ...

  Summary

    1000 .data
    1000 .text

即使我使用的是“ .text”之类的现有节,我仍然遇到此问题,但“秘密”仍存储在“ .data”中

即使没有非整数,我也没有“ .bss”部分,只有“ .text”和“ .data”。

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

请帮助!

0 个答案:

没有答案