[MPlayer-users] is WMV8 still broken with gcc 3.2?

Goetz Waschk waschk at informatik.uni-rostock.de
Fri Aug 23 12:55:02 CEST 2002


Am Freitag, 23. August 2002, 12:21:54 Uhr MET, schrieb Arpi:
> and why is this x86 specific? every stack-based cpu has frame pointer...
Hi,

it seems a leaf function doesn't call other functions, or am I wrong?

This thing is handled different on x86 machines. To quote a mail found
by google at: http://compilers.iecc.com/comparch/article/99-10-049

 If the frame pointer is eliminated, then the frame pointer (base
pointer) is not stored next to the PC. There are two switches that
control this behavior:

-fomit-frame-pointer Try to eliminate all frame pointers
-momit-leaf-frame-pointer Only eliminate fp in leaf functions

Unlike many of the RISC targets, the frame pointer is not eliminated
by default on the x86, since the debugger can't deal with non-leaf
functions having no frame (the problem on the x86 is that it uses
pushes/pops in passing the arguments, so the stack pointer ebbs and
flows during the course of a function).


AFAIK this has changed in newer gcc versions, so
-momit-leaf-frame-pointer is enabled by default now, at least with
normal optimization options. This caused the broken loader with gcc
3.2 and the not broken with 2.9[56]. You can try to compile MPlayer
with gcc 2.95 and -momit-leaf-frame-pointer. Then the wmv8 files won't
play. 

CU
-- 
   Götz Waschk <> master of computer science  <> University of Rostock    
 http://wwwtec.informatik.uni-rostock.de/~waschk/waschk.asc for PGP key
                         --> Logout Fascism! <--




More information about the MPlayer-users mailing list