OMF COMDAT

Тема в разделе "WASM.BEGINNERS", создана пользователем Anatoly, 5 июн 2008.

  1. Anatoly

    Anatoly New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    4
    Всем привет!

    Кто-нибудь подскажет в каких случаях язык С генерирует COMDAT записи в объектном файле, и для чего сам COMDAT был введен. Помогите, а то я уже устал ковырятся бестолку.
     
  2. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Anatoly
    А вам зачем? Хотите понять как их юзает линкер? Ковыряйте исходники линкера. Поглядите на owl и orl в openwatcom сорцовой дистрибуции (и wl тоже).
     
  3. Anatoly

    Anatoly New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    4
    Это конечно благородно. Сейчас тем и занимаюсь. Создал эти записи и подсовываю линкеру, смотрю че он делать будет. Другого пути нет. Только не надо забывать что это времени много требует, а мы 1000 лет не живем.
    По поводу зачем надо : очень просто, я занимаюсь написанием ОС, две написал, теперь для третьей хочу сделать инструмент, так сказать, который будет компоновать для моей ОС. А вообще я пишу пока конвертер в MFF(свой формат, делаю под себя, как будет мне с объектником работать удобно) из OMF. Далее из MFF будет компоноваться для моей ОС. Только не говорите мне что лутше надо было взять COFF, теперь знаю что надо было, мол по проще он, по проще, но вопервых я уже начал и бросать не хочу, а во вторых в COFF тоже есть comdat и много других прелестей. Короче проблемы это не решает, хочу разобраться и точка. Желающие могут помочь. Им за это большое спс. И потом вместо того, чтобы исследовать линкер, проще узнать для чего COMDAT был введен, и многое будет понятно, не все конечно, но основная мысль будет известна.
     
  4. Anatoly

    Anatoly New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    4
    Да и кстати, или люди поскажите где капать, _basmp_ спс, но желательно по больше, в оригинале не очень то на этому тему разговорчивы, про FIXUPP дочитывал вообще не из официальной доки.
     
  5. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Anatoly
    Не знаю. Я разбирал когда-то это именно читая сорцы по овл (обжект врайт либ), орл (обжект рид либ) и вл (ватком линкер). Кроме того заставил вл делать мне мой формат из любых омф, софф, ельф объектников/либов по заданым правилам, просто поправив выходной форматер вл (там относительно не сложно). Чего и вам желаю и о чем намекаю уже 3-ий раз. (ведь это вы об омф 2-ю неделю рассрашиваете?)
     
  6. Anatoly

    Anatoly New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    4
    Нет сегодня первый раз. Вообще сижи подсовываю, интересные вещи в голову приходить начинают, первое - они не дописывают просто невероятно много, хотя просто они бы расписали полностью что делает линкер, и все вопросы отпадут сами собой. По поводу взять готовое и подправить, мысль хорошая, но я уже пол формата проштудировал, и пол конвертера написал, бросать не хочу. (Не ищут русские легких путей!!!). Кстати lazy extern, weak extern и strong extern что это такое? Как я понял что strong extern это тот екстернал, которому нашлось соответствие, так? а остальные два что? Есть конечно еще где прочесть, вообщем я так заранее спрашиваю.
     
  7. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    weak extern - указатель заменяется нулём если искомый символ не найден.
    lazy extern - ресолвится при первом вызове (аналогично delayed imports в win32). Обычно делают указатель на стаб, который в рантайме находит нужный символ и патчит указатель в памяти чтобы последующие вызовы шли напрямую.