winegcc: Don't link directly to ntdll or ntoskrnl import libraries.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2021-11-17 14:56:38 +01:00
parent b65ef71fc0
commit a7074ea2a3
1 changed files with 15 additions and 5 deletions

View File

@ -1408,18 +1408,28 @@ static void build(struct options* opts)
strarray_add(&link_args, name);
break;
case 'a':
if (is_pe && !opts->use_msvcrt && !opts->lib_suffix && strchr(name, '/'))
if (!opts->use_msvcrt && !opts->lib_suffix && strchr(name, '/'))
{
/* turn the path back into -Ldir -lfoo options
* this makes sure that we use the specified libs even
* when mingw adds its own import libs to the link */
const char *p = get_basename( name );
if (!strncmp( p, "lib", 3 ) && strcmp( p, "libmsvcrt.a" ))
if (is_pe)
{
strarray_add(&link_args, strmake("-L%s", get_dirname(name) ));
strarray_add(&link_args, strmake("-l%s", get_basename_noext( p + 3 )));
break;
if (!strncmp( p, "lib", 3 ) && strcmp( p, "libmsvcrt.a" ))
{
strarray_add(&link_args, strmake("-L%s", get_dirname(name) ));
strarray_add(&link_args, strmake("-l%s", get_basename_noext( p + 3 )));
break;
}
}
else
{
/* don't link to ntdll or ntoskrnl in non-msvcrt mode
* since they export CRT functions */
if (!strcmp( p, "libntdll.a" )) break;
if (!strcmp( p, "libntoskrnl.a" )) break;
}
}
strarray_add(&link_args, name);