www.digitalmars.com         C & C++   DMDScript  

c++ - coff2omf bug - C2OTEST.zip

reply r.scudder rcn.com writes:
Walter...

I believe that a bug exists in coff2omf that causes it to skip certain .obj
files when it is processing a .lib file.  I can not tell you exactly why it
refuses to process the .obj files but I do know the following things:

1) The skipping has nothing to do with the contents of the .obj.  
The coff2omf will process one file then skip an almost identical file.

2) Of the files I have tested, the only difference between a file processed by
coff2omf and one that is skipped is the length of the file name.  (I do not know
if the filename length has anything to do with the problem.  I am only stating
what I observed.)

I have examined this issue using a .lib file that is impacted by this bug
(uuid32.lib) by doing the following in a batch file:

1) extract each .obj file to a subdirectory (there are well over 1,000 files).

2) run coff2omf on each obj file, one at a time, capturing the output to a text
file.  Only 13 files are processed. Here is the redirected output:

COFF2OMF: Converting 'c:\psdk\bin\wrk\vcguids.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid0.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid1.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid2.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid3.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid4.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid5.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid6.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid7.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid8.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid9.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\go7.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids.obj'

NOTE: I observed that of the files that were NOT processed by coff2omf, all had
filenames that were atleast one character greater in length than the longest
filename in the list of files that WERE processed. IOW - any file with a name
length greater than 15 characters was skipped.   

[I am attaching my batch file in case you or anyone else would like to check my
findings.]

3) I used DUMPBIN to examin the contents of similar .obj files where one file
was processed by coff2omf and the other file skipped.

Here is an example of two very similar .obj files extracted from uuid32.lib and
opened using DUMPBIN to display the symbols.  (BTW, no functions are exported
from uuid32.lib) 

---[DUMPBIN guids_guid0.obj OUTPUT START]---------------- String Table Size =
0x1A bytes

COFF SYMBOL TABLE
000 00000000 DEBUG  notype       Filename     | .file
guids_guid0.c
002 00000000 SECT1  notype       Static       | .debug$S
Section length   91, #relocs    2, #linenums    0, checksum        0
004 00000000 SECT2  notype       Static       | .rdata
Section length   10, #relocs    0, #linenums    0, checksum        0
006 00000000 SECT2  notype       External     | _CLSID_StdURLMoniker
007 00000000 SECT3  notype       Static       | .debug$T
Section length   94, #relocs    0, #linenums    0, checksum        0
---[DUMPBIN OUTPUT END]----------------------------------

And here is the output from DUMPBIN /SYMBOLS uuid.lib showing symbols in
guids_guid10.obj, one of the files coff2omf skipped over.

---[DUMPBIN guids_guid10.obj OUTPUT START]--------------- String Table Size =
0x24 bytes

COFF SYMBOL TABLE
000 00000000 DEBUG  notype       Filename     | .file
guids_guid10.c
002 00000000 SECT1  notype       Static       | .debug$S
Section length   90, #relocs    2, #linenums    0, checksum        0
004 00000000 SECT2  notype       Static       | .rdata
Section length   10, #relocs    0, #linenums    0, checksum        0
006 00000000 SECT2  notype       External     | _IID_IAsyncMoniker
007 00000000 SECT3  notype       Static       | .debug$T
Section length   94, #relocs    0, #linenums    0, checksum        0
---[DUMPBIN OUTPUT END]----------------------------------

As you can see the skipped file is almost exactly the same as the processed
file.  I don't think there is any question that this is a correctable
programming error. 

I know that you have fixed uuid32.lib, and I appreciate that you have given time
to the Win32 programming community, but that fix was really a treating of the
symptom.  I'd like to see the problem fixed at the root.  I realize that you
have many other important issues to devote precious time to, so even if you
would add this to the to-do list I would be grateful.

Thank you,
Roger Scudder
Apr 01 2006
parent reply r.scudder rcn.com writes:
Jan has informed me that I need to bring this to Walter Oney, not Walter Bright.
-Roger

In article <e0mua6$11f8$1 digitaldaemon.com>, r.scudder rcn.com says...
Walter...

I believe that a bug exists in coff2omf that causes it to skip certain .obj
files when it is processing a .lib file.  I can not tell you exactly why it
refuses to process the .obj files but I do know the following things:

1) The skipping has nothing to do with the contents of the .obj.  
The coff2omf will process one file then skip an almost identical file.

2) Of the files I have tested, the only difference between a file processed by
coff2omf and one that is skipped is the length of the file name.  (I do not know
if the filename length has anything to do with the problem.  I am only stating
what I observed.)

I have examined this issue using a .lib file that is impacted by this bug
(uuid32.lib) by doing the following in a batch file:

