Hello, (CC: James for some binutils insights. This is about #266958) I've attached the assembly source from failed build of qp_qtoi.c, which is the place the glibc build chokes on this time. It dies here: fqtoi %f52, %f60 st %f60, [%o4] which causes $ as -Av9 qp_qtoi.s qp_qtoi.s: Assembler messages: qp_qtoi.s:80: Error: Illegal operands: There are only 32 single precision f registers; [0-31] qp_qtoi.s:81: Error: Illegal operands: There are only 32 single precision f registers; [0-31] The gcc invocation is as follows (wrapped for legibility): gcc-3.3 -m64 ../sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c -c -std=gnu99 -D__USE_STRING_INLINES -O2 -O3 -Wall -Winline -Wstrict-prototypes -Wwrite-strings -fstrict-aliasing -g -g1 -pipe -fcall-used-g6 -fomit-frame-pointer -I../include -I. -I/home/joshk/glibc-2.3.2.ds1/build-tree/sparc-sparc64/soft-fp -I.. -I../libio -I/home/joshk/glibc-2.3.2.ds1/build-tree/sparc-sparc64 -I../sysdeps/sparc/sparc64/elf -I../linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64 -I../linuxthreads/sysdeps/unix/sysv/linux/sparc -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/sparc/sparc64 -I../linuxthreads/sysdeps/sparc -I../sysdeps/unix/sysv/linux/sparc/sparc64 -I../sysdeps/unix/sysv/linux/sparc -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/sparc -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/sparc/sparc64/fpu -I../sysdeps/sparc/sparc64 -I../sysdeps/wordsize-64 -I../sysdeps/ieee754/ldbl-128 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/sparc/sparc64/soft-fp -I../sysdeps/sparc/fpu -I../sysdeps/sparc -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /usr/lib/gcc-lib/sparc-linux/3.3.4/include -isystem /home/joshk/glibc-2.3.2.ds1/debian/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -o /home/joshk/glibc-2.3.2.ds1/build-tree/sparc-sparc64/soft-fp/qp_qtoi.o -MD -MP -MF /home/joshk/glibc-2.3.2.ds1/build-tree/sparc-sparc64/soft-fp/qp_qtoi.o.dt Relevant versions of things on this system: ii gcc-3.3 3.3.4-13 The GNU C compiler ii binutils 2.15-4 The GNU assembler, linker and binary utiliti Hope this helps. -- Joshua Kwan
.file "qp_qtoi.c" .file 1 "../sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c" .section ".debug_abbrev" .LLdebug_abbrev0: .section ".debug_info" .LLdebug_info0: .section ".debug_line" .LLdebug_line0: .section ".text" .LLtext0: .align 4 .align 32 .global _Qp_qtoi .type _Qp_qtoi, #function .proc 04 _Qp_qtoi: .LLFB3: .register %g2, #scratch .register %g3, #scratch .register %g6, #scratch !#PROLOGUE# 0 add %sp, -208, %sp .LLCFI0: !#PROLOGUE# 1 .LLBB2: .LLBB3: ldx [%o0], %g2 mov -1, %o5 mov %o0, %o3 srlx %o5, 16, %g1 .LLBE3: mov 0, %o4 .LLBB4: add %g2, %g2, %g4 and %g2, %g1, %g6 srlx %g2, 63, %g3 srlx %g4, 49, %g5 .LLBE4: stx %fsr,[%sp+2231] .LLBB5: srl %g3, 0, %o2 brz,pt %g5, .LL13 ldx [%o0+8], %o0 .LLBE5: srlx %o5, 49, %g3 cmp %g5, %g3 be,pn %xcc, .LL48 mov 1, %g4 sethi %hi(15360), %o5 sllx %g4, 48, %g2 xor %o5, -1023, %g1 or %g6, %g2, %g3 add %g5, %g1, %g5 srlx %o0, 61, %o5 sllx %g3, 3, %g4 sllx %o0, 3, %o0 or %g4, %o5, %g6 .LL55: brlz,pn %g5, .LL102 cmp %g5, 30 ble,pt %xcc, .LL66 cmp %g5, 115 sethi %hi(-2147483648), %g1 .LL104: or %o4, 16, %o4 .LL114: add %o2, %g1, %g6 add %g6, -1, %g3 .LL53: ldx [%sp+2231], %g5 sra %o4, 0, %g6 srlx %g5, 23, %o0 and %o0, %g6, %o2 brz,pt %o2, .LL96 sll %o4, 5, %g1 add %sp, 2227, %o4 .LLBB6: ldd [%o3], %f52 ldd [%o3+8], %f54 fqtoi %f52, %f60 st %f60, [%o4] ba,pt %xcc, .LL95 lduw [%sp+2227], %g3 .LL96: .LLBE6: and %g5, -32, %o5 sra %g1, 0, %g5 or %o5, %g5, %g4 or %g4, %g6, %o3 stx %o3, [%sp+2231] ldx [%sp+2231],%fsr ba,pt %xcc, .LL103 sra %g3, 0, %o0 .LL66: ble,pt %xcc, .LL71 cmp %g5, 114 add %g5, -115, %g3 add %g5, -115, %g4 cmp %g4, 63 ble,pt %xcc, .LL77 sllx %o0, %g3, %o0 mov 0, %o0 .LL77: mov %o0, %g3 .LL105: sub %g0, %o0, %g6 ba,pt %xcc, .LL53 movrne %o2, %g6, %g3 .LL71: bg,pt %xcc, .LL105 mov %o0, %g3 mov 114, %g2 sub %g2, %g5, %o5 cmp %o5, 63 bg,pt %xcc, .LL80 add %g5, 14, %g4 add %g5, -50, %g3 mov 114, %g1 sub %g1, %g5, %g2 mov 0, %o5 sllx %o0, %g3, %g5 movrne %g5, 1, %o5 sllx %g6, %g3, %g4 srlx %o0, %g2, %g1 srlx %g6, %g2, %g6 or %g4, %g1, %g5 or %o5, %g5, %o0 .LL79: and %o0, 1, %o5 or %o4, 1, %g3 srlx %o0, 1, %g1 sllx %g6, 63, %g5 movrne %o5, %g3, %o4 ba,pt %xcc, .LL77 or %g1, %g5, %o0 .LL80: mov 50, %o5 sllx %g6, %g4, %g2 mov 0, %g4 or %g2, %o0, %g3 sub %o5, %g5, %o0 movrne %g3, 1, %g4 srlx %g6, %o0, %o5 mov 0, %g6 ba,pt %xcc, .LL79 or %g4, %o5, %o0 .LL102: or %o4, 1, %o4 ba,pt %xcc, .LL53 mov 0, %g3 .LL48: or %g6, %o0, %o5 brz,pt %o5, .LL104 sethi %hi(-2147483648), %g1 srlx %g6, 47, %g2 and %g2, 1, %o0 brz,a,pt %o0, .LL104 mov 16, %o4 ba,pt %xcc, .LL114 or %o4, 16, %o4 .LL13: or %g6, %o0, %g3 brz,pt %g3, .LL53 mov 0, %g3 .LLBB7: .LLBB8: brz,pt %g6, .LL17 srlx %o5, 32, %g3 .LLBE8: .LLBB9: mov %g6, %g2 cmp %g6, %g3 bleu,pt %xcc, .LL20 mov 63, %g4 srlx %g6, 32, %g4 cmp %g6, %g3 movgu %xcc, %g4, %g2 mov 31, %g4 .LL20: srlx %o5, 48, %g3 cmp %g2, %g3 bleu,pt %xcc, .LL106 cmp %g2, 255 srlx %g2, 16, %o5 cmp %g2, %g3 movgu %xcc, %o5, %g2 add %g4, -16, %g4 cmp %g2, 255 .LL106: bleu,pt %xcc, .LL107 and %g2, 240, %g3 srlx %g2, 8, %g2 add %g4, -8, %g4 and %g2, 240, %g3 .LL107: brz,pt %g3, .LL108 and %g2, 12, %o5 srlx %g2, 4, %g2 add %g4, -4, %g4 and %g2, 12, %o5 .LL108: brz,pt %o5, .LL109 and %g2, 2, %g3 srlx %g2, 2, %g2 add %g4, -2, %g4 and %g2, 2, %g3 .LL109: brnz,a,pt %g3, .LL16 add %g4, -1, %g4 .LL16: .LLBE9: add %g4, -15, %g4 add %g4, 3, %o5 cmp %o5, 63 bg,pt %xcc, .LL44 add %g4, -61, %g2 add %g4, 3, %g1 mov 61, %o5 sllx %g6, %g1, %g3 sub %o5, %g4, %g6 srlx %o0, %g6, %o5 sllx %o0, %g1, %o0 or %g3, %o5, %g6 .LL43: sub %g5, %g4, %g3 sethi %hi(15360), %g5 xor %g5, -1022, %g4 ba,pt %xcc, .LL55 add %g3, %g4, %g5 .LL44: sllx %o0, %g2, %g6 ba,pt %xcc, .LL43 mov 0, %o0 .LL17: .LLBB10: mov %o0, %g2 cmp %o0, %g3 bleu,pt %xcc, .LL33 mov 63, %g4 srlx %o0, 32, %g4 cmp %o0, %g3 movgu %xcc, %g4, %g2 mov 31, %g4 .LL33: srlx %o5, 48, %g3 cmp %g2, %g3 bleu,pt %xcc, .LL110 cmp %g2, 255 srlx %g2, 16, %o5 cmp %g2, %g3 movgu %xcc, %o5, %g2 add %g4, -16, %g4 cmp %g2, 255 .LL110: bleu,pt %xcc, .LL111 and %g2, 240, %g3 srlx %g2, 8, %g2 add %g4, -8, %g4 and %g2, 240, %g3 .LL111: brz,pt %g3, .LL112 and %g2, 12, %o5 srlx %g2, 4, %g2 add %g4, -4, %g4 and %g2, 12, %o5 .LL112: brz,pt %o5, .LL113 and %g2, 2, %g1 srlx %g2, 2, %g2 add %g4, -2, %g4 and %g2, 2, %g1 .LL113: mov 0, %g3 movrne %g1, 1, %g3 sub %g4, %g3, %g2 .LLBE10: ba,pt %xcc, .LL16 add %g2, 64, %g4 .LL95: .LLBE7: sra %g3, 0, %o0 .LL103: .LLBE2: retl sub %sp, -208, %sp .LLFE3: .size _Qp_qtoi, .-_Qp_qtoi .section ".debug_frame" .LLframe0: .uaword .LLECIE0-.LLSCIE0 .LLSCIE0: .uaword 0xffffffff .byte 0x1 .asciz "" .uleb128 0x1 .sleb128 -8 .byte 0xf .byte 0xc .uleb128 0xe .uleb128 0x7ff .align 8 .LLECIE0: .LLSFDE0: .uaword .LLEFDE0-.LLASFDE0 .LLASFDE0: .uaword .LLframe0 .uaxword .LLFB3 .uaxword .LLFE3-.LLFB3 .byte 0x4 .uaword .LLCFI0-.LLFB3 .byte 0xe .uleb128 0x8cf .align 8 .LLEFDE0: .section ".text" .LLetext0: .section ".debug_info" .uaword 0x46 .uahalf 0x2 .uaword .LLdebug_abbrev0 .byte 0x8 .uleb128 0x1 .uaxword .LLetext0 .uaxword .LLtext0 .uaword .LLC0 .uaword .LLC1 .uaword .LLC2 .byte 0x1 .uleb128 0x2 .byte 0x1 .uaword .LLC3 .byte 0x1 .byte 0x1c .byte 0x2 .uleb128 0x3 .uaword 0x29 .uaxword .LLFB3 .uaxword .LLFE3 .byte 0x1 .byte 0x5e .byte 0x0 .section ".debug_abbrev" .uleb128 0x1 .uleb128 0x11 .byte 0x1 .uleb128 0x12 .uleb128 0x1 .uleb128 0x11 .uleb128 0x1 .uleb128 0x3 .uleb128 0xe .uleb128 0x1b .uleb128 0xe .uleb128 0x25 .uleb128 0xe .uleb128 0x13 .uleb128 0xb .byte 0x0 .byte 0x0 .uleb128 0x2 .uleb128 0x2e .byte 0x0 .uleb128 0x3f .uleb128 0xc .uleb128 0x3 .uleb128 0xe .uleb128 0x3a .uleb128 0xb .uleb128 0x3b .uleb128 0xb .uleb128 0x20 .uleb128 0xb .byte 0x0 .byte 0x0 .uleb128 0x3 .uleb128 0x2e .byte 0x0 .uleb128 0x31 .uleb128 0x13 .uleb128 0x11 .uleb128 0x1 .uleb128 0x12 .uleb128 0x1 .uleb128 0x40 .uleb128 0xa .byte 0x0 .byte 0x0 .byte 0x0 .section ".debug_pubnames" .uaword 0x1b .uahalf 0x2 .uaword .LLdebug_info0 .uaword 0x4a .uaword 0x32 .asciz "_Qp_qtoi" .uaword 0x0 .section ".debug_aranges" .uaword 0x2c .uahalf 0x2 .uaword .LLdebug_info0 .byte 0x8 .byte 0x0 .uahalf 0x0 .uahalf 0x0 .uaxword .LLtext0 .uaxword .LLetext0-.LLtext0 .uaxword 0x0 .uaxword 0x0 .section .debug_str,"MS",@progbits,1 .LLC2: .asciz "GNU C 3.3.4 (Debian 1:3.3.4-13)" .LLC3: .asciz "_Qp_qtoi" .LLC0: .asciz "../sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c" .LLC1: .asciz "/home/joshk/glibc-2.3.2.ds1/build-tree/glibc-2.3.2/soft-fp" .section ".note.GNU-stack" .ident "GCC: (GNU) 3.3.4 (Debian 1:3.3.4-13)"
Attachment:
signature.asc
Description: Digital signature