From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18438 invoked by alias); 4 Apr 2002 15:16:10 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 18415 invoked from network); 4 Apr 2002 15:16:08 -0000 Received: from unknown (HELO kerberos.suse.cz) (195.47.106.10) by sources.redhat.com with SMTP; 4 Apr 2002 15:16:08 -0000 Received: from chimera.suse.cz (chimera.suse.cz [10.20.0.2]) by kerberos.suse.cz (SuSE SMTP server) with ESMTP id D701759D352 for ; Thu, 4 Apr 2002 17:16:07 +0200 (CEST) Received: from suse.cz (leviathan.suse.cz [10.20.1.56]) by chimera.suse.cz (8.11.0/8.11.0/SuSE Linux 8.11.0-0.4) with ESMTP id g34FG7f19255 for ; Thu, 4 Apr 2002 17:16:07 +0200 X-Authentication-Warning: chimera.suse.cz: Host leviathan.suse.cz [10.20.1.56] claimed to be suse.cz Message-ID: <3CAC6E35.8050302@suse.cz> Date: Thu, 04 Apr 2002 07:16:00 -0000 From: Michal Ludvig Organization: SuSE CR User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9+) Gecko/20020327 X-Accept-Language: cs, cz, en MIME-Version: 1.0 To: gdb Subject: discuss: How to print XMM registers on i386/x86-64 Content-Type: text/plain; charset=ISO-8859-2; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-04/txt/msg00048.txt.bz2 Hi all, current gdb has a problem with printing xmm registers on i386/x86-64 architectures. XMM regsters are of type builtin_type_v4sf. In 5.1.1 the output of 'comand info registers xmm0' was as follows: xmm0 0x00102030405060708090a0b0c0d0e0f0 Now in current mainline it's completely broken (with the same type): xmm0 {f = {0x0, 0x0, 0x0, 0x0}} \ {f = {5.82303983e-10, 2.77686634e+29, -1.16826016e-09, \ -5.56616044e+29}} If I change the type to builtin_type_v4si I get a more useful output: xmm0 {f = {0x30201000, 0x70605040, 0xb0a09080, 0xf0e0d0c0}} \ {f = {807407616, 1885360192, -1331654528, -253701952}} So my question is how to print it? We shouldn't treat XMM registers as 4xFP, because it can contain 1) two double precision floats, 2) four single precision floats, 3) from 16 bytes, 8 words, 4 double words, 2 quadwords or 1 double quadword (128b). For now gcc won't store more than one FP variable into each register, ie. we don't need to convert all parts to float. I propose to provide an output like it was in 5.1 and create a new command for exploring these registers from different type's point of view. For example 'show register xmm0 dw' would print each quarter in a decimal form (dw stands for doubleword), while 'show register xmm0 dfp' would print both halves of the register as double precision floats. We need a working XMM debugging on x86-64 arch, because there it is the default for FP. Thus I'd like to change the type of xmm registers to builtin_type_v4si for gdb-5.2 so that it would be at least somehow useful. In the current state it is not. What do you think about these propositions? Michal Ludvig -- * SuSE CR, s.r.o * mludvig@suse.cz * +420 2 9654 5373 * http://www.suse.cz