1) extract each .obj file to a subdirectory (there are well over 1,000 files).

2) run coff2omf on each obj file, one at a time, capturing the output to a text
file.  Only 13 files are processed. Here is the redirected output:

COFF2OMF: Converting 'c:\psdk\bin\wrk\vcguids.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid0.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid1.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid2.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid3.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid4.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid5.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid6.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid7.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid8.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids_guid9.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\go7.obj'
COFF2OMF: Converting 'c:\psdk\bin\wrk\guids.obj'

NOTE: I observed that of the files that were NOT processed by coff2omf, all had
filenames that were atleast one character greater in length than the longest
filename in the list of files that WERE processed. IOW - any file with a name
length greater than 15 characters was skipped.   

[I am attaching my batch file in case you or anyone else would like to check my
findings.]

3) I used DUMPBIN to examin the contents of similar .obj files where one file
was processed by coff2omf and the other file skipped.

Here is an example of two very similar .obj files extracted from uuid32.lib and
opened using DUMPBIN to display the symbols.  (BTW, no functions are exported
from uuid32.lib) 

---[DUMPBIN guids_guid0.obj OUTPUT START]---------------- String Table Size =
0x1A bytes

COFF SYMBOL TABLE
000 00000000 DEBUG  notype       Filename     | .file
guids_guid0.c
002 00000000 SECT1  notype       Static       | .debug$S
Section length   91, #relocs    2, #linenums    0, checksum        0
004 00000000 SECT2  notype       Static       | .rdata
Section length   10, #relocs    0, #linenums    0, checksum        0
006 00000000 SECT2  notype       External     | _CLSID_StdURLMoniker
007 00000000 SECT3  notype       Static       | .debug$T
Section length   94, #relocs    0, #linenums    0, checksum        0
---[DUMPBIN OUTPUT END]----------------------------------

And here is the output from DUMPBIN /SYMBOLS uuid.lib showing symbols in
guids_guid10.obj, one of the files coff2omf skipped over.

---[DUMPBIN guids_guid10.obj OUTPUT START]--------------- String Table Size =
0x24 bytes

COFF SYMBOL TABLE
000 00000000 DEBUG  notype       Filename     | .file
guids_guid10.c
002 00000000 SECT1  notype       Static       | .debug$S
Section length   90, #relocs    2, #linenums    0, checksum        0
004 00000000 SECT2  notype       Static       | .rdata
Section length   10, #relocs    0, #linenums    0, checksum        0
006 00000000 SECT2  notype       External     | _IID_IAsyncMoniker
007 00000000 SECT3  notype       Static       | .debug$T
Section length   94, #relocs    0, #linenums    0, checksum        0
---[DUMPBIN OUTPUT END]----------------------------------

As you can see the skipped file is almost exactly the same as the processed
file.  I don't think there is any question that this is a correctable
programming error. 

I know that you have fixed uuid32.lib, and I appreciate that you have given time
to the Win32 programming community, but that fix was really a treating of the
symptom.  I'd like to see the problem fixed at the root.  I realize that you
have many other important issues to devote precious time to, so even if you
would add this to the to-do list I would be grateful.

Thank you,
Roger Scudder



begin 0644 C2OTEST.zip
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
M%````` `SH:!-/ST]K8K+0``168"``L``````````0` `````````$,R3U1%
<4U0N0D%44$L%! `````!``$`.0```%0M````````
`
end

Apr 01 2006
parent reply azsd <azsd qq.com> writes:
I think that Walter use an char[10] local var as filename with out
path near the fullname[260(MAXPATH+x?)] with path, and then caused
an null char missed between these two strings when filename more
than 15bytes.

[aaaabbbbccccdddd],#0,#0,#0(....) before full path placed
[aaaabbbbccccddddc:\xxxxxx\aaaabbbbccccdddd] overflowed.

only when the last d is an null char then it works or crash in
ntdll.dll
Feb 05 2007
parent reply azsd <azsd qq.com> writes:
I modified an excutable to expand filename to 255 bytes based on
1.00.195 version some hours ago.
I have tested it with minilzo_icl91_coff.obj witch longer than
15bytes and it works.

I was noticed other bugs fixed by Walter in this posts

hxxp://www.digitalmars.com/d/archives/c++/windows/32-bits/85.html

how can I get that fixed version newer then 8.40 cd's one?

thx.
banxian
Feb 05 2007
parent azsd <azsd qq.com> writes:
I was forget to fix retn codes in the middle of subroutine.

you can using hex editor to modify $AE38 from "81C4 18040000"
to "81C4 08050000".

fixed exe attached.

sorry for the mistake I made in the early morning.
Feb 06 2007