LINK : error : Internal error during ReadSymbolTable

Тема в разделе "WASM.WIN32", создана пользователем NCRangeR, 11 ноя 2004.

  1. NCRangeR

    NCRangeR New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    6
    Адрес:
    Russia
    Пытался тут написать Win32-программу, не импортирующую ни одной функции из DLL-ек.

    Для этого нашел в памяти (через стек) kernel32.dll, её таблицу экспорта, а в ней - функцию GetProcAddress, при помощи которой, в свою очередь, получил адрес ExitProcess.



    Ну, в общем-то, это к делу, наверное, не очень-то относится. Данная программа компилируется, однако, линкер вылетает с ошибкой
    Код (Text):
    1. LINK : error : Internal error during ReadSymbolTable
    2.  
    3.   ExceptionCode            = C0000005
    4.   ExceptionFlags           = 00000000
    5.   ExceptionAddress         = 00436AE1
    6.   NumberParameters         = 00000002
    7.   ExceptionInformation[ 0] = 00000000
    8.   ExceptionInformation[ 1] = 00000038




    Причем, если в конец программы
    Код (Text):
    1. xor eax, eax
    2. push eax
    3. call f_ExitProcess


    (в f_ExitProcess записан адрес ExitProcess)

    дописываю

    call ExitProcess

    (что, в принципе, влечет за собой импорт функции ExitProcess) - всё линкуется и работает замечательно.



    Таким образом, чтобы заставить всё это слинковаться, в программу приходится включать "для виду" произвольные Win32-функции.



    Все вышесказанное справедливо при линковании с ключом /DEBUG. С ключом /RELEASE программа работает и без "добавок".



    Я использую masm32, компилирую с ключами

    /c /coff /Cp /Zi /Zd /Zf /nologo /I"..",v.asm

    [​IMG] 1517975170__v.Asm
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    NCRangeR

    Какой линкер?



    Сделал bat-файл
    Код (Text):
    1. @echo off
    2.  
    3. set path=C:\MASM32\BIN;%PATH%
    4. set include=C:\MASM32\INCLUDE;%INCLUDE%
    5. set lib=C:\MASM32\LIB;%LIB%
    6.  
    7. ml.exe /c /coff /Cp /Zi /Zd /Zf v.asm
    8. link.exe /DEBUG /subsystem:windows v.obj
    9.  
    10. dir v.*
    запустил и получил
    Код (Text):
    1. C:\2>do_it.bat
    2.  Том в устройстве C не имеет метки.
    3.  Серийный номер тома: 84F7-E3EC
    4.  
    5.  Содержимое папки C:\2
    6.  
    7. 11.11.2004  07:52                3 321 v.asm
    8.                1 файлов          3 321 байт
    9.                0 папок   9 879 871 488 байт свободно
    10. Microsoft (R) Macro Assembler Version 6.15.8803
    11. Copyright (C) Microsoft Corp 1981-2000.  All rights reserved
    12.  
    13.  Assembling: v.asm
    14. Microsoft (R) Incremental Linker Version 5.12.8078
    15. Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
    16.  
    17.  Том в устройстве C не имеет метки.
    18.  Серийный номер тома: 84F7-E3EC
    19.  
    20.  Содержимое папки C:\2
    21.  
    22. 11.11.2004  07:52                3 321 v.asm
    23. 11.11.2004  08:05                6 443 v.exe
    24. 11.11.2004  08:05                9 200 v.ilk
    25. 11.11.2004  08:05              225 422 v.obj
    26. 11.11.2004  08:05              345 088 v.pdb
    27.                5 файлов        589 474 байт
    28.                0 папок   9 879 273 472 байт свободно
    29.  
    30. C:\2>
    PS call Exitprocess в конце исходника закомментирован.
     
  3. NCRangeR

    NCRangeR New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    6
    Адрес:
    Russia
    Спасибо за ответ.

    Однако, у меня тот же самый bat (с поправкой на то, что masm находится в g:\masm32, но, думаю, это несущественно) выдает следующее:
    Код (Text):
    1.  
    2. Microsoft (R) Macro Assembler Version 6.14.8444
    3. Copyright (C) Microsoft Corp 1981-1997.  All rights reserved
    4.  
    5.   Assembling: v.asm
    6. Microsoft (R) Incremental Linker Version 5.12.8078
    7. Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
    8.  
    9. LINK : LNK6004: v.exe not found or not built by the last incremental link; performing full link
    10.  
    11. LINK : error : Internal error during ReadSymbolTable
    12.  
    13.   ExceptionCode            = C0000005
    14.   ExceptionFlags           = 00000000
    15.   ExceptionAddress         = 00436AE1
    16.   NumberParameters         = 00000002
    17.   ExceptionInformation[ 0] = 00000000
    18.   ExceptionInformation[ 1] = 00000038
    19.  
    20. CONTEXT:
    21.   Eax    = 00000000  Esp    = 0012F990
    22.   Ebx    = 00000000  Ebp    = 3FFF0000
    23.   Ecx    = 00000000  Esi    = 40000040
    24.   Edx    = 0012F764  Edi    = 3FFF0000
    25.   Eip    = 00436AE1  EFlags = 00010206
    26.   SegCs  = 0000001B  SegDs  = 00000023
    27.   SegSs  = 00000023  SegEs  = 00000023
    28.   SegFs  = 0000003B  SegGs  = 00000000
    29.   Dr0    = 0012F990  Dr3    = 00000000
    30.   Dr1    = 3FFF0000  Dr6    = 00000000
    31.   Dr2    = 00000000  Dr7    = 00000000
    32.  Volume in drive G is PROGRAMMING
    33.  Volume Serial Number is 0CE2-B2BE
    34.  
    35.  Directory of G:\bbb
    36.  
    37. 12.11.2004  06:21             3я321 v.Asm
    38. 12.11.2004  06:22               196 v.bat
    39. 12.11.2004  06:24           524я288 v.exe
    40. 12.11.2004  06:24           262я144 v.ilk
    41. 12.11.2004  06:24           225я416 v.obj
    42. 12.11.2004  06:24            25я600 v.pdb
    43. 12.11.2004  06:24                 0 v.txt
    44.                7 File(s)      1я040я965 bytes
    45.                0 Dir(s)     940я180я992 bytes free




    :dntknw:



    Провел дополнительные эксперименты, и получил следующее:

    1. Линк с дополнительным ключом /debugtype:coff - работает, но количество отладочной информации, мягко говоря, уменьшается.



    2. Линк
    Код (Text):
    1. 5,O,$B\LINK.EXE $3 /SUBSYSTEM:WINDOWS /DEBUG /VERSION:4.0 /LIBPATH:"$L" /OUT:"$5" [b]/DEBUGTYPE:BOTH /PDB:NONE[/b]


    (выдрал из конфигурации RadASMa)

    работает, отладочная информация в порядке, но линкер выдает
    Код (Text):
    1. LINK : warning LNK4027: CVPACK error




    Хотя, можно сказать, что проблема и решена, все-таки хочется узнать, с чем я столкнулся.
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    NCRangeR

    Попробовал с ml.exe v6.14.8444, но линковал link.exe /DEBUG /subsystem:windows v.obj получил "твои" ошибки. Значит проблема в ml.exe



    2. Линк ... работает ... но линкер выдает ...

    Сделай CVPACK.EXE видимым через %PATH% и предупреждение пропадет.
     
  5. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105




    Тут уже несколько раз проскакивала

    информация о неправильном поведении Link-ера

    Последнее сообщение было как раз

    про немалую роль RadAsm. Иногда

    он формирует строки с неправильным

    синтаксисом, а у тебя видимо "навел" твою ошибку.

    Во всех случаях участвуют двойные кавычки.

    Сам RadAsm не использую, поэтому больше

    ничего не могу сказать.