структура объектных файлов - PullRequest
       50

структура объектных файлов

0 голосов
/ 12 сентября 2010

У меня есть некоторые проблемы со связыванием моей сборки. Я использую NASM для сборки, а затем связываю его с ld. Одна небольшая проблема заключается в том, что директива GLOBAL работает только в том случае, если я определяю раздел .data, который ... я полагаю, за этим стоит что-то разумное, но все же как это важно для экспорта символов? (я решил использовать coff это был наиболее схожий формат с тем, что получилось в g ++ с опцией -c). Основная проблема заключается в том, что даже после того, как мне удалось связать его, вызовы приводят к некоторому адресу, а функции там нет. Спасибо за ваше время на чтение, и если у вас есть какие-то советы или, может быть, ключевые слова, я должен поискать что-нибудь о ссылках и символах в Google, это было бы замечательно.

1 Ответ

1 голос
/ 12 сентября 2010

Я не использовал nasm в Windows, но, судя по выводу nasm -hf, я думаю, вам нужен формат win32, а не coff. Формат COFF является более старым форматом объектных файлов, формат которого PE-COFF (или просто «PE»), который теперь используется в Windows, является более новой версией.

Что касается того, почему вам нужно указать РАЗДЕЛ до того, как ваши директивы GLOBAL вступят в силу, я не вижу такого поведения. Возможно ли, что вы не объявляли свой GLOBAL до лейбла? Или, возможно, символ испускается, но не смог обеспечить правильную связь, например, если он был задуман как переменная данных, но в разделе .text было выделено место.

...