компилятор tcc __attribute __ (section) не помещает данные в упомянутый раздел - PullRequest
0 голосов
/ 08 октября 2018

Я использую компилятор 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.

, пожалуйста, помогите!

...