Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
87c347b1
Commit
87c347b1
authored
Sep 19, 2005
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Don't remove ignored symbols from the undefined list, simply skip them
when resolving imports. Added get_temp_file_name utility function.
parent
cecfc3f4
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
49 additions
and
37 deletions
+49
-37
build.h
tools/winebuild/build.h
+1
-0
import.c
tools/winebuild/import.c
+8
-37
utils.c
tools/winebuild/utils.c
+40
-0
No files found.
tools/winebuild/build.h
View file @
87c347b1
...
...
@@ -169,6 +169,7 @@ extern void error( const char *msg, ... )
__attribute__
((
__format__
(
__printf__
,
1
,
2
)));
extern
void
warning
(
const
char
*
msg
,
...
)
__attribute__
((
__format__
(
__printf__
,
1
,
2
)));
extern
char
*
get_temp_file_name
(
const
char
*
prefix
,
const
char
*
suffix
);
extern
void
output_standard_file_header
(
FILE
*
outfile
);
extern
FILE
*
open_input_file
(
const
char
*
srcdir
,
const
char
*
name
);
extern
void
close_input_file
(
FILE
*
file
);
...
...
tools/winebuild/import.c
View file @
87c347b1
...
...
@@ -63,8 +63,6 @@ static struct name_table ignore_symbols; /* list of symbols to ignore */
static
struct
name_table
extra_ld_symbols
;
/* list of extra symbols that ld should resolve */
static
struct
name_table
delayed_imports
;
/* list of delayed import dlls */
static
char
*
ld_tmp_file
;
/* ld temp file name */
static
struct
import
**
dll_imports
=
NULL
;
static
int
nb_imports
=
0
;
/* number of imported dlls (delayed or not) */
static
int
nb_delayed
=
0
;
/* number of delayed dlls */
...
...
@@ -222,12 +220,6 @@ static void free_imports( struct import *imp )
free
(
imp
);
}
/* remove the temp file at exit */
static
void
remove_ld_tmp_file
(
void
)
{
if
(
ld_tmp_file
)
unlink
(
ld_tmp_file
);
}
/* check whether a given dll is imported in delayed mode */
static
int
is_delayed_import
(
const
char
*
name
)
{
...
...
@@ -496,21 +488,10 @@ static int check_unused( const struct import* imp, const DLLSPEC *spec )
static
const
char
*
ldcombine_files
(
char
**
argv
)
{
unsigned
int
i
,
len
=
0
;
char
*
cmd
,
*
p
;
int
fd
,
err
;
if
(
output_file_name
&&
output_file_name
[
0
])
{
ld_tmp_file
=
xmalloc
(
strlen
(
output_file_name
)
+
10
);
strcpy
(
ld_tmp_file
,
output_file_name
);
strcat
(
ld_tmp_file
,
".XXXXXX.o"
);
}
else
ld_tmp_file
=
xstrdup
(
"/tmp/winebuild.tmp.XXXXXX.o"
);
if
((
fd
=
mkstemps
(
ld_tmp_file
,
2
)
==
-
1
))
fatal_error
(
"could not generate a temp file
\n
"
);
close
(
fd
);
atexit
(
remove_ld_tmp_file
);
char
*
cmd
,
*
p
,
*
ld_tmp_file
;
int
err
;
ld_tmp_file
=
get_temp_file_name
(
output_file_name
,
".o"
);
if
(
!
ld_command
)
ld_command
=
xstrdup
(
"ld"
);
for
(
i
=
0
;
i
<
extra_ld_symbols
.
count
;
i
++
)
len
+=
strlen
(
extra_ld_symbols
.
names
[
i
])
+
5
;
for
(
i
=
0
;
argv
[
i
];
i
++
)
len
+=
strlen
(
argv
[
i
])
+
1
;
...
...
@@ -565,25 +546,14 @@ void read_undef_symbols( DLLSPEC *spec, char **argv )
free
(
cmd
);
}
static
void
remove_ignored_symbols
(
void
)
{
unsigned
int
i
;
if
(
!
ignore_symbols
.
size
)
init_ignored_symbols
();
sort_names
(
&
ignore_symbols
);
for
(
i
=
0
;
i
<
undef_symbols
.
count
;
i
++
)
{
if
(
find_name
(
undef_symbols
.
names
[
i
],
&
ignore_symbols
))
remove_name
(
&
undef_symbols
,
i
--
);
}
}
/* resolve the imports for a Win32 module */
int
resolve_imports
(
DLLSPEC
*
spec
)
{
unsigned
int
i
,
j
,
removed
;
ORDDEF
*
odp
;
remove_ignored_symbols
();
if
(
!
ignore_symbols
.
size
)
init_ignored_symbols
();
sort_names
(
&
ignore_symbols
);
for
(
i
=
0
;
i
<
nb_imports
;
i
++
)
{
...
...
@@ -591,7 +561,8 @@ int resolve_imports( DLLSPEC *spec )
for
(
j
=
removed
=
0
;
j
<
undef_symbols
.
count
;
j
++
)
{
ORDDEF
*
odp
=
find_export
(
undef_symbols
.
names
[
j
],
imp
->
exports
,
imp
->
nb_exports
);
if
(
find_name
(
undef_symbols
.
names
[
j
],
&
ignore_symbols
))
continue
;
odp
=
find_export
(
undef_symbols
.
names
[
j
],
imp
->
exports
,
imp
->
nb_exports
);
if
(
odp
)
{
add_import_func
(
imp
,
odp
);
...
...
tools/winebuild/utils.c
View file @
87c347b1
...
...
@@ -27,9 +27,24 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#include "build.h"
#define MAX_TMP_FILES 8
static
const
char
*
tmp_files
[
MAX_TMP_FILES
];
static
unsigned
int
nb_tmp_files
;
/* atexit handler to clean tmp files */
static
void
cleanup_tmp_files
(
void
)
{
unsigned
int
i
;
for
(
i
=
0
;
i
<
MAX_TMP_FILES
;
i
++
)
if
(
tmp_files
[
i
])
unlink
(
tmp_files
[
i
]
);
}
void
*
xmalloc
(
size_t
size
)
{
void
*
res
;
...
...
@@ -147,6 +162,31 @@ void warning( const char *msg, ... )
va_end
(
valist
);
}
/* get a name for a temp file, automatically cleaned up on exit */
char
*
get_temp_file_name
(
const
char
*
prefix
,
const
char
*
suffix
)
{
char
*
name
;
int
fd
;
assert
(
nb_tmp_files
<
MAX_TMP_FILES
);
if
(
!
nb_tmp_files
)
atexit
(
cleanup_tmp_files
);
if
(
!
prefix
||
!
prefix
[
0
])
prefix
=
"winebuild.tmp"
;
if
(
!
suffix
)
suffix
=
""
;
name
=
xmalloc
(
strlen
(
prefix
)
+
strlen
(
suffix
)
+
sizeof
(
"/tmp/.XXXXXX"
)
);
sprintf
(
name
,
"%s.XXXXXX%s"
,
prefix
,
suffix
);
if
((
fd
=
mkstemps
(
name
,
strlen
(
suffix
)
)
==
-
1
))
{
sprintf
(
name
,
"/tmp/%s.XXXXXX%s"
,
prefix
,
suffix
);
if
((
fd
=
mkstemps
(
name
,
strlen
(
suffix
)
)
==
-
1
))
fatal_error
(
"could not generate a temp file
\n
"
);
}
close
(
fd
);
tmp_files
[
nb_tmp_files
++
]
=
name
;
return
name
;
}
/* output a standard header for generated files */
void
output_standard_file_header
(
FILE
*
outfile
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment