PDA

Ver la versión completa : SDL GP32: Warnings en Linux (Ubuntu / Debian)



D_Skywalk
05/09/2005, 12:12
Buenas de nuevo, vuelvo a la carga ahora desde linuxete :-D

Vereis es que me salen un par de warnings mientras compilo el rotozoom, supongo que no son importantes pero aqui van:


arm-elf-gcc -I/opt/gp32SDL/include/SDL -I/opt/gp32SDL/include -mtune=arm920 -march=armv4t -marm -mno-thumb-interwork -msoft-float -ffast-math -nostdlib -fno-common -ffreestanding -fno-builtin -fno-exceptions -mstructure-size-boundary=8 -fomit-frame-pointer -fstrict-aliasing -O6 -DGFXST -DGP32 -DGP32_LIBC -Wall -Wno-switch -DUSE_FIXED_POINT -M rotozoom.c > Makedepend
arm-elf-as -o crt0x_gp32.o crt0x_gp32.s
arm-elf-gcc -I/opt/gp32SDL/include/SDL -I/opt/gp32SDL/include -mtune=arm920 -march=armv4t -marm -mno-thumb-interwork -msoft-float -ffast-math -nostdlib -fno-common -ffreestanding -fno-builtin -fno-exceptions -mstructure-size-boundary=8 -fomit-frame-pointer -fstrict-aliasing -O6 -DGFXST -DGP32 -DGP32_LIBC -Wall -Wno-switch -DUSE_FIXED_POINT -c -o rotozoom.o rotozoom.c
In file included from /opt/gp32SDL/include/SDL/SDL_rotozoom.h:15,
from rotozoom.c:38:
/opt/gp32SDL/include/SDL/math-sll.h: In function `sllinv':
/opt/gp32SDL/include/SDL/math-sll.h:438: warning: use of cast expressions as lvalues is deprecated
rotozoom.c: In function `RotatePicture':
rotozoom.c:66: warning: 'zoomfx' might be used uninitialized in this function
rotozoom.c:66: warning: 'zoomfy' might be used uninitialized in this function
arm-elf-ld -Map rotozoom.map -nostartfiles --script arm-gp32bin.x -L/opt/gp32SDL/lib crt0x_gp32.o rotozoom.o -lSDL_gfx -lSDL_image -lSDL -lpng -ljpeg -lz -lc -lm -lgcc -o rotozoom.elf
arm-elf-objcopy -O binary rotozoom.elf rotozoom.gxb


Debo preocuparme? mi version de gcc es:

skywalker@yavin:~/desarrollo/SDL/rotozoom$ arm-elf-gcc --version
arm-elf-gcc (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Que la teneis disponible en mi web (http://gp32.dantoine.org), si quereis testearla ;-)

Un Saludo y si le hago un fixeo para que no quede tan feo, subo los cambios? :chupete:

Eskema
05/09/2005, 13:00
A mi tb me da warnings compilando cosas, tal vez sea q el port de sdl necesita pulirse un poco para la gp, pq si lo hago en guindous no me dice ni pio.
Saludos,

Gammenon
05/09/2005, 13:11
Saludos
Lo del zoomfx es porque es posible leer el valor de esas variables sin haberlas inicializado. Para solucionar se puede fijar unos valores por defecto al inicializarlos, como 0 por ejemplo. No se como va la logica del programa, asi que puede que sea un valor erroneo.
Lo del otro warning no puede darte ninguna respuesta porque no tengo el entorno aqui, cuando vuelva a casa a ver si me acuerdo de mirarlo.

Hasta pronto :)

D_Skywalk
05/09/2005, 14:16
Saludos
Lo del zoomfx es porque es posible leer el valor de esas variables sin haberlas inicializado. Para solucionar se puede fijar unos valores por defecto al inicializarlos, como 0 por ejemplo. No se como va la logica del programa, asi que puede que sea un valor erroneo.
Lo del otro warning no puede darte ninguna respuesta porque no tengo el entorno aqui, cuando vuelva a casa a ver si me acuerdo de mirarlo.

Hasta pronto :)

Ya los otros son muy simples, pero me referia mas bien a ese otro que en el code ves que convierte un signed en unsigned y por eso avisa...



static __inline__ sll sllinv(sll v)

{

int sgn = 0;

sll u;

ull s = -1; //0xFFFFFFFFFFFFFFFF; //-1;



/* Use positive numbers, or the approximation won't work */

if (v < SLL_CONST_0) {

v = sllneg(v);

sgn = 1;

}



/* An approximation - must be larger than the actual value */

for (u = v; u;
((ull)u) >>= 1)

s >>= 1;




Mi pregunta era si podiamos evitar de alguna forma el warning, sin tener que quitarnos la opcion de "Wall" ;)

Un Saludo :D

Gammenon
05/09/2005, 15:30
Ya veo ya... el warning te salta porque hacer un casting "por la izquierda" o algo asi esta obsoleto para ese compilador. Una opcion es hacer (creo, yo tengo experiencia con el VC++):

ull z = (ull)u;
for (u = v; u; z >>= 1)
{
s >>= 1;
}
Otra cosa es si esto tiene un impacto considerable en el rendimiento ;)

D_Skywalk
05/09/2005, 17:02
A ver que pensais de esto?


ull z;
for(z = v; z; z >>=1)
s >>= 1;

u = (sll) z;

Ya que si pongo:

((ull)u) = z;

Me da el mismo error:

/opt/gp32SDL/include/SDL/math-sll.h: In function `sllinv':
/opt/gp32SDL/include/SDL/math-sll.h:448: warning: use of cast expressions as lvalues is deprecated


Que basicamente creo que nos avisa que podriamos perder (parte d)el valor al hacer ese "casteo" :-

Un Saludo

Gammenon
05/09/2005, 17:13
Saludos de nuevo

Efectivamente se me olvido la parte de u = (sll)z, que sino la u permanece imperterrita a los cambios de z ;)

En cuanto al warning, el compilador te avisa que ya no ve con buenos ojos los casting tipo (int)u = z. Es un warning porque te lo acepta, pero es un aviso de que puede que en otras versiones del compilador ya de un error en ese caso.

Espero haber sido de ayuda :)