Sam Hocevar ha scritto:
> reopen 402950
> thanks
> 
>    I'm investigating #403398 but I'm unable to build your MPlayer with
> noopt/nostrip:
> 
> cc   -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE 
> -D_ISOC9X_SOURCE -I.. -I.. -I../libavutil -Wdeclaration-after-statement -Wall 
> -W -W -Wall -Wno-unused-parameter  -march=i586 -mtune=i586 -g -D_REENTRANT 
> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE 
> -I/usr/include/directfb -I/usr/include -I/usr/include/  -I/usr/include/SDL 
> -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/kde/artsc -pthread 
> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -I/usr/include 
> -I/usr/include/dvdnav -I/usr/include/freetype2 -I/usr/include 
> -I/usr/include/liveMedia -I/usr/include/UsageEnvironment 
> -I/usr/include/BasicUsageEnvironment -I/usr/include/groupsock 
> -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 
> -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
> -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12  
>   -c -o cabac.o cabac.c
> In file included from cabac.c:32:
> cabac.h:363: warning: 'inline' is not at beginning of declaration
> cabac.h: In function 'get_cabac_noinline':
> cabac.h:513: error: can't find a register in class 'GENERAL_REGS' while 
> reloading 'asm'
> make: *** [cabac.o] Error 1
> make: Leaving directory `/home/sam/mplayer/mplayer-1.0~rc1/libavcodec'
> 

thanks for reporting; I was kinda expecting this

  --some history

Googling around for
"can't find a register in class 'GENERAL_REGS' while reloading 'asm'"
I found that this is a hard problem , and that there is really no magic
workaround : different combinations of code/gcc options/architecture
will trigger or not trigger it

the best discussion I could find is in
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13850

conclusion: i386 simply cannot compile that asm w/o some optimization
parameters

 ---- some hints

./configure --enable-debug
is the "upstream recommended" way of compiling for debugging

but currently, in upstream 1.0rc1 , that fails as well, in file
libavcodec/h264.c

I then added a patch to libavcoded/Makefile to add
 OPTFLAGS = -O4 -ffast-math -fomit-frame-pointer
for that file only (and in i386 only)

fortunately , h264.c is the only file that fails that way;
so what I do to debug is:
 - I compile with DEB_BUILD_OPTIONS=debug
 - edit config.mak and delete -O2
 - delete .o of files I really need to debug, and call 'make mplayer'

 ---

as for this bug

I  implemented DEB_BUILD_OPTIONS=noopt  in debian/rules
so that no optimization of any kind is used

but in this case, there are many more files that will fail

my workaround is:
 debian/rules precompiles all failing packages with some minimal
optimization ; then calls 'make mplayer'

 I will add that file too ; may you please tell me if
$ cd libavcodec  && \
 make cabac.o  OPTFLAGS =" -O2 -ffast-math -fomit-frame-pointer"
works

a.


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to