Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wlink failure with lib file containing win32 COFF objects #1356

Open
sezero opened this issue Dec 10, 2024 · 4 comments
Open

wlink failure with lib file containing win32 COFF objects #1356

sezero opened this issue Dec 10, 2024 · 4 comments
Labels

Comments

@sezero
Copy link
Contributor

sezero commented Dec 10, 2024

Build the following test source with wcc386 -zq -bt=nt -5s -fo=1.obj 1.c :

extern int FLAC__stream_decoder_seek_absolute(void*);
int main(void) {
  return FLAC__stream_decoder_seek_absolute((void*)0);
}

And link it with FLAC.lib :

wcc386 -zq -bt=nt -5s -fo=1.obj 1.c
wlink N a.exe SYS NT_WIN OPTION q LIBR { FLAC.lib } F { 1.obj }
Error! E2082: file FLAC.lib(stream_decoder.c), record 1: invalid record type 0x002f
Error! E2082: file FLAC.lib(stream_decoder.c), record 2: invalid record type 0x0001
Error! E2082: file FLAC.lib(stream_decoder.c), record 3: invalid record type 0x0073
Error! E2082: file FLAC.lib(stream_decoder.c), record 4: invalid record type 0x0000
Error! E2011: file FLAC.lib(stream_decoder.c): invalid object file attribute

This is the lib file in question: FLAC.lib.zip

This error doesn't happen with wlink from OW19.

It doesn't seem to matter if FLAC.lib is built using wlib from ow1.9
or ow2.0.

The lib contains object files built using nasm with its -f win32 flag.
If the asm sources of the library were built using -f obj instead, then
wlink from ow2.0 succeeds.

@jmalak jmalak added the bug label Dec 10, 2024
@jmalak
Copy link
Member

jmalak commented Dec 10, 2024

It looks like issue with COFF format libraries.
I will check and fix.

@sezero
Copy link
Contributor Author

sezero commented Dec 10, 2024

The lib was created with -q -b -n -c -pa -s -t -zld -ii -io flags of
wlib. However, the failure doesn't go away even if I use bare minimum
flags of -q -b -n -c with wlib when creating the lib. Also note that
the lib contains obj (omf) format objects along with win32 coff format
ones. I hope those additional info helps with things.

@jmalak
Copy link
Member

jmalak commented Dec 11, 2024

I think issue happens only in situation if wlink uses COFF archive library with COFF objects.
Maybe also with COFF objects. Open Watcom build use only OMF libraries that no issue.
I will try to add some test for another formats (ELF and COFF) which is not currently used by Open Watcom build system.

@sezero
Copy link
Contributor Author

sezero commented Dec 12, 2024

P.S.: For the time being, I changed my projects to build nasm asm code in obj output format.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants