omftocoff, хотелось бы услышать ваше мнение!!!

Тема в разделе "WASM.WIN32", создана пользователем LuckyDevil, 9 июн 2005.

  1. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Всем доброго!!!

    Быть может это офтоп, но все же.

    Проблема такая, после компиляции кода в дельфи, я получаю объетный(.obj), с цель использования его в других проектах в том числе к примеру при сборке (ms)link.

    при попытке линковки выскакиевает следующее сообщение:

    entry.obj : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

    понятно что линкер не смог сконвертировать данный формат(omf to coff), с ранними версиями таких проблем не существовало.

    Как быть??

    вот что кажит ида 4.8, этот объкетный файл скомпилтрован ранней версией дельфи и нормально линкуется:
    Код (Text):
    1. DGROUP:0000 ;
    2. DGROUP:0000 ; ã=====================================================================   ====¬
    3. DGROUP:0000 ; ¦     This file is generated by The Interactive Disassembler (IDA)        ¦
    4. DGROUP:0000 ; ¦     Copyright (c) 2005 by DataRescue sa/nv, <ida@datarescue.com>        ¦
    5. DGROUP:0000 ; ¦             Licensed to: Безпощадный даос, 1 user, std, 07/2003             ¦
    6. DGROUP:0000 ; L===================================================================== ====-
    7. DGROUP:0000 ;
    8. DGROUP:0000 ; File Name   : F:\project\admin\drivers\my project\Example 5\release\entry.OBJ
    9. DGROUP:0000 ; Format      : Object Module Format (OMF/Microsoft)
    10. DGROUP:0000 ; Module name      : entry.pas
    11.  
    12. лог иды:
    13.  
    14.  
    15.   bytes   pages size description
    16. --------- ----- ---- --------------------------------------------
    17.    262144    32 8192 allocating memory for b-tree...
    18.     65536     8 8192 allocating memory for virtual array...
    19.    262144    32 8192 allocating memory for name pointers...
    20. -----------------------------------------------------------------
    21.    589824            total memory allocated
    22.  
    23. Loading IDP module F:\IDA Pro 4.8\procs\pc.w32 for processor metapc...OK
    24. Autoanalysis subsystem is initialized.
    25. Possible file format: Object Module Format (OMF/IBM) (F:\IDA Pro 4.8\loaders\omf.ldw)
    26. Possible file format: Object Module Format (OMF/Microsoft) (F:\IDA Pro 4.8\loaders\omf.ldw)
    27. Loading file 'F:\project\admin\my project\Example 5\release\entry.OBJ' into database...
    28. Detected file format: Object Module Format (OMF/Microsoft)
    29.   0. Creating a new segment  (00000000-00000001) ... ... OK
    30.   1. Creating a new segment  (00000010-00000024) ... ... OK
    31.   2. Creating a new segment  (00000030-00001855) ... ... OK
    32.   3. Creating a new segment  (00001860-00001861) ... ... OK
    33.   4. Creating a new segment  (00001870-00001884) ... ... OK
    34.   5. Creating a new segment  (00001890-00001891) ... ... OK
    35.   6. Creating a new segment  (000018A0-000018A6) ... ... OK
    36. Assuming __cdecl calling convention by default
    37. Marking typical code sequences...
    38. Flushing buffers, please wait...ok
    39. File 'F:\project\admin\my project\Example 5\release\entry.OBJ' is successfully loaded into the database.
    40. 5C: can't find Borland's RTTI descriptor
    41. 414: can't find Borland's RTTI descriptor
    42. 520: can't find Borland's RTTI descriptor
    43. 588: can't find Borland's RTTI descriptor
    44. 5C0: can't find Borland's RTTI descriptor
    45. 644: can't find Borland's RTTI descriptor
    46. 6D0: can't find Borland's RTTI descriptor
    47. 74C: can't find Borland's RTTI descriptor
    48. 7E0: can't find Borland's RTTI descriptor
    49. 8AC: can't find Borland's RTTI descriptor
    50. 934: can't find Borland's RTTI descriptor
    51. A40: can't find Borland's RTTI descriptor
    52. B0C: can't find Borland's RTTI descriptor
    53. B9C: can't find Borland's RTTI descriptor
    54. BF4: can't find Borland's RTTI descriptor
    55. C3C: can't find Borland's RTTI descriptor
    56. CE8: can't find Borland's RTTI descriptor
    57. E84: can't find Borland's RTTI descriptor
    58. Compiling file 'F:\IDA Pro 4.8\idc\ida.idc'...
    59. Executing function 'main'...
    60. Compiling file 'F:\IDA Pro 4.8\idc\onload.idc'...
    61. Executing function 'OnLoad'...
    62. IDA is analysing the input file...
    63. You may start to explore the input file right now.
    64. Name '`__DPdsc__'[_MODE]' at 00000588 is deleted...
    65. Name '`__DPdsc__'[_SECURITY_IMPERSONATION_LEVEL]' at 000005C0 is deleted...
    66. Name '`__DPdsc__'[_SYSTEM_POWER_STATE]' at 000007E0 is deleted...
    67. The initial autoanalysis is finished.
    68.  
     
  2. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    а вот то что кажет ида с более поздней версией obj файла:
    Код (Text):
    1.  
    2. DGROUP:0000 ;
    3. DGROUP:0000 ; ã=====================================================================  ====¬
    4. DGROUP:0000 ; ¦     This file is generated by The Interactive Disassembler (IDA)        ¦
    5. DGROUP:0000 ; ¦     Copyright (c) 2005 by DataRescue sa/nv, <ida@datarescue.com>        ¦
    6. DGROUP:0000 ; ¦             Licensed to: Безпощадный даос, 1 user, std, 07/2003             ¦
    7. DGROUP:0000 ; L===================================================================== ====-
    8. DGROUP:0000 ;
    9. DGROUP:0000 ; File Name   : F:\project\admin\drivers\my project\Example 5\entry.OBJ
    10. DGROUP:0000 ; Format      : Object Module Format (OMF/Microsoft)
    11. DGROUP:0000 ; Module name      : entry.pas
    12. DGROUP:0000 ; Translator       : Delphi Pascal V40
    13.  
    14. лог иды:
    15.  
    16. Unloading IDP module F:\IDA Pro 4.8\procs\pc.w32...
    17.  
    18.   bytes   pages size description
    19. --------- ----- ---- --------------------------------------------
    20.    262144    32 8192 allocating memory for b-tree...
    21.     65536     8 8192 allocating memory for virtual array...
    22.    262144    32 8192 allocating memory for name pointers...
    23. -----------------------------------------------------------------
    24.    589824            total memory allocated
    25.  
    26. Loading IDP module F:\IDA Pro 4.8\procs\pc.w32 for processor metapc...OK
    27. Autoanalysis subsystem is initialized.
    28. Possible file format: Object Module Format (OMF/IBM) (F:\IDA Pro 4.8\loaders\omf.ldw)
    29. Possible file format: Object Module Format (OMF/Microsoft) (F:\IDA Pro 4.8\loaders\omf.ldw)
    30. Loading file 'F:\project\admin\my project\Example 5\entry.OBJ' into database...
    31. Detected file format: Object Module Format (OMF/Microsoft)
    32.   0. Creating a new segment  (00000000-00000001) ... ... OK
    33.   1. Creating a new segment  (00000010-00000021) ... ... OK
    34.   2. Creating a new segment  (00000030-00000EBC) ... ... OK
    35.   3. Creating a new segment  (00000EC0-00000ED3) ... ... OK
    36.   4. Creating a new segment  (00000EE0-00000F06) ... ... OK
    37.   5. Creating a new segment  (00000F10-00000F22) ... ... OK
    38.   6. Creating a new segment  (00000F30-00000F42) ... ... OK
    39.   7. Creating a new segment  (00000F50-00000F7D) ... ... OK
    40.   8. Creating a new segment  (00000F80-00000F8F) ... ... OK
    41.   9. Creating a new segment  (00000F90-00000F9D) ... ... OK
    42.  10. Creating a new segment  (00000FA0-00000FC1) ... ... OK
    43.  11. Creating a new segment  (00000FD0-00000FFF) ... ... OK
    44.  12. Creating a new segment  (00001000-00001028) ... ... OK
    45.  13. Creating a new segment  (00001030-00001037) ... ... OK
    46.  14. Creating a new segment  (00001040-0000119A) ... ... OK
    47.  15. Creating a new segment  (000011A0-000011BF) ... ... OK
    48.  16. Creating a new segment  (000011C0-000012C3) ... ... OK
    49.  17. Creating a new segment  (000012D0-000012FE) ... ... OK
    50.  18. Creating a new segment  (00001300-00001344) ... ... OK
    51.  19. Creating a new segment  (00001350-00001384) ... ... OK
    52.  20. Creating a new segment  (00001390-000013C0) ... ... OK
    53.  21. Creating a new segment  (000013C0-000013F4) ... ... OK
    54.  22. Creating a new segment  (00001400-00001430) ... ... OK
    55.  23. Creating a new segment  (00001430-000014A0) ... ... OK
    56.  24. Creating a new segment  (000014A0-00001664) ... ... OK
    57.  25. Creating a new segment  (00001670-00001700) ... ... OK
    58.  26. Creating a new segment  (00001700-00001820) ... ... OK
    59.  27. Creating a new segment  (00001820-0000189C) ... ... OK
    60.  28. Creating a new segment  (000018A0-000018CE) ... ... OK
    61.  29. Creating a new segment  (000018D0-000018D8) ... ... OK
    62.  30. Creating a new segment  (000018E0-000018E1) ... ... OK
    63.  31. Creating a new segment  (000018F0-00001904) ... ... OK
    64.  32. Creating a new segment  (00001910-00001911) ... ... OK
    65.  33. Creating a new segment  (00001920-00001926) ... ... OK
    66.  34. Creating a new segment  (00001930-00001936) ... ... OK
    67. Assuming __cdecl calling convention by default
    68. Marking typical code sequences...
    69. Flushing buffers, please wait...ok
    70. File 'F:\project\admin\my project\Example 5\entry.OBJ' is successfully loaded into the database.
    71. 48: can't find Borland's RTTI descriptor
    72. 400: can't find Borland's RTTI descriptor
    73. 50C: can't find Borland's RTTI descriptor
    74. 574: can't find Borland's RTTI descriptor
    75. 5AC: can't find Borland's RTTI descriptor
    76. 630: can't find Borland's RTTI descriptor
    77. 6BC: can't find Borland's RTTI descriptor
    78. 738: can't find Borland's RTTI descriptor
    79. 7CC: can't find Borland's RTTI descriptor
    80. 898: can't find Borland's RTTI descriptor
    81. 920: can't find Borland's RTTI descriptor
    82. A2C: can't find Borland's RTTI descriptor
    83. AF8: can't find Borland's RTTI descriptor
    84. B88: can't find Borland's RTTI descriptor
    85. BE0: can't find Borland's RTTI descriptor
    86. C28: can't find Borland's RTTI descriptor
    87. CD4: can't find Borland's RTTI descriptor
    88. E70: can't find Borland's RTTI descriptor
    89. Compiling file 'F:\IDA Pro 4.8\idc\ida.idc'...
    90. Executing function 'main'...
    91. Compiling file 'F:\IDA Pro 4.8\idc\onload.idc'...
    92. Executing function 'OnLoad'...
    93. IDA is analysing the input file...
    94. You may start to explore the input file right now.
    95. Name '`__DPdsc__'[_MODE]' at 00000574 is deleted...
    96. Name '`__DPdsc__'[_SECURITY_IMPERSONATION_LEVEL]' at 000005AC is deleted...
    97. The initial autoanalysis is finished.
    98.  
     
  3. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    у борланда есть утилита, конвертирующая coff2omf.

    а вот есть ли обратная?

    никто с этим не сталкивался?
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    не совсем в тему, но вот что нашёл в google



    получается, что конвертер этот лежит в папке bin рядом с линкером.
     
  5. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Coff2Omf converts the publicly exported symbols in the COFF import library to a corresponding set of symbols in the OMF import library. Coff2Omf enables C++Builder users to link to Microsoft and other third-party DLLs that use the COFF format. Coff2Omf does not convert .OBJ files.



    Вообще можно как-нибудь объектные файлы генерируемые, FASM подключать к Delphi проекту?

    [offtop]

    Кстати сказать - линкер Delphi совершенно наплевательски относится к выравниваниям задаваемыми в .obj файлах, во всяком случае сделать глобальную переменную выравненную по границе 32 байта мне не удалось (TASM).[/offtop]
     
  6. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Delphi 3 умеет компилить в формат COFF.

    И еще есть линкер UniLink который прекрасно работает и с COFF и с OMF
     
  7. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Ms Rem,UniLink можешь кинуть его?

    а по поводу Delphi 3 и его возможностей конвертировать в coff, немного не верно, она создает obj файл в формате OMF(IBM/MS).
     
  8. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    ftp.styx.cabel.net/pub/UniLink

    входить можно анонимом, через ослика. В качестве пыссовода, какое-нибудь мыло.
     
  9. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    alpet, в 2 словах, что это?

    насколько я понял, там непосредственно с borland'ом свзяно что-то?

    запустил закачку.

    спасибо!!!
     
  10. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Это UniLink версия 2319.
     
  11. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    LuckyDevil

    Кстати, нужно было убрать имя пользователя прежде чем

    постить листинг из варезной иды, а то много

    места занимает и некрасиво :derisive:
     
  12. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Меня тоже интересует этот вопрос.

    Посмотрел я что пихает в obj delphi6.

    Пробую UniLink Не находит OBJ's.

    Так вот там идет подключение не существующим файлам.

    ...SysInit.obj........System.obj........Project1.drf..

    А создать их нельзя, так как системные.

    Создаю Make c такой строчкой.

    "C:\Program Files\Borland\Delphi6\Bin\dcc32.exe" -jP -$A-,B-,C-,D-,G+,H-,I-,J-,L-,M-,O+,P-,Q-,R-,T-,U-,V-,W+,X+,Y- I:\driver\tiny.pas

    Вижу что барохла стало меньше.
     
  13. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Но всеравно не выходит.
     
  14. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Pavia, я не понял, что именно у тебя не выходит?

    можно поподробней?

    Asterix, согласен с тобой, надеюсь модератор поправит мою оплошность.
     
  15. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    кто может скинуть IMPORT32.lib(Borland Сpp 5.x и выше)
     
  16. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Подробней. Скампилил в дельфи 6 файл получил OBJ. Пытаюсь его слинковать через UniLink. UniLink выдает, что не найдены еще SysInit.obj,System.obj.

    А получить их не получаеться, дельфя не дает говорит, что они системные.



    Кинул тебе на мыло IMPORT32.lib
     
  17. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Pavia, держи их.
     
  18. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
  19. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
  20. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    вот еще до кучи, чтобы все вопросы закрыть для этого линкера

    [​IMG] _2035819379__ulnb2319.rar