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
68467db6
Commit
68467db6
authored
Jun 18, 2004
by
Pierre d'Herbemont
Committed by
Alexandre Julliard
Jun 18, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Detection of .size instruction.
- Detection of the assembler name prefix.
parent
c196f63a
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
96 additions
and
7 deletions
+96
-7
configure
configure
+65
-0
configure.ac
configure.ac
+11
-0
config.h.in
include/config.h.in
+3
-0
import.c
tools/winebuild/import.c
+17
-7
No files found.
configure
View file @
68467db6
...
...
@@ -13357,6 +13357,71 @@ _ACEOF
echo
"
$as_me
:
$LINENO
: checking for .size in assembler"
>
&5
echo
$ECHO_N
"checking for .size in assembler...
$ECHO_C
"
>
&6
if
test
"
${
ac_cv_c_asm_size
+set
}
"
=
set
;
then
echo
$ECHO_N
"(cached)
$ECHO_C
"
>
&6
else
cat
>
conftest.
$ac_ext
<<
_ACEOF
/* confdefs.h. */
_ACEOF
cat
confdefs.h
>>
conftest.
$ac_ext
cat
>>
conftest.
$ac_ext
<<
_ACEOF
/* end confdefs.h. */
void ac_asm(void) { asm(".globl _ac_test\n.size _ac_test, . - _ac_test"); }
int
main ()
{
;
return 0;
}
_ACEOF
rm
-f
conftest.
$ac_objext
conftest
$ac_exeext
if
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_link
\"
"
)
>
&5
(
eval
$ac_link
)
2>conftest.er1
ac_status
=
$?
grep
-v
'^ *+'
conftest.er1
>
conftest.err
rm
-f
conftest.er1
cat
conftest.err
>
&5
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
&&
{
ac_try
=
'test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_try
\"
"
)
>
&5
(
eval
$ac_try
)
2>&5
ac_status
=
$?
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
;
}
&&
{
ac_try
=
'test -s conftest$ac_exeext'
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_try
\"
"
)
>
&5
(
eval
$ac_try
)
2>&5
ac_status
=
$?
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
;
}
;
then
ac_cv_c_asm_size
=
"yes"
else
echo
"
$as_me
: failed program was:"
>
&5
sed
's/^/| /'
conftest.
$ac_ext
>
&5
ac_cv_c_asm_size
=
"no"
fi
rm
-f
conftest.err conftest.
$ac_objext
\
conftest
$ac_exeext
conftest.
$ac_ext
fi
echo
"
$as_me
:
$LINENO
: result:
$ac_cv_c_asm_size
"
>
&5
echo
"
${
ECHO_T
}
$ac_cv_c_asm_size
"
>
&6
if
test
"
$ac_cv_c_asm_size
"
=
"yes"
then
cat
>>
confdefs.h
<<
\
_ACEOF
#define HAVE_ASM_DOT_SIZE 1
_ACEOF
fi
DLLEXT
=
""
DLLFLAGS
=
"-D_REENTRANT"
...
...
configure.ac
View file @
68467db6
...
...
@@ -828,6 +828,17 @@ AC_CACHE_CHECK([for assembler keyword for word values], ac_cv_c_asm_short,
AC_DEFINE_UNQUOTED(__ASM_SHORT, ["$ac_cv_c_asm_short"],
[Define to the assembler keyword used to specify a word value])
dnl **** Check for .size in assembler ****
AC_CACHE_CHECK([for .size in assembler], ac_cv_c_asm_size,
WINE_TRY_ASM_LINK([".globl _ac_test\n.size _ac_test, . - _ac_test"],,,
ac_cv_c_asm_size="yes",ac_cv_c_asm_size="no"))
if test "$ac_cv_c_asm_size" = "yes"
then
AC_DEFINE(HAVE_ASM_DOT_SIZE, 1, [Define if the assembler keyword .size is accepted])
fi
dnl **** Check for working dll ****
AC_SUBST(DLLEXT,"")
...
...
include/config.h.in
View file @
68467db6
...
...
@@ -35,6 +35,9 @@
/* Define if you have ARTS sound server */
#undef HAVE_ARTS
/* Define if the assembler keyword .size is accepted */
#undef HAVE_ASM_DOT_SIZE
/* Define to 1 if you have the <audio/audiolib.h> header file. */
#undef HAVE_AUDIO_AUDIOLIB_H
...
...
tools/winebuild/import.c
View file @
68467db6
...
...
@@ -176,6 +176,13 @@ inline static void sort_symbols( char **table, int size )
qsort
(
table
,
size
,
sizeof
(
*
table
),
name_cmp
);
}
inline
static
void
output_function_size
(
FILE
*
outfile
,
const
char
*
name
)
{
#ifdef HAVE_ASM_DOT_SIZE
fprintf
(
outfile
,
"
\"\\
t.size "
__ASM_NAME
(
"%s"
)
", . - "
__ASM_NAME
(
"%s"
)
"
\\
n
\"\n
"
,
name
,
name
);
#endif
}
/* free an import structure */
static
void
free_imports
(
struct
import
*
imp
)
{
...
...
@@ -533,6 +540,8 @@ static const char *ldcombine_files( char **argv )
/* read in the list of undefined symbols */
void
read_undef_symbols
(
char
**
argv
)
{
static
const
char
name_prefix
[]
=
__ASM_NAME
(
""
);
static
const
int
prefix_len
=
sizeof
(
name_prefix
)
-
1
;
FILE
*
f
;
char
buffer
[
1024
];
int
err
;
...
...
@@ -558,6 +567,7 @@ void read_undef_symbols( char **argv )
p
=
buffer
;
while
(
*
p
==
' '
)
p
++
;
if
(
p
[
0
]
==
'U'
&&
p
[
1
]
==
' '
&&
p
[
2
])
p
+=
2
;
if
(
prefix_len
&&
!
strncmp
(
p
,
name_prefix
,
prefix_len
))
p
+=
prefix_len
;
add_undef_symbol
(
p
);
}
if
((
err
=
pclose
(
f
)))
warning
(
"nm -u %s error %d
\n
"
,
name
,
err
);
...
...
@@ -740,11 +750,11 @@ static int output_immediate_imports( FILE *outfile )
#error You need to define import thunks for your architecture!
#endif
fprintf
(
outfile
,
"
\"\n
"
);
fprintf
(
outfile
,
"
\"\\
t.size "
__ASM_NAME
(
"%s"
)
", . - "
__ASM_NAME
(
"%s"
)
"
\\
n
\"\n
"
,
name
,
name
);
output_function_size
(
outfile
,
name
);
}
pos
+=
4
;
}
fprintf
(
outfile
,
"
\"\\
t.size "
__ASM_NAME
(
"%s"
)
", . - "
__ASM_NAME
(
"%s"
)
"
\\
n
\"\n
"
,
import_thunks
,
import_thunks
);
output_function_size
(
outfile
,
import_thunks
);
fprintf
(
outfile
,
"
\"
.text
\"
);
\n
#ifndef __GNUC__
\n
}
\n
#endif
\n\n
"
);
done:
...
...
@@ -936,7 +946,7 @@ static int output_delayed_imports( FILE *outfile, const DLLSPEC *spec )
#else
#error You need to defined delayed import thunks for your architecture!
#endif
fprintf
(
outfile
,
"
\"\\
t.size "
__ASM_NAME
(
"__wine_delay_load_asm"
)
", . - "
__ASM_NAME
(
"__wine_delay_load_asm"
)
"
\\
n
\"\n
"
);
output_function_size
(
outfile
,
"__wine_delay_load_asm"
);
for
(
i
=
idx
=
0
;
i
<
nb_imports
;
i
++
)
{
...
...
@@ -965,11 +975,11 @@ static int output_delayed_imports( FILE *outfile, const DLLSPEC *spec )
#else
#error You need to defined delayed import thunks for your architecture!
#endif
fprintf
(
outfile
,
"
\"\\
t.size "
__ASM_NAME
(
"%s"
)
", . - "
__ASM_NAME
(
"%s"
)
"
\\
n
\"\n
"
,
name
,
name
);
output_function_size
(
outfile
,
name
);
}
idx
++
;
}
fprintf
(
outfile
,
"
\n
\"\\
t.size "
__ASM_NAME
(
"%s"
)
", . - "
__ASM_NAME
(
"%s"
)
"
\\
n
\"\n
"
,
delayed_import_loaders
,
delayed_import_loaders
);
output_function_size
(
outfile
,
delayed_import_loaders
);
fprintf
(
outfile
,
"
\n
\"
.data
\\
n
\\
t.align %d
\\
n
\"\n
"
,
get_alignment
(
8
)
);
fprintf
(
outfile
,
"
\"
"
__ASM_NAME
(
"%s"
)
":
\\
n
\"\n
"
,
delayed_import_thunks
);
...
...
@@ -1032,10 +1042,10 @@ static int output_delayed_imports( FILE *outfile, const DLLSPEC *spec )
#error You need to define delayed import thunks for your architecture!
#endif
fprintf
(
outfile
,
"
\n
"
);
fprintf
(
outfile
,
"
\"\\
t.size "
__ASM_NAME
(
"%s"
)
", . - "
__ASM_NAME
(
"%s"
)
"
\\
n
\"\n
"
,
name
,
name
);
output_function_size
(
outfile
,
name
);
}
}
fprintf
(
outfile
,
"
\"\\
t.size "
__ASM_NAME
(
"%s"
)
", . - "
__ASM_NAME
(
"%s"
)
"
\\
n
\"\n
"
,
delayed_import_thunks
,
delayed_import_thunks
);
output_function_size
(
outfile
,
delayed_import_thunks
);
fprintf
(
outfile
,
"
\"
.text
\"
);
\n
"
);
fprintf
(
outfile
,
"#ifndef __GNUC__
\n
"
);
fprintf
(
outfile
,
"}
\n
"
);
...
...
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