EXPORT |__$ArrayPad$| [ DATA ] - что это за радость от CL

Тема в разделе "WASM.ASSEMBLER", создана пользователем Hexxx, 15 июл 2008.

  1. Hexxx

    Hexxx New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2008
    Сообщения:
    10
    Делаю следующую операцию:
    Компилю сишный код в VS с генерацией асм сорцов, дальше полученый асм сорец пытаюсь собрать в MASM. Не компилится изза наличия строк:
    EXPORT |__$ArrayPad$| [ DATA ]
    Говорит - неизвестный символ.

    Что это за ArrayPad? Как сделать чтобы CL его не генерил, или как сделать чтобы ASM его хавал?
     
  2. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    А обращение к нему в коде идёт?
     
  3. Hexxx

    Hexxx New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2008
    Сообщения:
    10
    нет. Оно обычно перед импортами стоит типа вот так:
    Код (Text):
    1. EXPORT  |__$ArrayPad$| [ DATA ]
    2.     EXPORT  |?WndProc@@YAJPAUHWND__@@IIJ@Z|     ; WndProc
    3.     IMPORT  |SHCreateMenuBar|
    4.     IMPORT  |PostQuitMessage|
    5.     IMPORT  |DestroyWindow|
    6.     IMPORT  |SHHandleWMActivate|
    7.     IMPORT  |EndPaint|
    8.     IMPORT  |BeginPaint|
    9.     IMPORT  |SHHandleWMSettingChange|
    10.     IMPORT  |SendMessageW|
    11.     IMPORT  |DefWindowProcW|
    12.     IMPORT  |__GSHandlerCheck|
    13.     IMPORT  |__security_cookie|
    14.     IMPORT  |__security_check_cookie|
     
  4. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Тоже когда-то заинтересовало =)

    Инфа не проверенная, но насколько я понял, ArrayPad - константа, указывающая на сколько байт расширить стек для записи в него security cookie. На 32-битной платформе это должно быть всегда 4байтное значение, равное -4.

    Чтобы этот рантайм чек не производился, компелируй без опции /GS.
     
  5. Hexxx

    Hexxx New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2008
    Сообщения:
    10
    Все. Я нашел. Это вставляется когда включено "Buffer Security Checks". Если выключить, т.е. /GS- то эту хрень не вставляет.

    И все-таки, что это за макрос такой был? Имею в виду, как то можно было сделать чтобы MASM прохавал __$ArrayPad$ ? Типа там чо-то задефайнить, проинклюдить?

    И еще, нет ли способа заставить CL только генерить асм и не компилить obj? Чтобы время экономить.
     
  6. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Это не макрос. По идее определение должно быть в том же файле. Что-то вроде:
    __$ArrayPad$ = -4 ; size = 4

    Думаю, больше сэкономишь, если не будешь искать таких способов =))
    тем более что если уже сгенерился асм-листинг, то на запись объектника времени уйдет ничтожно мало.