порт SQLite 1.0

Discussing libraries simplifying applications development
  • barsuk

    Я про другое. Ставишь в опциях Assembly-Only Listing (/FA), правишь его и компилируешь masm: ml /c <file>

    Если такие заморочки c obj может сделать inc файл для загрузки pe dll в asm программах ?
  • > может сделать inc файл для загрузки pe dll в asm программах ?
    Ну тогда не inc (зачем же остальных обламывать), а динамическую COFF-библиотеку.

    ..bw
  • Serge
    Сделал так. Добавил в asm-файл таблицу экспорта, как положено. Действительно, результат гораздо компактнее, чем в VC. Однако, при попытке просмотреть obj-файл с помощью cobj вылетает ошибка "Memory request failed" (под эмулятором).
    Attachments
    sqlite.obj.7z (107.55 KiB)
    Downloaded 328 times
  • Я тогда не очень понял, как ты пытался скомпилять библиотеку
  • vectoroc
    DLL-библиотека в Колибри это COFF OBJ файл. Его я и пытался сделать. Для этого написал один с-файл, в который заинклюдил все с-файлы проекта. Получился 1 obj-файл.
  • barsuk

    Зачем в asm файл ? Всё на С.

    Code: Select all

    typedef struct
    {
      char *name;
      void *f;
    }export_t;
     
    char szCreatePixmap[]    = "CreatePixmap";
    char szDestroyPixmap[]   = "DestroyPixmap";
    
    export_t EXPORTS[] =
             {
               { szStart,           start },
               { szVersion,         (void*)0x00010001 },
    
               { szCreatePixmap,    CreatePixmap    },
               { szDestroyPixmap,   DestroyPixmap   },
               { NULL, NULL },
             }; 
    Я компилирую mingw. Там немного проще - можно прямо указать имя
    export_t EXPORTS[] __asm__("EXPORTS")
    Скачал объектник, попробую разобраться.

    Посмотрел. Там OMF. Надо компилировать ml /c /coff


    bw Наверное ты прав. Если несколько библиотек и перекрёстные ссылки одним инклюдом не обойдёшся. Хотя со стороны выглядит довольно идиотски.
  • Serge wrote:Зачем в asm файл ? Всё на С.
    VC++, увы, не умеет не ставить "_" перед экспортируемыми символами.
    Serge wrote:Посмотрел. Там OMF. Надо компилировать ml /c /coff
    Скомпилировал - все равно не загружается... Файл приложил.
    Attachments
    sqlite.obj.7z (114.78 KiB)
    Downloaded 319 times
  • Так всё экспортируется через таблицу EXPORTS. Надо исправить только этот символ.
  • Загрузчик ограничивал длину всех символов до 16 знаков а СРР делает очень длинные имена. Теперь длина увеличена 256. Вторая хорошая новость: если нет EXPORTS проверяется _EXPORTS.
    Остались пять внешних ссылок:

    Code: Select all

    extrn __ftol:near       ; CODE XREF: _roundFunc
                                 ; _sqliteRealToSortable
         extrn _sqliteDir:near   ; DATA XREF: _fopen
         extrn _last_fileaccess_ebx:near
                                 ; DATA XREF: _kos_FileSystemAccess
         extrn _debuf:near
         extrn _atExitList:near  ; DATA XREF: _atexit
                                 ; _kos_ExitApp
    Это пишется и на доску отладки во время загрузки.

    Лучше использовать нормальную malloc, 68.12 для этого плохо подходит.
  • Serge wrote:Загрузчик ограничивал длину всех символов до 16 знаков а СРР делает очень длинные имена. Теперь длина увеличена 256. Вторая хорошая новость: если нет EXPORTS проверяется _EXPORTS.

    Спасибо, но не смог пока что воспользоваться: пересобрал trunk ядро, и теперь все приложения, которые используют DLL, падают с Page Fault.
    Serge wrote:Лучше использовать нормальную malloc, 68.12 для этого плохо подходит.
    Нормальный malloc - это malloc из mcsmemm.cpp в библиотеке для VC? Там используется функция 64, которая, как я понял, считается устаревшей.
  • barsuk

    Запусти под mtdbg. Здорово помогает.
    Где-то есть версия для ф.68 Если malloc используется активно, попробуй этот. Он должен компилироваться и VC. Эта версия для драйвера. Надо заменить mem_alloc и mem_free на вызовы ф.68
    Attachments
    malloc.7z (37.43 KiB)
    dlmalloc от Doug Lea
    Downloaded 319 times
  • можно здесь - http://www.sqlite.org/cvstrac/wiki?p=SqlitePorts отметиться =)
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Постарался избавиться от внешних ссылок. Не загружается - вешает систему. На доске отладки ничего не видно.

    Serge, чем из винды удобно смотреть внешние ссылки coff obj файла?
    Gluk wrote:можно здесь - http://www.sqlite.org/cvstrac/wiki?p=SqlitePorts отметиться =)
    Думаю, рановато еще... Надо хотя бы библиотеку собрать.
    Attachments
    sqlite.obj.7z (114.78 KiB)
    Downloaded 326 times
  • > Serge, чем из винды
    И из линуха, и не только obj :-).

    ..bw
  • Who is online

    Users browsing this forum: No registered users and 2 guests