ppc64 build failure - asm code - bswap

Conrad Meyer konrad at tylerc.org
Sun Sep 21 21:57:58 CEST 2008


Quoth David Timms:
> Hi, I think this was touched on a month ago, but not sure of resolution:
> =====
> 
http://buildsys.rpmfusion.org/logs/fedora-development-rpmfusion_free/936-gcube-0.4-4.fc10/ppc64/
> build.log:
> ...
> isopack.c:118: warning: ignoring return value of 'fread', declared with 
> attribute warn_unused_result
> isopack.c:145: warning: ignoring return value of 'fread', declared with 
> attribute warn_unused_result
> gcc -g -Wall -I/usr/include -I/usr/local/include -DASM_X86 
> -DENABLE_SOUND -DDEFAULT_COLOR_MODE=1 -O2 -g -pipe -Wall 
> -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
> --param=ssp-buffer-size=4 -m64 -mminimal-toc -fno-strict-aliasing    -c 
> -o thpview.o thpview.c
> gcc -g -Wall -I/usr/include -I/usr/local/include -DASM_X86 
> -DENABLE_SOUND -DDEFAULT_COLOR_MODE=1 -O2 -g -pipe -Wall 
> -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
> --param=ssp-buffer-size=4 -m64 -mminimal-toc -fno-strict-aliasing    -c 
> -o jpeg_tools.o jpeg_tools.c
> thpview.c: In function 'thp_write_jpeg_frame':
> thpview.c:137: warning: ignoring return value of 'fwrite', declared with 
> attribute warn_unused_result
> thpview.c: In function 'thp_write_audio_frame':
> thpview.c:158: warning: ignoring return value of 'fwrite', declared with 
> attribute warn_unused_result
> thpview.c: In function 'thp_extract_data':
> thpview.c:399: warning: format '%.8x' expects type 'unsigned int', but 
> argument 2 has type 'long int'
> thpview.c: In function 'main':
> thpview.c:517: warning: pointer targets in passing argument 1 of 
> 'thp_play_movie' differ in signedness
> thpview.c:510: warning: ignoring return value of 'fread', declared with 
> attribute warn_unused_result
> gcc -g -c -o ppc_disasm.o ppc_disasm.c
> {standard input}: Assembler messages:
> {standard input}:590: Error: Unrecognized opcode: `bswap'
> {standard input}:687: Error: Unrecognized opcode: `bswap'
> {standard input}:721: Error: Unrecognized opcode: `bswap'
> {standard input}:1092: Error: Unrecognized opcode: `bswap'
> {standard input}:1146: Error: Unrecognized opcode: `bswap'
> {standard input}:1186: Error: Unrecognized opcode: `bswap'
> {standard input}:1215: Error: Unrecognized opcode: `bswap'
> make: *** [isopack.o] Error 1
> make: *** Waiting for unfinished jobs....
> error: Bad exit status from /var/tmp/rpm-tmp.rGuH2u (%build)
> =====
> So it seems that bswap might not suit ppc64 hardware. If that is the 
> case then:
> # ppc64 build does not seem to support asm opcode bswap
> ExcludeArch: ppc64
> would seem appropriate an appropriate addition to the .spec. Does that 
> make sense ?
> 
> Note that it did build OK on i386|x86_64|ppc. I would have imagined that 
> ppc64 opcodes would be a superset of ppc, so there might be something 
> else going on ?
> 
> DaveT.

bswap is used for endian conversion (IIRC). Since i386 and x86_64 are little 
endian the code is probably for reading big endian data on i386/x86_64. PPC 
is big endian to begin with so maybe you can add a patch to #ifdef on an 
intel architecture around the inline asm? If it's used for something other 
than endian conversion ppc probably has a similar instruction, but it'd be 
best to rewrite it in C.

Regards,
-- 
Conrad Meyer <konrad at tylerc.org>




More information about the rpmfusion-developers mailing list