SDL2.spec.in
author Sam Lantinga <slouken@libsdl.org>
Thu, 16 May 2013 00:43:22 -0700
changeset 7180 3733e68edbc3
parent 6265 01bf72bcad1e
child 7222 2435b221d77d
permissions -rw-r--r--
Fixed bug 1846 - _allmul implementation in SDL_stdlib.c doesn't clean up the stack

Colin Barrett

I see this manifest itself (VS2012 x86) as:

"Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention."

in the first call to SDL_GetTicks in my application. The disassembly at the problem line is:

hires_now.QuadPart *= 1000;
00AD0792 push 0
00AD0794 push 3E8h
00AD0799 mov eax,dword ptr [ebp-10h]
00AD079C push eax
00AD079D mov ecx,dword ptr [hires_now]
00AD07A0 push ecx
00AD07A1 call _allmul (0AE7D40h)
00AD07A6 mov dword ptr [hires_now],eax
00AD07A9 mov dword ptr [ebp-10h],edx

Apparently _allmul should be popping the stack but isn't (other similar functions in SDL_stdlib.c - _alldiv and whatnot - DO pop the stack).

A 'ret 10h' at the end of _allmul appears to do the trick
slouken@0
     1
Summary: Simple DirectMedia Layer
slouken@6255
     2
Name: SDL2
slouken@1361
     3
Version: @SDL_VERSION@
icculus@1133
     4
Release: 1
icculus@1133
     5
Source: http://www.libsdl.org/release/%{name}-%{version}.tar.gz
slouken@0
     6
URL: http://www.libsdl.org/
slouken@5537
     7
License: zlib
slouken@0
     8
Group: System Environment/Libraries
icculus@1133
     9
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
slouken@0
    10
Prefix: %{_prefix}
icculus@1133
    11
%ifos linux
slouken@6265
    12
Provides: libSDL2-2.0.so.0
icculus@1133
    13
%endif
slouken@0
    14
slouken@1844
    15
%define __defattr %defattr(-,root,root)
slouken@1844
    16
%define __soext so
slouken@1844
    17
slouken@0
    18
%description
slouken@0
    19
This is the Simple DirectMedia Layer, a generic API that provides low
slouken@0
    20
level access to audio, keyboard, mouse, and display framebuffer across
slouken@0
    21
multiple platforms.
slouken@0
    22
slouken@0
    23
%package devel
slouken@0
    24
Summary: Libraries, includes and more to develop SDL applications.
slouken@0
    25
Group: Development/Libraries
icculus@1133
    26
Requires: %{name} = %{version}
slouken@0
    27
slouken@0
    28
%description devel
slouken@0
    29
This is the Simple DirectMedia Layer, a generic API that provides low
slouken@0
    30
level access to audio, keyboard, mouse, and display framebuffer across
slouken@0
    31
multiple platforms.
slouken@0
    32
slouken@0
    33
This is the libraries, include files and other resources you can use
slouken@0
    34
to develop SDL applications.
slouken@0
    35
slouken@0
    36
slouken@0
    37
%prep
slouken@0
    38
%setup -q 
slouken@0
    39
slouken@0
    40
%build
icculus@1133
    41
%ifos linux
slouken@5047
    42
CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --disable-video-directfb
icculus@1133
    43
%else
slouken@1588
    44
%configure
icculus@1133
    45
%endif
slouken@0
    46
make
slouken@0
    47
slouken@0
    48
%install
slouken@0
    49
rm -rf $RPM_BUILD_ROOT
icculus@1133
    50
%ifos linux
slouken@1390
    51
make install prefix=$RPM_BUILD_ROOT%{prefix} \
slouken@1390
    52
             bindir=$RPM_BUILD_ROOT%{_bindir} \
slouken@1390
    53
             libdir=$RPM_BUILD_ROOT%{_libdir} \
slouken@1390
    54
             includedir=$RPM_BUILD_ROOT%{_includedir} \
slouken@1390
    55
             datadir=$RPM_BUILD_ROOT%{_datadir} \
slouken@1390
    56
             mandir=$RPM_BUILD_ROOT%{_mandir}
icculus@1133
    57
%else
icculus@1133
    58
%makeinstall
icculus@1133
    59
%endif
slouken@0
    60
slouken@0
    61
%clean
slouken@0
    62
rm -rf $RPM_BUILD_ROOT
slouken@0
    63
slouken@0
    64
%files
icculus@1133
    65
%{__defattr}
slouken@0
    66
%doc README-SDL.txt COPYING CREDITS BUGS
icculus@1133
    67
%{_libdir}/lib*.%{__soext}.*
slouken@0
    68
slouken@0
    69
%files devel
slouken@1844
    70
%{__defattr}
slouken@3698
    71
%doc README README-SDL.txt COPYING CREDITS BUGS WhatsNew
icculus@1133
    72
%{_bindir}/*-config
icculus@1133
    73
%{_libdir}/lib*.a
icculus@1133
    74
%{_libdir}/lib*.la
icculus@1133
    75
%{_libdir}/lib*.%{__soext}
slouken@6265
    76
%{_includedir}/*/*.h
slouken@6265
    77
%{_libdir}/pkgconfig/*
slouken@1361
    78
%{_datadir}/aclocal/*
slouken@0
    79
slouken@0
    80
%changelog
slouken@6265
    81
* Sun Jan 22 2012 Sam Lantinga <slouken@libsdl.org>
slouken@6265
    82
- Updated for SDL 2.0
slouken@6265
    83
slouken@1844
    84
* Tue May 16 2006 Sam Lantinga <slouken@libsdl.org>
slouken@1844
    85
- Removed support for Darwin, due to build problems on ps2linux
slouken@1844
    86
icculus@1133
    87
* Mon Jan 03 2004 Anders Bjorklund <afb@algonet.se>
icculus@1133
    88
- Added support for Darwin, updated spec file
icculus@1133
    89
slouken@0
    90
* Wed Jan 19 2000 Sam Lantinga <slouken@libsdl.org>
slouken@0
    91
- Re-integrated spec file into SDL distribution
slouken@0
    92
- 'name' and 'version' come from configure 
slouken@0
    93
- Some of the documentation is devel specific
slouken@0
    94
- Removed SMP support from %build - it doesn't work with libtool anyway
slouken@0
    95
slouken@0
    96
* Tue Jan 18 2000 Hakan Tandogan <hakan@iconsult.com>
slouken@0
    97
- Hacked Mandrake sdl spec to build 1.1
slouken@0
    98
slouken@0
    99
* Sun Dec 19 1999 John Buswell <johnb@mandrakesoft.com>
slouken@0
   100
- Build Release
slouken@0
   101
slouken@0
   102
* Sat Dec 18 1999 John Buswell <johnb@mandrakesoft.com>
slouken@0
   103
- Add symlink for libSDL-1.0.so.0 required by sdlbomber
slouken@0
   104
- Added docs
slouken@0
   105
slouken@0
   106
* Thu Dec 09 1999 Lenny Cartier <lenny@mandrakesoft.com>
slouken@0
   107
- v 1.0.0
slouken@0
   108
slouken@0
   109
* Mon Nov  1 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
slouken@0
   110
- First spec file for Mandrake distribution.
slouken@0
   111
slouken@0
   112
# end of file