Added check whether unaligned memory access is allowed.
Added macros to access unaligned WORDs / DWORDs.
This commit is contained in:
parent
a6d83ebae1
commit
cc195924a6
|
@ -5343,24 +5343,67 @@ EOF
|
|||
|
||||
fi
|
||||
|
||||
echo $ac_n "checking "whether unaligned memory access is allowed"""... $ac_c" 1>&6
|
||||
echo "configure:5348: checking "whether unaligned memory access is allowed"" >&5
|
||||
if eval "test \"`echo '$''{'wine_cv_allow_unaligned_access'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
if test "$cross_compiling" = yes; then
|
||||
wine_cv_allow_unaligned_access=no
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5356 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
long volatile test[2];
|
||||
main()
|
||||
{
|
||||
long volatile *ua = (long volatile *)((char *)test + 1);
|
||||
*ua = 0;
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:5367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
wine_cv_allow_unaligned_access=yes
|
||||
else
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
rm -fr conftest*
|
||||
wine_cv_allow_unaligned_access=no
|
||||
fi
|
||||
rm -fr conftest*
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
echo "$ac_t""$wine_cv_allow_unaligned_access" 1>&6
|
||||
if test "$wine_allow_unaligned_access" = "yes"
|
||||
then
|
||||
cat >> confdefs.h <<\EOF
|
||||
#define ALLOW_UNALIGNED_ACCESS 1
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
|
||||
# for constant arguments. Useless!
|
||||
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
|
||||
echo "configure:5352: checking for working alloca.h" >&5
|
||||
echo "configure:5395: checking for working alloca.h" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5357 "configure"
|
||||
#line 5400 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <alloca.h>
|
||||
int main() {
|
||||
void *p = alloca(2 * sizeof(int));
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:5364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:5407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
ac_cv_header_alloca_h=yes
|
||||
else
|
||||
|
@ -5381,12 +5424,12 @@ EOF
|
|||
fi
|
||||
|
||||
echo $ac_n "checking for alloca""... $ac_c" 1>&6
|
||||
echo "configure:5385: checking for alloca" >&5
|
||||
echo "configure:5428: checking for alloca" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5390 "configure"
|
||||
#line 5433 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
@ -5414,7 +5457,7 @@ int main() {
|
|||
char *p = (char *) alloca(1);
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:5418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:5461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
ac_cv_func_alloca_works=yes
|
||||
else
|
||||
|
@ -5446,12 +5489,12 @@ EOF
|
|||
|
||||
|
||||
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
|
||||
echo "configure:5450: checking whether alloca needs Cray hooks" >&5
|
||||
echo "configure:5493: checking whether alloca needs Cray hooks" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5455 "configure"
|
||||
#line 5498 "configure"
|
||||
#include "confdefs.h"
|
||||
#if defined(CRAY) && ! defined(CRAY2)
|
||||
webecray
|
||||
|
@ -5476,12 +5519,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
|
|||
if test $ac_cv_os_cray = yes; then
|
||||
for ac_func in _getb67 GETB67 getb67; do
|
||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||
echo "configure:5480: checking for $ac_func" >&5
|
||||
echo "configure:5523: checking for $ac_func" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5485 "configure"
|
||||
#line 5528 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
|
@ -5504,7 +5547,7 @@ $ac_func();
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:5508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:5551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_$ac_func=yes"
|
||||
else
|
||||
|
@ -5531,7 +5574,7 @@ done
|
|||
fi
|
||||
|
||||
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
|
||||
echo "configure:5535: checking stack direction for C alloca" >&5
|
||||
echo "configure:5578: checking stack direction for C alloca" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -5539,7 +5582,7 @@ else
|
|||
ac_cv_c_stack_direction=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5543 "configure"
|
||||
#line 5586 "configure"
|
||||
#include "confdefs.h"
|
||||
find_stack_direction ()
|
||||
{
|
||||
|
@ -5558,7 +5601,7 @@ main ()
|
|||
exit (find_stack_direction() < 0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:5562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:5605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_c_stack_direction=1
|
||||
else
|
||||
|
@ -5615,12 +5658,12 @@ for ac_func in \
|
|||
|
||||
do
|
||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||
echo "configure:5619: checking for $ac_func" >&5
|
||||
echo "configure:5662: checking for $ac_func" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5624 "configure"
|
||||
#line 5667 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
|
@ -5643,7 +5686,7 @@ $ac_func();
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:5647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:5690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_$ac_func=yes"
|
||||
else
|
||||
|
@ -5724,17 +5767,17 @@ for ac_hdr in \
|
|||
do
|
||||
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
|
||||
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
|
||||
echo "configure:5728: checking for $ac_hdr" >&5
|
||||
echo "configure:5771: checking for $ac_hdr" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5733 "configure"
|
||||
#line 5776 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <$ac_hdr>
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:5738: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:5781: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
|
||||
if test -z "$ac_err"; then
|
||||
rm -rf conftest*
|
||||
|
@ -5761,12 +5804,12 @@ fi
|
|||
done
|
||||
|
||||
echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
|
||||
echo "configure:5765: checking whether stat file-mode macros are broken" >&5
|
||||
echo "configure:5808: checking whether stat file-mode macros are broken" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5770 "configure"
|
||||
#line 5813 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
@ -5819,12 +5862,12 @@ fi
|
|||
|
||||
|
||||
echo $ac_n "checking for working const""... $ac_c" 1>&6
|
||||
echo "configure:5823: checking for working const" >&5
|
||||
echo "configure:5866: checking for working const" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5828 "configure"
|
||||
#line 5871 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() {
|
||||
|
@ -5873,7 +5916,7 @@ ccp = (char const *const *) p;
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:5877: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:5920: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_c_const=yes
|
||||
else
|
||||
|
@ -5894,21 +5937,21 @@ EOF
|
|||
fi
|
||||
|
||||
echo $ac_n "checking for inline""... $ac_c" 1>&6
|
||||
echo "configure:5898: checking for inline" >&5
|
||||
echo "configure:5941: checking for inline" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
ac_cv_c_inline=no
|
||||
for ac_kw in inline __inline__ __inline; do
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5905 "configure"
|
||||
#line 5948 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() {
|
||||
} int $ac_kw foo() {
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:5912: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:5955: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_c_inline=$ac_kw; break
|
||||
else
|
||||
|
@ -5934,12 +5977,12 @@ EOF
|
|||
esac
|
||||
|
||||
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
|
||||
echo "configure:5938: checking for ANSI C header files" >&5
|
||||
echo "configure:5981: checking for ANSI C header files" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5943 "configure"
|
||||
#line 5986 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
@ -5947,7 +5990,7 @@ else
|
|||
#include <float.h>
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:5951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:5994: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
|
||||
if test -z "$ac_err"; then
|
||||
rm -rf conftest*
|
||||
|
@ -5964,7 +6007,7 @@ rm -f conftest*
|
|||
if test $ac_cv_header_stdc = yes; then
|
||||
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5968 "configure"
|
||||
#line 6011 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <string.h>
|
||||
EOF
|
||||
|
@ -5982,7 +6025,7 @@ fi
|
|||
if test $ac_cv_header_stdc = yes; then
|
||||
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 5986 "configure"
|
||||
#line 6029 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdlib.h>
|
||||
EOF
|
||||
|
@ -6003,7 +6046,7 @@ if test "$cross_compiling" = yes; then
|
|||
:
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6007 "configure"
|
||||
#line 6050 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <ctype.h>
|
||||
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
|
||||
|
@ -6014,7 +6057,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
|
|||
exit (0); }
|
||||
|
||||
EOF
|
||||
if { (eval echo configure:6018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:6061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
:
|
||||
else
|
||||
|
@ -6038,12 +6081,12 @@ EOF
|
|||
fi
|
||||
|
||||
echo $ac_n "checking for size_t""... $ac_c" 1>&6
|
||||
echo "configure:6042: checking for size_t" >&5
|
||||
echo "configure:6085: checking for size_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6047 "configure"
|
||||
#line 6090 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
|
@ -6071,7 +6114,7 @@ EOF
|
|||
fi
|
||||
|
||||
echo $ac_n "checking size of long long""... $ac_c" 1>&6
|
||||
echo "configure:6075: checking size of long long" >&5
|
||||
echo "configure:6118: checking size of long long" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -6079,7 +6122,7 @@ else
|
|||
ac_cv_sizeof_long_long=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6083 "configure"
|
||||
#line 6126 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdio.h>
|
||||
main()
|
||||
|
@ -6090,7 +6133,7 @@ main()
|
|||
exit(0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:6094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:6137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_sizeof_long_long=`cat conftestval`
|
||||
else
|
||||
|
@ -6112,12 +6155,12 @@ EOF
|
|||
|
||||
|
||||
echo $ac_n "checking "whether we can use re-entrant gethostbyname_r Linux style"""... $ac_c" 1>&6
|
||||
echo "configure:6116: checking "whether we can use re-entrant gethostbyname_r Linux style"" >&5
|
||||
echo "configure:6159: checking "whether we can use re-entrant gethostbyname_r Linux style"" >&5
|
||||
if eval "test \"`echo '$''{'wine_cv_linux_gethostbyname_r_6'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6121 "configure"
|
||||
#line 6164 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <netdb.h>
|
||||
|
@ -6138,7 +6181,7 @@ int main() {
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
wine_cv_linux_gethostbyname_r_6=yes
|
||||
else
|
||||
|
@ -6164,12 +6207,12 @@ EOF
|
|||
if test "$ac_cv_header_linux_joystick_h" = "yes"
|
||||
then
|
||||
echo $ac_n "checking "whether linux/joystick.h uses the Linux 2.2+ API"""... $ac_c" 1>&6
|
||||
echo "configure:6168: checking "whether linux/joystick.h uses the Linux 2.2+ API"" >&5
|
||||
echo "configure:6211: checking "whether linux/joystick.h uses the Linux 2.2+ API"" >&5
|
||||
if eval "test \"`echo '$''{'wine_cv_linux_joystick_22_api'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6173 "configure"
|
||||
#line 6216 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
|
@ -6184,7 +6227,7 @@ int main() {
|
|||
/*empty*/
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
wine_cv_linux_joystick_22_api=yes
|
||||
else
|
||||
|
@ -6211,12 +6254,12 @@ fi
|
|||
if test "$ac_cv_header_sys_vfs_h" = "yes"
|
||||
then
|
||||
echo $ac_n "checking "whether sys/vfs.h defines statfs"""... $ac_c" 1>&6
|
||||
echo "configure:6215: checking "whether sys/vfs.h defines statfs"" >&5
|
||||
echo "configure:6258: checking "whether sys/vfs.h defines statfs"" >&5
|
||||
if eval "test \"`echo '$''{'wine_cv_sys_vfs_has_statfs'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6220 "configure"
|
||||
#line 6263 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -6233,7 +6276,7 @@ int main() {
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
wine_cv_sys_vfs_has_statfs=yes
|
||||
else
|
||||
|
@ -6260,12 +6303,12 @@ fi
|
|||
if test "$ac_cv_header_sys_statfs_h" = "yes"
|
||||
then
|
||||
echo $ac_n "checking "whether sys/statfs.h defines statfs"""... $ac_c" 1>&6
|
||||
echo "configure:6264: checking "whether sys/statfs.h defines statfs"" >&5
|
||||
echo "configure:6307: checking "whether sys/statfs.h defines statfs"" >&5
|
||||
if eval "test \"`echo '$''{'wine_cv_sys_statfs_has_statfs'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6269 "configure"
|
||||
#line 6312 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -6280,7 +6323,7 @@ int main() {
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6284: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6327: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
wine_cv_sys_statfs_has_statfs=yes
|
||||
else
|
||||
|
@ -6307,12 +6350,12 @@ fi
|
|||
if test "$ac_cv_header_sys_mount_h" = "yes"
|
||||
then
|
||||
echo $ac_n "checking "whether sys/mount.h defines statfs"""... $ac_c" 1>&6
|
||||
echo "configure:6311: checking "whether sys/mount.h defines statfs"" >&5
|
||||
echo "configure:6354: checking "whether sys/mount.h defines statfs"" >&5
|
||||
if eval "test \"`echo '$''{'wine_cv_sys_mount_has_statfs'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6316 "configure"
|
||||
#line 6359 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -6327,7 +6370,7 @@ int main() {
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
wine_cv_sys_mount_has_statfs=yes
|
||||
else
|
||||
|
@ -6353,7 +6396,7 @@ fi
|
|||
|
||||
|
||||
echo $ac_n "checking "for statfs.f_bfree"""... $ac_c" 1>&6
|
||||
echo "configure:6357: checking "for statfs.f_bfree"" >&5
|
||||
echo "configure:6400: checking "for statfs.f_bfree"" >&5
|
||||
if eval "test \"`echo '$''{'wine_cv_statfs_bfree'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -6362,7 +6405,7 @@ else
|
|||
wine_cv_statfs_bfree=no
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6366 "configure"
|
||||
#line 6409 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -6389,7 +6432,7 @@ int main() {
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6393: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6436: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
wine_cv_statfs_bfree=yes
|
||||
else
|
||||
|
@ -6413,7 +6456,7 @@ EOF
|
|||
fi
|
||||
|
||||
echo $ac_n "checking "for statfs.f_bavail"""... $ac_c" 1>&6
|
||||
echo "configure:6417: checking "for statfs.f_bavail"" >&5
|
||||
echo "configure:6460: checking "for statfs.f_bavail"" >&5
|
||||
if eval "test \"`echo '$''{'wine_cv_statfs_bavail'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -6422,7 +6465,7 @@ else
|
|||
wine_cv_statfs_bavail=no
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6426 "configure"
|
||||
#line 6469 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -6449,7 +6492,7 @@ int main() {
|
|||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6496: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
wine_cv_statfs_bavail=yes
|
||||
else
|
||||
|
@ -6474,12 +6517,12 @@ fi
|
|||
|
||||
|
||||
echo $ac_n "checking "for msg_accrights in struct msghdr"""... $ac_c" 1>&6
|
||||
echo "configure:6478: checking "for msg_accrights in struct msghdr"" >&5
|
||||
echo "configure:6521: checking "for msg_accrights in struct msghdr"" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_c_msg_accrights'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6483 "configure"
|
||||
#line 6526 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
@ -6487,7 +6530,7 @@ int main() {
|
|||
struct msghdr hdr; hdr.msg_accrights=0
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_c_msg_accrights="yes"
|
||||
else
|
||||
|
@ -6510,12 +6553,12 @@ fi
|
|||
|
||||
|
||||
echo $ac_n "checking "for sun_len in struct sockaddr_un"""... $ac_c" 1>&6
|
||||
echo "configure:6514: checking "for sun_len in struct sockaddr_un"" >&5
|
||||
echo "configure:6557: checking "for sun_len in struct sockaddr_un"" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_c_sun_len'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6519 "configure"
|
||||
#line 6562 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
@ -6524,7 +6567,7 @@ int main() {
|
|||
static struct sockaddr_un addr; addr.sun_len = 1
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:6528: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:6571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_c_sun_len="yes"
|
||||
else
|
||||
|
@ -6547,12 +6590,12 @@ fi
|
|||
|
||||
|
||||
echo $ac_n "checking "whether we need to define __i386__"""... $ac_c" 1>&6
|
||||
echo "configure:6551: checking "whether we need to define __i386__"" >&5
|
||||
echo "configure:6594: checking "whether we need to define __i386__"" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_cpp_def_i386'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 6556 "configure"
|
||||
#line 6599 "configure"
|
||||
#include "confdefs.h"
|
||||
#if (defined(i386) || defined(__i386)) && !defined(__i386__)
|
||||
yes
|
||||
|
|
15
configure.in
15
configure.in
|
@ -782,6 +782,21 @@ then
|
|||
AC_DEFINE(BITFIELDS_BIGENDIAN)
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK( "whether unaligned memory access is allowed", wine_cv_allow_unaligned_access,
|
||||
[AC_TRY_RUN([
|
||||
long volatile test[2];
|
||||
main()
|
||||
{
|
||||
long volatile *ua = (long volatile *)((char *)test + 1);
|
||||
*ua = 0;
|
||||
exit(0);
|
||||
} ], wine_cv_allow_unaligned_access=yes, wine_cv_allow_unaligned_access=no,
|
||||
wine_cv_allow_unaligned_access=no ) ])
|
||||
if test "$wine_allow_unaligned_access" = "yes"
|
||||
then
|
||||
AC_DEFINE(ALLOW_UNALIGNED_ACCESS)
|
||||
fi
|
||||
|
||||
|
||||
dnl **** Check for functions ****
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
* <presently under construction - contact hunnise@nortelnetworks.com>
|
||||
*
|
||||
*/
|
||||
#include "wine/port.h"
|
||||
#include "windef.h"
|
||||
#include "winerror.h"
|
||||
#include "winbase.h"
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <stdlib.h> /* abs() */
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include "config.h"
|
||||
#include "winbase.h"
|
||||
#include "windef.h"
|
||||
#include "winerror.h"
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "winbase.h"
|
||||
#include "wine/winbase16.h"
|
||||
#include "winnls.h"
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
/* Define if bitfields are bigendian */
|
||||
#undef BITFIELDS_BIGENDIAN
|
||||
|
||||
/* Define if unaligned memory access is allowed */
|
||||
#undef ALLOW_UNALIGNED_ACCESS
|
||||
|
||||
/* Define if .type asm directive must be inside a .def directive */
|
||||
#undef NEED_TYPE_IN_DEF
|
||||
|
||||
|
|
|
@ -50,6 +50,9 @@
|
|||
/* Define if bitfields are bigendian */
|
||||
#undef BITFIELDS_BIGENDIAN
|
||||
|
||||
/* Define if unaligned memory access is allowed */
|
||||
#undef ALLOW_UNALIGNED_ACCESS
|
||||
|
||||
/* Define if .type asm directive must be inside a .def directive */
|
||||
#undef NEED_TYPE_IN_DEF
|
||||
|
||||
|
|
|
@ -166,33 +166,6 @@ typedef LRESULT CALLBACK (*WNDPROC)(HWND,UINT,WPARAM,LPARAM);
|
|||
#define ADD_LOWORD(dw,val) ((dw) = ((dw) & 0xffff0000) | LOWORD((DWORD)(dw)+(val)))
|
||||
#endif
|
||||
|
||||
/* Macros to access unaligned or wrong-endian WORDs and DWORDs. */
|
||||
/* Note: These macros are semantically broken, at least for wrc. wrc
|
||||
spits out data in the platform's current binary format, *not* in
|
||||
little-endian format. These macros are used throughout the resource
|
||||
code to load and store data to the resources. Since it is unlikely
|
||||
that we'll ever be dealing with little-endian resource data, the
|
||||
byte-swapping nature of these macros has been disabled. Rather than
|
||||
remove the use of these macros from the resource loading code, the
|
||||
macros have simply been disabled. In the future, someone may want
|
||||
to reactivate these macros for other purposes. In that case, the
|
||||
resource code will have to be modified to use different macros. */
|
||||
|
||||
#if 1
|
||||
#define PUT_WORD(ptr,w) (*(WORD *)(ptr) = (w))
|
||||
#define GET_WORD(ptr) (*(WORD *)(ptr))
|
||||
#define PUT_DWORD(ptr,dw) (*(DWORD *)(ptr) = (dw))
|
||||
#define GET_DWORD(ptr) (*(DWORD *)(ptr))
|
||||
#else
|
||||
#define PUT_WORD(ptr,w) (*(BYTE *)(ptr) = LOBYTE(w), \
|
||||
*((BYTE *)(ptr) + 1) = HIBYTE(w))
|
||||
#define GET_WORD(ptr) ((WORD)(*(BYTE *)(ptr) | \
|
||||
(WORD)(*((BYTE *)(ptr)+1) << 8)))
|
||||
#define PUT_DWORD(ptr,dw) (PUT_WORD((ptr),LOWORD(dw)), \
|
||||
PUT_WORD((WORD *)(ptr)+1,HIWORD(dw)))
|
||||
#define GET_DWORD(ptr) ((DWORD)(GET_WORD(ptr) | \
|
||||
((DWORD)GET_WORD((WORD *)(ptr)+1) << 16)))
|
||||
#endif /* 1 */
|
||||
|
||||
/* min and max macros */
|
||||
#define __max(a,b) (((a) > (b)) ? (a) : (b))
|
||||
|
|
|
@ -142,4 +142,55 @@ extern int wine_dlclose( void *handle, char *error, int errorsize );
|
|||
#define RTLD_GLOBAL 0x100
|
||||
#endif
|
||||
|
||||
|
||||
/* Macros to access unaligned or wrong-endian WORDs and DWORDs. */
|
||||
|
||||
#define PUT_WORD(ptr, w) (*(WORD *)(ptr) = (w))
|
||||
#define GET_WORD(ptr) (*(WORD *)(ptr))
|
||||
#define PUT_DWORD(ptr, d) (*(DWORD *)(ptr) = (d))
|
||||
#define GET_DWORD(ptr) (*(DWORD *)(ptr))
|
||||
|
||||
#define PUT_LE_WORD(ptr, w) \
|
||||
do { ((BYTE *)(ptr))[0] = LOBYTE(w); \
|
||||
((BYTE *)(ptr))[1] = HIBYTE(w); } while (0)
|
||||
#define GET_LE_WORD(ptr) \
|
||||
MAKEWORD( ((BYTE *)(ptr))[0], \
|
||||
((BYTE *)(ptr))[1] )
|
||||
#define PUT_LE_DWORD(ptr, d) \
|
||||
do { PUT_LE_WORD(&((WORD *)(ptr))[0], LOWORD(d)); \
|
||||
PUT_LE_WORD(&((WORD *)(ptr))[1], HIBYTE(d)); } while (0)
|
||||
#define GET_LE_DWORD(ptr) \
|
||||
((DWORD)MAKELONG( GET_LE_WORD(&((WORD *)(ptr))[0]), \
|
||||
GET_LE_WORD(&((WORD *)(ptr))[1]) ))
|
||||
|
||||
#define PUT_BE_WORD(ptr, w) \
|
||||
do { ((BYTE *)(ptr))[1] = LOBYTE(w); \
|
||||
((BYTE *)(ptr))[0] = HIBYTE(w); } while (0)
|
||||
#define GET_BE_WORD(ptr) \
|
||||
MAKEWORD( ((BYTE *)(ptr))[1], \
|
||||
((BYTE *)(ptr))[0] )
|
||||
#define PUT_BE_DWORD(ptr, d) \
|
||||
do { PUT_BE_WORD(&((WORD *)(ptr))[1], LOWORD(d)); \
|
||||
PUT_BE_WORD(&((WORD *)(ptr))[0], HIBYTE(d)); } while (0)
|
||||
#define GET_BE_DWORD(ptr) \
|
||||
((DWORD)MAKELONG( GET_BE_WORD(&((WORD *)(ptr))[1]), \
|
||||
GET_BE_WORD(&((WORD *)(ptr))[0]) ))
|
||||
|
||||
#if defined(ALLOW_UNALIGNED_ACCESS)
|
||||
#define PUT_UA_WORD(ptr, w) PUT_WORD(ptr, w)
|
||||
#define GET_UA_WORD(ptr) GET_WORD(ptr)
|
||||
#define PUT_UA_DWORD(ptr, d) PUT_DWORD(ptr, d)
|
||||
#define GET_UA_DWORD(ptr) GET_DWORD(ptr)
|
||||
#elif defined(WORDS_BIGENDIAN)
|
||||
#define PUT_UA_WORD(ptr, w) PUT_BE_WORD(ptr, w)
|
||||
#define GET_UA_WORD(ptr) GET_BE_WORD(ptr)
|
||||
#define PUT_UA_DWORD(ptr, d) PUT_BE_DWORD(ptr, d)
|
||||
#define GET_UA_DWORD(ptr) GET_BE_DWORD(ptr)
|
||||
#else
|
||||
#define PUT_UA_WORD(ptr, w) PUT_LE_WORD(ptr, w)
|
||||
#define GET_UA_WORD(ptr) GET_LE_WORD(ptr)
|
||||
#define PUT_UA_DWORD(ptr, d) PUT_LE_DWORD(ptr, d)
|
||||
#define GET_UA_DWORD(ptr) GET_LE_DWORD(ptr)
|
||||
#endif
|
||||
|
||||
#endif /* !defined(__WINE_WINE_PORT_H) */
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "wine/unicode.h"
|
||||
#include "windef.h"
|
||||
#include "winnls.h"
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <assert.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "wine/port.h"
|
||||
#include "wine/winbase16.h"
|
||||
#include "ntddk.h"
|
||||
#include "callback.h"
|
||||
|
@ -272,8 +273,8 @@ BOOL TASK_Create( NE_MODULE *pModule, UINT16 cmdShow, TEB *teb, LPCSTR cmdline,
|
|||
|
||||
pTask->pdb.int20 = 0x20cd;
|
||||
pTask->pdb.dispatcher[0] = 0x9a; /* ljmp */
|
||||
PUT_DWORD(&pTask->pdb.dispatcher[1], (DWORD)GetProcAddress16( GetModuleHandle16("KERNEL"),
|
||||
"DOS3Call" ));
|
||||
PUT_UA_DWORD(&pTask->pdb.dispatcher[1],
|
||||
(DWORD)GetProcAddress16( GetModuleHandle16("KERNEL"), "DOS3Call" ));
|
||||
pTask->pdb.savedint22 = INT_GetPMHandler( 0x22 );
|
||||
pTask->pdb.savedint23 = INT_GetPMHandler( 0x23 );
|
||||
pTask->pdb.savedint24 = INT_GetPMHandler( 0x24 );
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "wine/port.h"
|
||||
#include "windef.h"
|
||||
#include "winnls.h"
|
||||
#include "winerror.h"
|
||||
|
@ -59,7 +60,7 @@ static const char ENV_program_name[] = "C:\\WINDOWS\\SYSTEM\\KRNL386.EXE";
|
|||
/* Fill the extra bytes with the program name and stuff */
|
||||
#define FILL_EXTRA_ENV(p) \
|
||||
*(p) = '\0'; \
|
||||
PUT_WORD( (p) + 1, 1 ); \
|
||||
PUT_UA_WORD( (p) + 1, 1 ); \
|
||||
strcpy( (p) + 3, ENV_program_name );
|
||||
|
||||
STARTUPINFOA current_startupinfo =
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "config.h"
|
||||
#include "wine/winbase16.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "selectors.h"
|
||||
|
@ -682,6 +683,16 @@ static BOOL HEAP_ValidateFreeArena( SUBHEAP *subheap, ARENA_FREE *pArena )
|
|||
{
|
||||
char *heapEnd = (char *)subheap + subheap->size;
|
||||
|
||||
#if !defined(ALLOW_UNALIGNED_ACCESS)
|
||||
/* Check for unaligned pointers */
|
||||
if ( (long)pArena % sizeof(void *) != 0 )
|
||||
{
|
||||
ERR( "Heap %08lx: unaligned arena pointer %08lx\n",
|
||||
(DWORD)subheap->heap, (DWORD)pArena );
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Check magic number */
|
||||
if (pArena->magic != ARENA_FREE_MAGIC)
|
||||
{
|
||||
|
@ -766,6 +777,28 @@ static BOOL HEAP_ValidateInUseArena( SUBHEAP *subheap, ARENA_INUSE *pArena, BOOL
|
|||
{
|
||||
char *heapEnd = (char *)subheap + subheap->size;
|
||||
|
||||
#if !defined(ALLOW_UNALIGNED_ACCESS)
|
||||
/* Check for unaligned pointers */
|
||||
if ( (long)pArena % sizeof(void *) != 0 )
|
||||
{
|
||||
if ( quiet == NOISY )
|
||||
{
|
||||
ERR( "Heap %08lx: unaligned arena pointer %08lx\n",
|
||||
(DWORD)subheap->heap, (DWORD)pArena );
|
||||
if ( TRACE_ON(heap) )
|
||||
HEAP_Dump( subheap->heap );
|
||||
}
|
||||
else if ( WARN_ON(heap) )
|
||||
{
|
||||
WARN( "Heap %08lx: unaligned arena pointer %08lx\n",
|
||||
(DWORD)subheap->heap, (DWORD)pArena );
|
||||
if ( TRACE_ON(heap) )
|
||||
HEAP_Dump( subheap->heap );
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Check magic number */
|
||||
if (pArena->magic != ARENA_INUSE_MAGIC)
|
||||
{
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "wingdi.h"
|
||||
#include "wine/winuser16.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/port.h"
|
||||
#include "heap.h"
|
||||
#include "win.h"
|
||||
#include "controls.h"
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "wine/winuser16.h"
|
||||
#include "wine/winbase16.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/port.h"
|
||||
#include "controls.h"
|
||||
#include "heap.h"
|
||||
#include "win.h"
|
||||
|
|
Loading…
Reference in New Issue