我正在使用 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 的最新版本。
请帮忙!