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