Я использую компилятор 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 реализует расширение GNU "__ attribute __"для C, поэтому после компиляции 'secrect' строка должна быть в новом разделе сборки.Но когда я использую утилиту dumpbin для файла .exe, он говорит мне, что у меня есть только два раздела: .text и .data ...
Summary
1000 .data
1000 .text
У меня возникла эта проблема, даже когда я используюсуществующий раздел, такой как «.text», все еще «секретный», хранящийся в «.data»
, даже с неинициализированными целыми числами, у меня нет раздела «.bss», только «.text» и «.data».
примечание: я получил последнюю версию tcc.
, пожалуйста, помогите!