From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4303 invoked by alias); 1 Aug 2006 09:55:14 -0000 Received: (qmail 4291 invoked by uid 22791); 1 Aug 2006 09:55:09 -0000 X-Spam-Check-By: sourceware.org Received: from e5.ny.us.ibm.com (HELO e5.ny.us.ibm.com) (32.97.182.145) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 01 Aug 2006 09:55:01 +0000 Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e5.ny.us.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id k719suMS013394 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Tue, 1 Aug 2006 05:54:56 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay04.pok.ibm.com (8.13.6/NCO/VER7.0) with ESMTP id k719su06247714 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 1 Aug 2006 05:54:56 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id k719suoC008330 for ; Tue, 1 Aug 2006 05:54:56 -0400 Received: from imap.linux.ibm.com (imap.raleigh.ibm.com [9.37.253.145]) by d01av03.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id k719stmc008320; Tue, 1 Aug 2006 05:54:55 -0400 Received: by imap.linux.ibm.com (Postfix, from userid 48) id A250F45C033; Tue, 1 Aug 2006 05:54:55 -0400 (EDT) Received: from 9.181.133.162 ([9.181.133.162]) by imap.linux.ibm.com (Horde MIME library) with HTTP; Tue, 1 Aug 2006 05:54:55 -0400 Message-ID: <20060801055455.9dx55us8vkscw80g@imap.linux.ibm.com> Date: Tue, 01 Aug 2006 09:55:00 -0000 From: Wu Zhou To: Daniel Jacobowitz Cc: gdb-patches@sourceware.org Subject: Re: [RFC] decimal float point patch based on libdecnumber: gdb patch MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_2oh2ksjpp0ow" Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.1.1) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-08/txt/msg00006.txt.bz2 This message is in MIME format. --=_2oh2ksjpp0ow Content-Type: text/plain; charset=GB2312; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 2347 Hi Daniel, Thanks for your comment. Quoting Daniel Jacobowitz : > On Sun, Jul 23, 2006 at 01:47:58AM -0400, Wu Zhou wrote: >> My point is to keep these usage so as they are consistent with how >> flaot/double is handled. What is your idea on this? > > I think it would be more useful to search for all reference to decimal > float, than it would be to exactly parallel the float/double support. OK. I will buy your point. :-) The revised patch adopt this preferenc= e. >> But in big-endian machine, this might be not needed. I will try a test >> on ppc64. I made some modification to my patch. It now works on both x86=20=20 (little endian) and ppc64 (big endian) platforms. All 125 tests pass=20=20 on these two platforms. I didn't do any test on cross-debugging though. Here are some explanation to my revised patch, wishing that it can=20=20 clarfiy the situation somehow. I am now still use array of bytes (gdb_byte val[16]) to represent=20=20 decimal float in gdb. The reason is that we can't assume that the=20=20 gdb-building compiler supports the decimal extension to C language=20=20 standard. If we can, that will be much easier, we can just use that to=20=20 represent decimal float in gdb. The order of these bytes are now big-endian, i.e. the first byte is=20=20 the most significant one. But it is maken to be the same as the=20=20 endianess of the target through routine exchange_dfp (in dfp.c). If=20=20 the target is big-endian, no reversion is needed; if it is=20=20 little-endian, reversion is needed. This is done through the checking=20=20 of gdbarch_byte_order (current_gdbarch): static void exchange_dfp (const gdb_byte *valaddr, int len, gdb_byte *dec_val) { int index; if (gdbarch_byte_order (current_gdbarch) =3D=3D 1) for (index =3D 0; index < len; index++) dec_val[index] =3D valaddr[len - index - 1]; else for (index =3D 0; index < len; index++) dec_val[index] =3D valaddr[index]; return; } Maybe this can't support cross-debugging (I am not sure though). But=20=20 I am planning to take this into consideration. I have one question=20=20 first: which data structure is used to describe the host's byte-order=20=20 information? Anyone is kind to tell me? Attached below is the revised patch. Please review and comment. Thanks a l= ot! --=_2oh2ksjpp0ow Content-Type: text/x-patch; charset=UTF-8; name="dfp-0801.patch" Content-Disposition: attachment; filename="dfp-0801.patch" Content-Transfer-Encoding: quoted-printable Content-length: 57575 Index: expression.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/expression.h,v retrieving revision 1.18 diff -c -3 -p -r1.18 expression.h *** expression.h 17 Dec 2005 22:33:59 -0000 1.18 --- expression.h 1 Aug 2006 09:13:23 -0000 *************** *** 1,7 **** /* Definitions for expressions stored in reversed prefix form, for GDB. =20=20 ! Copyright (C) 1986, 1989, 1992, 1994, 2000, 2003, 2005 Free Software ! Foundation, Inc. =20=20 This file is part of GDB. =20=20 --- 1,7 ---- /* Definitions for expressions stored in reversed prefix form, for GDB. =20=20 ! Copyright (C) 1986, 1989, 1992, 1994, 2000, 2003, 2005, 2006 ! Free Software Foundation, Inc. =20=20 This file is part of GDB. =20=20 *************** enum exp_opcode *** 327,332 **** --- 327,337 ---- /* A F90 array range operator (for "exp:exp", "exp:", ":exp" and ":")= . */ OP_F90_RANGE, =20=20 + /* OP_DECFLOAT is followed by a type pointer in the next exp_element + and a dec long constant value in the following exp_element. + Then comes another OP_DECFLOAT. */ + OP_DECFLOAT, +=20 /* First extension operator. Individual language modules define extra operators they need as constants with values=20 OP_LANGUAGE_SPECIFIC0 + k, for k >=3D 0, using a separate=20 *************** union exp_element *** 354,359 **** --- 359,365 ---- struct symbol *symbol; LONGEST longconst; DOUBLEST doubleconst; + gdb_byte decfloatconst[16]; /* Really sizeof (union exp_element) characters (or less for the last element of a string). */ char string; Index: parser-defs.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/parser-defs.h,v retrieving revision 1.20 diff -c -3 -p -r1.20 parser-defs.h *** parser-defs.h 17 Dec 2005 22:34:01 -0000 1.20 --- parser-defs.h 1 Aug 2006 09:13:23 -0000 *************** *** 1,7 **** /* Parser definitions for GDB. =20=20 Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, ! 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. =20=20 Modified from expread.y by the Department of Computer Science at the State University of New York at Buffalo. --- 1,7 ---- /* Parser definitions for GDB. =20=20 Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, ! 1997, 1998, 1999, 2000, 2002, 2006 Free Software Foundation, Inc. =20=20 Modified from expread.y by the Department of Computer Science at the State University of New York at Buffalo. *************** extern void write_exp_elt_longcst (LONGE *** 121,126 **** --- 121,128 ---- =20=20 extern void write_exp_elt_dblcst (DOUBLEST); =20=20 + extern void write_exp_elt_decfloatcst (gdb_byte *); +=20 extern void write_exp_elt_type (struct type *); =20=20 extern void write_exp_elt_intern (struct internalvar *); Index: parse.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/parse.c,v retrieving revision 1.53 diff -c -3 -p -r1.53 parse.c *** parse.c 6 Jul 2006 14:00:48 -0000 1.53 --- parse.c 1 Aug 2006 09:13:24 -0000 *************** *** 1,7 **** /* Parse expressions for GDB. =20=20 Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, ! 1997, 1998, 1999, 2000, 2001, 2004, 2005 Free Software Foundation, Inc. =20=20 Modified from expread.y by the Department of Computer Science at the State University of New York at Buffalo, 1991. --- 1,8 ---- /* Parse expressions for GDB. =20=20 Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, ! 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2006 ! Free Software Foundation, Inc. =20=20 Modified from expread.y by the Department of Computer Science at the State University of New York at Buffalo, 1991. *************** void *** 191,197 **** write_exp_elt_opcode (enum exp_opcode expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); =20=20 tmp.opcode =3D expelt; =20=20 --- 192,197 ---- *************** void *** 202,208 **** write_exp_elt_sym (struct symbol *expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); =20=20 tmp.symbol =3D expelt; =20=20 --- 202,207 ---- *************** void *** 213,219 **** write_exp_elt_block (struct block *b) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); tmp.block =3D b; write_exp_elt (tmp); } --- 212,217 ---- *************** void *** 222,228 **** write_exp_elt_longcst (LONGEST expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); =20=20 tmp.longconst =3D expelt; =20=20 --- 220,225 ---- *************** void *** 233,239 **** write_exp_elt_dblcst (DOUBLEST expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); =20=20 tmp.doubleconst =3D expelt; =20=20 --- 230,235 ---- *************** write_exp_elt_dblcst (DOUBLEST expelt) *** 241,250 **** } =20=20 void write_exp_elt_type (struct type *expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); =20=20 tmp.type =3D expelt; =20=20 --- 237,257 ---- } =20=20 void + write_exp_elt_decfloatcst (gdb_byte expelt[16]) + { + union exp_element tmp; + int index; +=20 + for (index =3D 0; index < 16; index++) + tmp.decfloatconst[index] =3D expelt[index]; +=20 + write_exp_elt (tmp); + } +=20 + void write_exp_elt_type (struct type *expelt) { union exp_element tmp; =20=20 tmp.type =3D expelt; =20=20 *************** void *** 255,261 **** write_exp_elt_intern (struct internalvar *expelt) { union exp_element tmp; - memset (&tmp, 0, sizeof (union exp_element)); =20=20 tmp.internalvar =3D expelt; =20=20 --- 262,267 ---- *************** operator_length_standard (struct express *** 864,869 **** --- 870,876 ---- =20=20 case OP_LONG: case OP_DOUBLE: + case OP_DECFLOAT: case OP_VAR_VALUE: oplen =3D 4; break; Index: c-exp.y =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/c-exp.y,v retrieving revision 1.34 diff -c -3 -p -r1.34 c-exp.y *** c-exp.y 23 Feb 2006 18:43:41 -0000 1.34 --- c-exp.y 1 Aug 2006 09:13:24 -0000 *************** Boston, MA 02110-1301, USA. */ *** 53,58 **** --- 53,59 ---- #include "charset.h" #include "block.h" #include "cp-support.h" + #include "dfp.h" =20=20 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc= ), as well as gratuitiously global symbol names, so we can have multiple *************** void yyerror (char *); *** 131,136 **** --- 132,141 ---- DOUBLEST dval; struct type *type; } typed_val_float; + struct { + gdb_byte val[16]; + struct type *type; + } typed_val_decfloat; struct symbol *sym; struct type *tval; struct stoken sval; *************** static int parse_number (char *, int, in *** 163,168 **** --- 168,174 ---- =20=20 %token INT %token FLOAT + %token DECFLOAT =20=20 /* Both NAME and TYPENAME tokens represent symbols in the input, and both convey their data as strings. *************** exp : FLOAT *** 497,502 **** --- 503,515 ---- write_exp_elt_opcode (OP_DOUBLE); } ; =20=20 + exp : DECFLOAT + { write_exp_elt_opcode (OP_DECFLOAT); + write_exp_elt_type ($1.type); + write_exp_elt_decfloatcst ($1.val); + write_exp_elt_opcode (OP_DECFLOAT); } + ; +=20 exp : variable ; =20=20 *************** parse_number (p, len, parsed_float, puti *** 1080,1085 **** --- 1093,1132 ---- char saved_char =3D p[len]; =20=20 p[len] =3D 0; /* null-terminate the token */ +=20 + /* If it ends at "df", "dd" or "dl", take it as type of decimal flo= ating + point. Return DECFLOAT. */ +=20 + if (p[len - 2] =3D=3D 'd' && p[len - 1] =3D=3D 'f') + { + p[len - 2] =3D '\0'; + putithere->typed_val_decfloat.type =3D=20 + builtin_type (current_gdbarch)->builtin_decfloat; + decimal_from_string (putithere->typed_val_decfloat.val, 4, p); + p[len] =3D saved_char; + return (DECFLOAT); + } +=20 + if (p[len - 2] =3D=3D 'd' && p[len - 1] =3D=3D 'd') + { + p[len - 2] =3D '\0'; + putithere->typed_val_decfloat.type =3D=20 + builtin_type (current_gdbarch)->builtin_decdouble; + decimal_from_string (putithere->typed_val_decfloat.val, 8, p); + p[len] =3D saved_char; + return (DECFLOAT); + } +=20 + if (p[len - 2] =3D=3D 'd' && p[len - 1] =3D=3D 'l') + { + p[len - 2] =3D '\0'; + putithere->typed_val_decfloat.type =3D=20 + builtin_type (current_gdbarch)->builtin_declong; + decimal_from_string (putithere->typed_val_decfloat.val, 16, p); + p[len] =3D saved_char; + return (DECFLOAT); + } +=20 num =3D sscanf (p, DOUBLEST_SCAN_FORMAT "%s", &putithere->typed_val_float.dval, s); p[len] =3D saved_char; /* restore the input stream */ Index: c-lang.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/c-lang.c,v retrieving revision 1.39 diff -c -3 -p -r1.39 c-lang.c *** c-lang.c 17 Dec 2005 22:33:59 -0000 1.39 --- c-lang.c 1 Aug 2006 09:13:24 -0000 *************** *** 1,7 **** /* C language support routines for GDB, the GNU debugger. =20=20 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002, ! 2003, 2004, 2005 Free Software Foundation, Inc. =20=20 This file is part of GDB. =20=20 --- 1,7 ---- /* C language support routines for GDB, the GNU debugger. =20=20 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002, ! 2003, 2004, 2005, 2006 Free Software Foundation, Inc. =20=20 This file is part of GDB. =20=20 *************** c_create_fundamental_type (struct objfil *** 322,327 **** --- 322,342 ---- TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT, 0, "long double", objfile); break; + case FT_DECFLOAT: + type =3D init_type (TYPE_CODE_DECFLOAT, + 32 / 8, + 0, "decimal float", objfile); + break; + case FT_DBL_PREC_DECFLOAT: + type =3D init_type (TYPE_CODE_DECFLOAT, + 64 / 8, + 0, "decimal double", objfile); + break; + case FT_EXT_PREC_DECFLOAT: + type =3D init_type (TYPE_CODE_DECFLOAT, + 128 / 8, + 0, "decimal long double", objfile); + break; case FT_COMPLEX: type =3D init_type (TYPE_CODE_FLT, 2 * TARGET_FLOAT_BIT / TARGET_CHAR_BIT, Index: c-valprint.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/c-valprint.c,v retrieving revision 1.39 diff -c -3 -p -r1.39 c-valprint.c *** c-valprint.c 18 Jan 2006 21:24:19 -0000 1.39 --- c-valprint.c 1 Aug 2006 09:13:24 -0000 *************** c_val_print (struct type *type, const gd *** 433,445 **** =20=20 case TYPE_CODE_FLT: if (format) ! { ! print_scalar_formatted (valaddr + embedded_offset, type, format, 0, st= ream); ! } else ! { ! print_floating (valaddr + embedded_offset, type, stream); ! } break; =20=20 case TYPE_CODE_METHOD: --- 433,448 ---- =20=20 case TYPE_CODE_FLT: if (format) ! print_scalar_formatted (valaddr + embedded_offset, type, format, 0, stre= am); else ! print_floating (valaddr + embedded_offset, type, stream); ! break; !=20 ! case TYPE_CODE_DECFLOAT: ! if (format) ! print_scalar_formatted (valaddr + embedded_offset, type, format, 0, stre= am); ! else ! print_decimal_floating (valaddr + embedded_offset, type, stream); break; =20=20 case TYPE_CODE_METHOD: Index: dwarf2read.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/dwarf2read.c,v retrieving revision 1.201 diff -c -3 -p -r1.201 dwarf2read.c *** dwarf2read.c 24 Jul 2006 21:37:04 -0000 1.201 --- dwarf2read.c 1 Aug 2006 09:13:24 -0000 *************** struct dwarf2_per_objfile *** 180,189 **** /* A chain of compilation units that are currently read in, so that they can be freed later. */ struct dwarf2_per_cu_data *read_in_chain; -=20 - /* A flag indicating wether this objfile has a section loaded at a - VMA of 0. */ - int has_section_at_zero; }; =20=20 static struct dwarf2_per_objfile *dwarf2_per_objfile; --- 180,185 ---- *************** dwarf2_has_info (struct objfile *objfile *** 1113,1119 **** in. */ =20=20 static void ! dwarf2_locate_sections (bfd *abfd, asection *sectp, void *ignore_ptr) { if (strcmp (sectp->name, INFO_SECTION) =3D=3D 0) { --- 1109,1115 ---- in. */ =20=20 static void ! dwarf2_locate_sections (bfd *ignore_abfd, asection *sectp, void *ignore_p= tr) { if (strcmp (sectp->name, INFO_SECTION) =3D=3D 0) { *************** dwarf2_locate_sections (bfd *abfd, asect *** 1174,1183 **** dwarf2_per_objfile->ranges_size =3D bfd_get_section_size (sectp); dwarf_ranges_section =3D sectp; } -=20=20=20 - if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD) - && bfd_section_vma (abfd, sectp) =3D=3D 0) - dwarf2_per_objfile->has_section_at_zero =3D 1; } =20=20 /* Build a partial symbol table. */ --- 1170,1175 ---- *************** dwarf2_get_pc_bounds (struct die_info *d *** 3185,3191 **** labels are not in the output, so the relocs get a value of 0. If this is a discarded function, mark the pc bounds as invalid, so that GDB will ignore it. */ ! if (low =3D=3D 0 && !dwarf2_per_objfile->has_section_at_zero) return 0; =20=20 *lowpc =3D low; --- 3177,3183 ---- labels are not in the output, so the relocs get a value of 0. If this is a discarded function, mark the pc bounds as invalid, so that GDB will ignore it. */ ! if (low =3D=3D 0 && (bfd_get_file_flags (obfd) & HAS_RELOC) =3D=3D 0) return 0; =20=20 *lowpc =3D low; *************** read_base_type (struct die_info *die, st *** 4747,4752 **** --- 4739,4747 ---- case DW_ATE_complex_float: code =3D TYPE_CODE_COMPLEX; break; + case DW_ATE_decimal_float: + code =3D TYPE_CODE_DECFLOAT; + break; case DW_ATE_float: code =3D TYPE_CODE_FLT; break; *************** read_subrange_type (struct die_info *die *** 4867,4889 **** set_die_type (die, range_type, cu); } =20=20=20=20 - static void - read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu) - { - struct type *type; - struct attribute *attr; -=20 - if (die->type) - return; -=20 - /* For now, we only support the C meaning of an unspecified type: void.= */ -=20 - attr =3D dwarf2_attr (die, DW_AT_name, cu); - type =3D init_type (TYPE_CODE_VOID, 0, 0, attr ? DW_STRING (attr) : "", - cu->objfile); -=20 - set_die_type (die, type, cu); - } =20=20 /* Read a whole compilation unit into a linked list of dies. */ =20=20 --- 4862,4867 ---- *************** read_partial_die (struct partial_die_inf *** 5513,5519 **** if (has_low_pc_attr && has_high_pc_attr && part_die->lowpc < part_die->highpc && (part_die->lowpc !=3D 0 ! || dwarf2_per_objfile->has_section_at_zero)) part_die->has_pc_info =3D 1; return info_ptr; } --- 5491,5497 ---- if (has_low_pc_attr && has_high_pc_attr && part_die->lowpc < part_die->highpc && (part_die->lowpc !=3D 0 ! || (bfd_get_file_flags (abfd) & HAS_RELOC))) part_die->has_pc_info =3D 1; return info_ptr; } *************** read_type_die (struct die_info *die, str *** 7370,7378 **** case DW_TAG_base_type: read_base_type (die, cu); break; - case DW_TAG_unspecified_type: - read_unspecified_type (die, cu); - break; default: complaint (&symfile_complaints, _("unexpected tag in read_type_die:= '%s'"), dwarf_tag_name (die->tag)); --- 7348,7353 ---- *************** dwarf_base_type (int encoding, int size, *** 7517,7539 **** return type; case DW_ATE_complex_float: if (size =3D=3D 16) ! { ! type =3D dwarf2_fundamental_type (objfile, FT_DBL_PREC_COMPLEX, cu); ! } else ! { ! type =3D dwarf2_fundamental_type (objfile, FT_COMPLEX, cu); ! } return type; case DW_ATE_float: if (size =3D=3D 8) ! { ! type =3D dwarf2_fundamental_type (objfile, FT_DBL_PREC_FLOAT, cu); ! } else ! { ! type =3D dwarf2_fundamental_type (objfile, FT_FLOAT, cu); ! } return type; case DW_ATE_signed: switch (size) --- 7492,7514 ---- return type; case DW_ATE_complex_float: if (size =3D=3D 16) ! type =3D dwarf2_fundamental_type (objfile, FT_DBL_PREC_COMPLEX, cu); else ! type =3D dwarf2_fundamental_type (objfile, FT_COMPLEX, cu); return type; case DW_ATE_float: if (size =3D=3D 8) ! type =3D dwarf2_fundamental_type (objfile, FT_DBL_PREC_FLOAT, cu); else ! type =3D dwarf2_fundamental_type (objfile, FT_FLOAT, cu); ! return type; ! case DW_ATE_decimal_float: ! if (size =3D=3D 16) ! type =3D dwarf2_fundamental_type (objfile, FT_DBL_PREC_DECFLOAT, cu); ! else if (size =3D=3D 8) ! type =3D dwarf2_fundamental_type (objfile, FT_EXT_PREC_DECFLOAT, cu); ! else ! type =3D dwarf2_fundamental_type (objfile, FT_DECFLOAT, cu); return type; case DW_ATE_signed: switch (size) *************** static void *** 9332,9342 **** dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym, struct dwarf2_cu *cu) { ! if ((attr->form =3D=3D DW_FORM_data4 || attr->form =3D=3D DW_FORM_data8) ! /* ".debug_loc" may not exist at all, or the offset may be outside ! the section. If so, fall through to the complaint in the ! other branch. */ ! && DW_UNSND (attr) < dwarf2_per_objfile->loc_size) { struct dwarf2_loclist_baton *baton; =20=20 --- 9307,9313 ---- dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym, struct dwarf2_cu *cu) { ! if (attr->form =3D=3D DW_FORM_data4 || attr->form =3D=3D DW_FORM_data8) { struct dwarf2_loclist_baton *baton; =20=20 Index: eval.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/eval.c,v retrieving revision 1.63 diff -c -3 -p -r1.63 eval.c *** eval.c 25 Jul 2006 04:24:50 -0000 1.63 --- eval.c 1 Aug 2006 09:13:24 -0000 *************** *** 1,8 **** /* Evaluate expressions for GDB. =20=20 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005 Free ! Software Foundation, Inc. =20=20 This file is part of GDB. =20=20 --- 1,8 ---- /* Evaluate expressions for GDB. =20=20 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 ! Free Software Foundation, Inc. =20=20 This file is part of GDB. =20=20 *************** evaluate_struct_tuple (struct value *str *** 283,292 **** if (variantno < 0) { fieldno++; - /* Skip static fields. */ - while (fieldno < TYPE_NFIELDS (struct_type) - && TYPE_FIELD_STATIC_KIND (struct_type, fieldno)) - fieldno++; subfieldno =3D fieldno; if (fieldno >=3D TYPE_NFIELDS (struct_type)) error (_("too many initializers")); --- 283,288 ---- *************** evaluate_subexp_standard (struct type *e *** 451,456 **** --- 447,457 ---- return value_from_double (exp->elts[pc + 1].type, exp->elts[pc + 2].doubleconst); =20=20 + case OP_DECFLOAT: + (*pos) +=3D 3; + return value_from_decfloat (expect_type, exp->elts[pc + 1].type, + exp->elts[pc + 2].decfloatconst); +=20 case OP_VAR_VALUE: (*pos) +=3D 3; if (noside =3D=3D EVAL_SKIP) *************** evaluate_subexp_for_address (struct expr *** 2132,2138 **** enum exp_opcode op; int pc; struct symbol *var; - struct value *x; =20=20 pc =3D (*pos); op =3D exp->elts[pc].opcode; --- 2133,2138 ---- *************** evaluate_subexp_for_address (struct expr *** 2141,2164 **** { case UNOP_IND: (*pos)++; ! x =3D evaluate_subexp (NULL_TYPE, exp, pos, noside); !=20 ! /* We can't optimize out "&*" if there's a user-defined operator*. = */ ! if (unop_user_defined_p (op, x)) ! { ! x =3D value_x_unop (x, op, noside); ! if (noside =3D=3D EVAL_AVOID_SIDE_EFFECTS) ! { ! if (VALUE_LVAL (x) =3D=3D lval_memory) ! return value_zero (lookup_pointer_type (value_type (x)), ! not_lval); ! else ! error (_("Attempt to take address of non-lval")); ! } ! return value_addr (x); ! } !=20 ! return x; =20=20 case UNOP_MEMVAL: (*pos) +=3D 3; --- 2141,2147 ---- { case UNOP_IND: (*pos)++; ! return evaluate_subexp (NULL_TYPE, exp, pos, noside); =20=20 case UNOP_MEMVAL: (*pos) +=3D 3; *************** evaluate_subexp_for_address (struct expr *** 2197,2212 **** =20=20 default: default_case: - x =3D evaluate_subexp (NULL_TYPE, exp, pos, noside); if (noside =3D=3D EVAL_AVOID_SIDE_EFFECTS) { if (VALUE_LVAL (x) =3D=3D lval_memory) return value_zero (lookup_pointer_type (value_type (x)), not_lval); else error (_("Attempt to take address of non-lval")); } ! return value_addr (x); } } =20=20 --- 2180,2195 ---- =20=20 default: default_case: if (noside =3D=3D EVAL_AVOID_SIDE_EFFECTS) { + struct value *x =3D evaluate_subexp (NULL_TYPE, exp, pos, noside); if (VALUE_LVAL (x) =3D=3D lval_memory) return value_zero (lookup_pointer_type (value_type (x)), not_lval); else error (_("Attempt to take address of non-lval")); } ! return value_addr (evaluate_subexp (NULL_TYPE, exp, pos, noside)); } } =20=20 Index: gdbtypes.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/gdbtypes.h,v retrieving revision 1.65 diff -c -3 -p -r1.65 gdbtypes.h *** gdbtypes.h 1 Feb 2006 23:14:10 -0000 1.65 --- gdbtypes.h 1 Aug 2006 09:13:25 -0000 *************** struct block; *** 67,73 **** #define FT_UNSIGNED_BYTE 27 #define FT_TEMPLATE_ARG 28 =20=20 ! #define FT_NUM_MEMBERS 29 /* Highest FT_* above, plus one. */ =20=20 /* Some macros for char-based bitfields. */ =20=20 --- 67,78 ---- #define FT_UNSIGNED_BYTE 27 #define FT_TEMPLATE_ARG 28 =20=20 ! /* The following three fundamental types are for decimal floating point. = */ ! #define FT_DECFLOAT 29=09 ! #define FT_DBL_PREC_DECFLOAT 30 ! #define FT_EXT_PREC_DECFLOAT 31=09 !=20 ! #define FT_NUM_MEMBERS 32 /* Highest FT_* above, plus one. */ =20=20 /* Some macros for char-based bitfields. */ =20=20 *************** enum type_code *** 159,165 **** TYPE_CODE_TEMPLATE, /* C++ template */ TYPE_CODE_TEMPLATE_ARG, /* C++ template arg */ =20=20 ! TYPE_CODE_NAMESPACE /* C++ namespace. */ }; =20=20 /* For now allow source to use TYPE_CODE_CLASS for C++ classes, as an --- 164,172 ---- TYPE_CODE_TEMPLATE, /* C++ template */ TYPE_CODE_TEMPLATE_ARG, /* C++ template arg */ =20=20 ! TYPE_CODE_NAMESPACE, /* C++ namespace. */ !=20 ! TYPE_CODE_DECFLOAT /* Decimal floating point. */ }; =20=20 /* For now allow source to use TYPE_CODE_CLASS for C++ classes, as an *************** struct builtin_type *** 1005,1010 **** --- 1012,1020 ---- struct type *builtin_bool; struct type *builtin_long_long; struct type *builtin_unsigned_long_long; + struct type *builtin_decfloat; + struct type *builtin_decdouble; + struct type *builtin_declong; }; =20=20 /* Return the type table for the specified architecture. */ *************** extern struct type *builtin_type_complex *** 1028,1033 **** --- 1038,1046 ---- extern struct type *builtin_type_double_complex; extern struct type *builtin_type_string; extern struct type *builtin_type_bool; + extern struct type *builtin_type_decfloat; + extern struct type *builtin_type_decdouble; + extern struct type *builtin_type_declong; =20=20 /* Address/pointer types: */ /* (C) Language `pointer to data' type. Some target platforms use an Index: gdbtypes.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/gdbtypes.c,v retrieving revision 1.105 diff -c -3 -p -r1.105 gdbtypes.c *** gdbtypes.c 1 Mar 2006 19:34:46 -0000 1.105 --- gdbtypes.c 1 Aug 2006 09:13:25 -0000 *************** struct type *builtin_type_int128; *** 76,81 **** --- 76,87 ---- struct type *builtin_type_uint128; struct type *builtin_type_bool; =20=20 + /* The following three are about decimal floating point types, which are = now=20 + considered as potential extension to C99 standard. */=20 + struct type *builtin_type_decfloat; + struct type *builtin_type_decdouble; + struct type *builtin_type_declong; +=20 /* 128 bit long vector types */ struct type *builtin_type_v2_double; struct type *builtin_type_v4_float; *************** build_gdbtypes (void) *** 3379,3384 **** --- 3385,3405 ---- #if 0 TYPE_FLOATFORMAT (builtin_type_long_double) =3D TARGET_LONG_DOUBLE_FORM= AT; #endif +=20 + /* Builtin types for decimal floating point types. */ + builtin_type_decfloat =3D + init_type (TYPE_CODE_DECFLOAT, 32 / 8, + 0, + "decimal float", (struct objfile *) NULL); + builtin_type_decdouble =3D + init_type (TYPE_CODE_DECFLOAT, 64 / 8, + 0, + "decimal double", (struct objfile *) NULL); + builtin_type_declong =3D + init_type (TYPE_CODE_DECFLOAT, 128 / 8, + 0, + "decimal long double", (struct objfile *) NULL); +=20 builtin_type_complex =3D init_type (TYPE_CODE_COMPLEX, 2 * TARGET_FLOAT_BIT / TARGET_CHAR_BIT, 0, *************** gdbtypes_post_init (struct gdbarch *gdba *** 3604,3609 **** --- 3625,3645 ---- 0, "bool", (struct objfile *) NULL); =20=20 + /* The following three are about decimal floating point types, which ar= e=20 + 32-bits, 64-bits and 128-bits respectively. */ + builtin_type->builtin_decfloat =3D=20 + init_type (TYPE_CODE_DECFLOAT, 32 / 8, + 0, + "decimal float", (struct objfile *) NULL); + builtin_type->builtin_decdouble =3D + init_type (TYPE_CODE_DECFLOAT, 64 / 8, + 0, + "decimal double", (struct objfile *) NULL); + builtin_type->builtin_declong =3D + init_type (TYPE_CODE_DECFLOAT, 128 / 8, + 0, + "decimal long double", (struct objfile *) NULL); +=20 /* Pointer/Address types. */ =20=20 /* NOTE: on some targets, addresses and pointers are not necessarily *************** _initialize_gdbtypes (void) *** 3742,3747 **** --- 3778,3786 ---- DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_void_func_ptr); DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_CORE_ADDR); DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_bfd_vma); + DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_decfloat); + DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_decdouble); + DEPRECATED_REGISTER_GDBARCH_SWAP (builtin_type_declong); deprecated_register_gdbarch_swap (NULL, 0, build_gdbtypes); =20=20 /* Note: These types do not need to be swapped - they are target Index: value.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/value.h,v retrieving revision 1.92 diff -c -3 -p -r1.92 value.h *** value.h 13 Jul 2006 04:31:42 -0000 1.92 --- value.h 1 Aug 2006 09:13:25 -0000 *************** *** 1,7 **** /* Definitions for values of C expressions, for GDB. =20=20 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. =20=20 This file is part of GDB. --- 1,7 ---- /* Definitions for values of C expressions, for GDB. =20=20 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, ! 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. =20=20 This file is part of GDB. *************** extern LONGEST unpack_field_as_long (str *** 274,279 **** --- 274,282 ---- extern struct value *value_from_longest (struct type *type, LONGEST num); extern struct value *value_from_pointer (struct type *type, CORE_ADDR add= r); extern struct value *value_from_double (struct type *type, DOUBLEST num); + extern struct value *value_from_decfloat (struct type *expect_type,=20 + struct type *type, + gdb_byte decbytes[16]); extern struct value *value_from_string (char *string); =20=20 extern struct value *value_at (struct type *type, CORE_ADDR addr); *************** extern struct value *value_ind (struct v *** 325,332 **** =20=20 extern struct value *value_addr (struct value *arg1); =20=20 - extern struct value *value_ref (struct value *arg1); -=20 extern struct value *value_assign (struct value *toval, struct value *fromval); =20=20 --- 328,333 ---- *************** extern struct type *value_rtti_target_ty *** 369,376 **** extern struct value *value_full_object (struct value *, struct type *, in= t, int, int); =20=20 - extern struct value *value_cast_pointers (struct type *, struct value *); -=20 extern struct value *value_cast (struct type *type, struct value *arg2); =20=20 extern struct value *value_zero (struct type *type, enum lval_type lv); --- 370,375 ---- *************** extern void print_longest (struct ui_fil *** 473,478 **** --- 472,480 ---- extern void print_floating (const gdb_byte *valaddr, struct type *type, struct ui_file *stream); =20=20 + extern void print_decimal_floating (const gdb_byte *valaddr, struct type = *type, + struct ui_file *stream); +=20 extern int value_print (struct value *val, struct ui_file *stream, int fo= rmat, enum val_prettyprint pretty); =20=20 Index: value.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/value.c,v retrieving revision 1.36 diff -c -3 -p -r1.36 value.c *** value.c 31 Mar 2006 10:36:18 -0000 1.36 --- value.c 1 Aug 2006 09:13:25 -0000 *************** *** 37,42 **** --- 37,43 ---- #include "gdb_assert.h" #include "regcache.h" #include "block.h" + #include "dfp.h" =20=20 /* Prototypes for exported functions. */ =20=20 *************** value_from_double (struct type *type, DO *** 1610,1615 **** --- 1611,1637 ---- } =20=20 struct value * + value_from_decfloat (struct type *expect_type, struct type *type,=20 + gdb_byte decbytes[16]) + { + struct value *val =3D allocate_value (type); + int len =3D TYPE_LENGTH (type); +=20 + if (expect_type) + { + int expect_len =3D TYPE_LENGTH (expect_type); + char decstr[128]; + int real_len; +=20 + decimal_to_string (decbytes, len, decstr); + decimal_from_string (decbytes, expect_len, decstr); + } +=20 + memcpy (value_contents_raw (val), decbytes, len); + return val; + } +=20 + struct value * coerce_ref (struct value *arg) { struct type *value_type_arg_tmp =3D check_typedef (value_type (arg)); Index: valprint.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/valprint.c,v retrieving revision 1.60 diff -c -3 -p -r1.60 valprint.c *** valprint.c 15 May 2006 16:53:38 -0000 1.60 --- valprint.c 1 Aug 2006 09:13:25 -0000 *************** *** 35,40 **** --- 35,41 ---- #include "floatformat.h" #include "doublest.h" #include "exceptions.h" + #include "dfp.h" =20=20 #include =20=20 *************** print_floating (const gdb_byte *valaddr, *** 496,501 **** --- 497,514 ---- } =20=20 void + print_decimal_floating (const gdb_byte *valaddr, struct type *type, + struct ui_file *stream) + { + char decstr[128]; + unsigned len =3D TYPE_LENGTH (type); +=20 + decimal_to_string (valaddr, len, decstr); + fputs_filtered (decstr, stream); + return; + } +=20 + void print_binary_chars (struct ui_file *stream, const gdb_byte *valaddr, unsigned len) { Index: valarith.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/valarith.c,v retrieving revision 1.45 diff -c -3 -p -r1.45 valarith.c *** valarith.c 24 Jan 2006 21:21:12 -0000 1.45 --- valarith.c 1 Aug 2006 09:13:25 -0000 *************** *** 1,7 **** /* Perform arithmetic and other operations on values, for GDB. =20=20 Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, ! 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. =20=20 This file is part of GDB. --- 1,7 ---- /* Perform arithmetic and other operations on values, for GDB. =20=20 Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, ! 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. =20=20 This file is part of GDB. *************** value_neg (struct value *arg1) *** 1378,1383 **** --- 1378,1397 ---- =20=20 type =3D check_typedef (value_type (arg1)); =20=20 + if (TYPE_CODE (type) =3D=3D TYPE_CODE_DECFLOAT) + { + struct value *val =3D allocate_value (result_type); + int len =3D TYPE_LENGTH (type); + gdb_byte *decbytes =3D (gdb_byte *) value_contents (arg1); +=20 + if (gdbarch_byte_order (current_gdbarch)) + decbytes[len-1] =3D decbytes[len - 1] | 0x80; + else + decbytes[0] =3D decbytes[0] | 0x80; + memcpy (value_contents_raw (val), decbytes, 16); + return val; + } +=20 if (TYPE_CODE (type) =3D=3D TYPE_CODE_FLT) return value_from_double (result_type, -value_as_double (arg1)); else if (is_integral_type (type)) Index: dfp.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: dfp.h diff -N dfp.h *** /dev/null 1 Jan 1970 00:00:00 -0000 --- dfp.h 1 Aug 2006 09:13:25 -0000 *************** *** 0 **** --- 1,40 ---- + /* Decimal floating point support for GDB. +=20 + Copyright 2006 Free Software Foundation, Inc. +=20 + This file is part of GDB. +=20 + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. +=20 + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +=20 + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ +=20 + /* Decimal floating point is one of the extension to IEEE 754, which is + described in http://grouper.ieee.org/groups/754/revision.html and + http://www2.hursley.ibm.com/decimal/. It completes binary floating + point by representing floating point more exactly. */ +=20 + /* There is a project intended to add DFP support into GCC, described in + http://gcc.gnu.org/wiki/Decimal%20Floating-Point. This file is intend= ed + to add DFP support into GDB. */ +=20 + #ifndef DFP_H + #define DFP_H + #include + #include + #include +=20 + extern void decimal_to_string (const uint8_t *, int, char *); + extern int decimal_from_string (uint8_t *, int, char *); +=20 + #endif Index: dfp.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: dfp.c diff -N dfp.c *** /dev/null 1 Jan 1970 00:00:00 -0000 --- dfp.c 1 Aug 2006 09:13:25 -0000 *************** *** 0 **** --- 1,122 ---- + /* Decimal floating point support for GDB. +=20 + Copyright 2006 Free Software Foundation, Inc. +=20 + This file is part of GDB. +=20 + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. +=20 + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +=20 + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ +=20 + #include "defs.h" + #include "dfp.h" + #include +=20 + /* The order of the following headers is important for making sure + decNumber structure is large enough to hold decimal128 digits. */ +=20 + #include "decimal128.h" + #include "decimal64.h" + #include "decimal32.h" + #include "decNumber.h" +=20 + /* In gdb, we are using an array of gdb_byte to represent decimal values.= The + byte order of our representation might be different than that of under= lying + architecture. This routine does the conversion if it is necessary. */ + static void + exchange_dfp (const gdb_byte *valaddr, int len, gdb_byte *dec_val) + { + int index; +=20 + if (gdbarch_byte_order (current_gdbarch) =3D=3D 1) + for (index =3D 0; index < len; index++) + dec_val[index] =3D valaddr[len - index - 1]; + else + for (index =3D 0; index < len; index++) + dec_val[index] =3D valaddr[index]; +=20 + return; + } +=20 + /* Convert deciaml type to its string representation. LEN is the length + of the decimal type, 4 bytes for decimal32, 8 bytes for decimal64 and + 16 bytes for decimal128. */ + void + decimal_to_string (const uint8_t *decbytes, int len, char *s) + { + uint8_t *dec =3D (uint8_t *)malloc (len); +=20 + exchange_dfp (decbytes, len, dec); + switch (len) + { + case 4: + decimal32ToString ((decimal32 *) dec, s); + return; + case 8: + decimal64ToString ((decimal64 *) dec, s); + return; + case 16: + decimal128ToString ((decimal128 *) dec, s); + return; + default: + return; + } +=20 + free (dec); + } +=20 + /* Convert the string form of a decimal value to its decimal representati= on. + LEN is the length of the decimal type, 4 bytes for decimal32, 8 bytes = for + decimal64 and 16 bytes for decimal128. */ + int + decimal_from_string (uint8_t *decbytes, int len, char *string) + { + decNumber dn; + decContext set; + int index; + uint8_t *dec =3D (uint8_t *)malloc (len); +=20 + switch (len) + { + case 4: + decContextDefault (&set, DEC_INIT_DECIMAL32); + break; + case 8: + decContextDefault (&set, DEC_INIT_DECIMAL64); + break; + case 16: + decContextDefault (&set, DEC_INIT_DECIMAL128); + break; + } +=20 + set.traps =3D 0; +=20 + decNumberFromString (&dn, string, &set); + switch (len) + { + case 4: + decimal32FromNumber ((decimal32 *) dec, &dn, &set); + break; + case 8: + decimal64FromNumber ((decimal64 *) dec, &dn, &set); + break; + case 16: + decimal128FromNumber ((decimal128 *) dec, &dn, &set); + break; + } +=20 + exchange_dfp (dec, len, decbytes); + free (dec); + return 1; + } Index: Makefile.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/Makefile.in,v retrieving revision 1.834 diff -c -3 -p -r1.834 Makefile.in *** Makefile.in 31 Jul 2006 20:15:50 -0000 1.834 --- Makefile.in 1 Aug 2006 09:13:25 -0000 *************** BFD =3D $(BFD_DIR)/libbfd.a *** 122,127 **** --- 122,133 ---- BFD_SRC =3D $(srcdir)/$(BFD_DIR) BFD_CFLAGS =3D -I$(BFD_DIR) -I$(BFD_SRC) =20=20 + # Where is the decnumber library? Typically in ../libdecnumber. + LIBDECNUMBER_DIR =3D ../libdecnumber + LIBDECNUMBER =3D $(LIBDECNUMBER_DIR)/libdecnumber.a + LIBDECNUMBER_SRC =3D $(srcdir)/$(LIBDECNUMBER_DIR) + LIBDECNUMBER_CFLAGS =3D -I$(LIBDECNUMBER_DIR) -I$(LIBDECNUMBER_SRC) +=20 # Where is the READLINE library? Typically in ../readline. READLINE_DIR =3D ../readline READLINE =3D $(READLINE_DIR)/libreadline.a *************** CXXFLAGS =3D -g -O *** 348,354 **** INTERNAL_CFLAGS_BASE =3D \ $(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \ $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \ ! $(BFD_CFLAGS) $(INCLUDE_CFLAGS) \ $(INTL_CFLAGS) $(ENABLE_CFLAGS) INTERNAL_WARN_CFLAGS =3D $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS) INTERNAL_CFLAGS =3D $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS) --- 354,360 ---- INTERNAL_CFLAGS_BASE =3D \ $(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \ $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \ ! $(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \ $(INTL_CFLAGS) $(ENABLE_CFLAGS) INTERNAL_WARN_CFLAGS =3D $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS) INTERNAL_CFLAGS =3D $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS) *************** INTERNAL_LDFLAGS =3D $(CFLAGS) $(GLOBAL_CF *** 371,380 **** # LIBIBERTY appears twice on purpose. # If you have the Cygnus libraries installed, # you can use 'CLIBS=3D$(INSTALLED_LIBS)' 'CDEPS=3D' ! INSTALLED_LIBS=3D-lbfd -lreadline -lopcodes -liberty \ $(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \ -lintl -liberty ! CLIBS =3D $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) \ $(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \ $(LIBICONV) \ $(LIBIBERTY) $(WIN32LIBS) --- 377,386 ---- # LIBIBERTY appears twice on purpose. # If you have the Cygnus libraries installed, # you can use 'CLIBS=3D$(INSTALLED_LIBS)' 'CDEPS=3D' ! INSTALLED_LIBS=3D-lbfd -lreadline -lopcodes -liberty -ldecnumber \ $(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \ -lintl -liberty ! CLIBS =3D $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIB= DECNUMBER) \ $(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \ $(LIBICONV) \ $(LIBIBERTY) $(WIN32LIBS) *************** SFILES =3D ada-exp.y ada-lang.c ada-typepr *** 532,537 **** --- 538,544 ---- infcmd.c inflow.c infrun.c \ interps.c \ jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c \ + kod.c kod-cisco.c \ language.c linespec.c \ m2-exp.y m2-lang.c m2-typeprint.c m2-valprint.c \ macrotab.c macroexp.c macrocmd.c macroscope.c main.c maint.c \ *************** splay_tree_h =3D $(INCLUDE_DIR)/splay-tre *** 604,609 **** --- 611,620 ---- safe_ctype_h =3D $(INCLUDE_DIR)/safe-ctype.h hashtab_h =3D $(INCLUDE_DIR)/hashtab.h =20=20 + decimal128_h =3D $(LIBDECNUMBER_DIR)/decimal128.h + decimal64_h =3D $(LIBDECNUMBER_DIR)/decimal64.h + decimal32_h =3D $(LIBDECNUMBER_DIR)/decimal32.h +=20 # # $BUILD/ headers # *************** amd64_nat_h =3D amd64-nat.h *** 639,645 **** amd64_tdep_h =3D amd64-tdep.h $(i386_tdep_h) annotate_h =3D annotate.h $(symtab_h) $(gdbtypes_h) arch_utils_h =3D arch-utils.h - arm_linux_tdep_h =3D arm-linux-tdep.h arm_tdep_h =3D arm-tdep.h auxv_h =3D auxv.h ax_gdb_h =3D ax-gdb.h --- 650,655 ---- *************** dictionary_h =3D dictionary.h *** 670,675 **** --- 680,686 ---- disasm_h =3D disasm.h doublest_h =3D doublest.h $(floatformat_h) dummy_frame_h =3D dummy-frame.h + dfp_h =3D dfp.h dwarf2expr_h =3D dwarf2expr.h dwarf2_frame_h =3D dwarf2-frame.h dwarf2loc_h =3D dwarf2loc.h *************** inf_ptrace_h =3D inf-ptrace.h *** 726,731 **** --- 737,743 ---- inf_ttrace_h =3D inf-ttrace.h interps_h =3D interps.h $(exceptions_h) jv_lang_h =3D jv-lang.h + kod_h =3D kod.h language_h =3D language.h libunwind_frame_h =3D libunwind-frame.h $(libunwind_h) linespec_h =3D linespec.h *************** COMMON_OBS =3D $(DEPFILES) $(CONFIG_OBS) $ *** 911,917 **** auxv.o \ bfd-target.o \ blockframe.o breakpoint.o findvar.o regcache.o \ ! charset.o disasm.o dummy-frame.o \ source.o value.o eval.o valops.o valarith.o valprint.o printcmd.o \ block.o symtab.o symfile.o symmisc.o linespec.o dictionary.o \ infcall.o \ --- 923,929 ---- auxv.o \ bfd-target.o \ blockframe.o breakpoint.o findvar.o regcache.o \ ! charset.o disasm.o dummy-frame.o dfp.o \ source.o value.o eval.o valops.o valarith.o valprint.o printcmd.o \ block.o symtab.o symfile.o symmisc.o linespec.o dictionary.o \ infcall.o \ *************** COMMON_OBS =3D $(DEPFILES) $(CONFIG_OBS) $ *** 927,932 **** --- 939,945 ---- memattr.o mem-break.o target.o parse.o language.o buildsym.o \ std-regs.o \ signals.o \ + kod.o kod-cisco.o \ gdb-events.o \ exec.o bcache.o objfiles.o observer.o minsyms.o maint.o demangle.o \ dbxread.o coffread.o coff-pe-read.o elfread.o \ *************** init.c: $(INIT_FILES) *** 1152,1160 **** @rm -f init.c-tmp init.l-tmp @touch init.c-tmp @echo gdbtypes > init.l-tmp ! @-LANG=3Dc ; export LANG ; \ ! LC_ALL=3Dc ; export LC_ALL ; \ ! echo $(INIT_FILES) | \ tr ' ' '\012' | \ sed \ -e '/^gdbtypes.[co]$$/d' \ --- 1165,1171 ---- @rm -f init.c-tmp init.l-tmp @touch init.c-tmp @echo gdbtypes > init.l-tmp ! @-echo $(INIT_FILES) | \ tr ' ' '\012' | \ sed \ -e '/^gdbtypes.[co]$$/d' \ *************** MAKEOVERRIDES=3D *** 1407,1416 **** =20=20 ALLDEPFILES =3D \ aix-thread.c \ ! alpha-nat.c alphabsd-nat.c alpha-linux-nat.c \ ! alpha-tdep.c alpha-mdebug-tdep.c \ ! alpha-linux-tdep.c alpha-osf1-tdep.c \ ! alphabsd-tdep.c alphafbsd-tdep.c alphanbsd-tdep.c alphaobsd-tdep.c \ amd64-nat.c amd64-tdep.c \ amd64bsd-nat.c amd64fbsd-nat.c amd64fbsd-tdep.c \ amd64nbsd-nat.c amd64nbsd-tdep.c \ --- 1418,1426 ---- =20=20 ALLDEPFILES =3D \ aix-thread.c \ ! alpha-nat.c alphabsd-nat.c alpha-linux-nat.c linux-fork.c \ ! alpha-tdep.c alpha-linux-tdep.c alphabsd-tdep.c alphanbsd-tdep.c \ ! alpha-osf1-tdep.c alphafbsd-tdep.c alpha-mdebug-tdep.c \ amd64-nat.c amd64-tdep.c \ amd64bsd-nat.c amd64fbsd-nat.c amd64fbsd-tdep.c \ amd64nbsd-nat.c amd64nbsd-tdep.c \ *************** ALLDEPFILES =3D \ *** 1418,1424 **** amd64-linux-nat.c amd64-linux-tdep.c \ amd64-sol2-tdep.c \ arm-linux-nat.c arm-linux-tdep.c arm-tdep.c \ ! armnbsd-nat.c armnbsd-tdep.c armobsd-tdep.c \ avr-tdep.c \ bsd-uthread.c bsd-kvm.c \ coff-solib.c \ --- 1428,1434 ---- amd64-linux-nat.c amd64-linux-tdep.c \ amd64-sol2-tdep.c \ arm-linux-nat.c arm-linux-tdep.c arm-tdep.c \ ! armnbsd-nat.c armnbsd-tdep.c \ avr-tdep.c \ bsd-uthread.c bsd-kvm.c \ coff-solib.c \ *************** ALLDEPFILES =3D \ *** 1444,1450 **** inf-ptrace.c inf-ttrace.c \ infptrace.c inftarg.c irix5-nat.c \ libunwind-frame.c \ - linux-fork.c \ lynx-nat.c \ m68hc11-tdep.c \ m32r-tdep.c \ --- 1454,1459 ---- *************** printcmd.o: $(srcdir)/printcmd.c *** 1534,1539 **** --- 1543,1553 ---- procfs.o: $(srcdir)/procfs.c $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/procfs.c =20=20 + # FIXME: Thread-db.o gets warnings because the definitions of the register + # sets are different from kernel to kernel. + linux-thread-db.o: $(srcdir)/linux-thread-db.c + $(CC) -c $(INTERNAL_WARN_CFLAGS) $(srcdir)/linux-thread-db.c +=20 v850ice.o: $(srcdir)/v850ice.c $(CC) -c $(INTERNAL_CFLAGS) $(IDE_CFLAGS) $(ITCL_CFLAGS) \ $(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) \ *************** aix-thread.o: aix-thread.c $(defs_h) $(g *** 1694,1701 **** $(target_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) $(ppc_tdep_h) \ $(gdb_string_h) alphabsd-nat.o: alphabsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ ! $(alpha_tdep_h) $(alphabsd_tdep_h) $(inf_ptrace_h) $(gregset_h) \ ! $(bsd_kvm_h) alphabsd-tdep.o: alphabsd-tdep.c $(defs_h) $(alpha_tdep_h) \ $(alphabsd_tdep_h) alphafbsd-tdep.o: alphafbsd-tdep.c $(defs_h) $(value_h) $(osabi_h) \ --- 1708,1714 ---- $(target_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) $(ppc_tdep_h) \ $(gdb_string_h) alphabsd-nat.o: alphabsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ ! $(alpha_tdep_h) $(alphabsd_tdep_h) $(inf_ptrace_h) $(gregset_h) alphabsd-tdep.o: alphabsd-tdep.c $(defs_h) $(alpha_tdep_h) \ $(alphabsd_tdep_h) alphafbsd-tdep.o: alphafbsd-tdep.c $(defs_h) $(value_h) $(osabi_h) \ *************** alpha-mdebug-tdep.o: alpha-mdebug-tdep.c *** 1708,1720 **** $(block_h) $(gdb_assert_h) $(alpha_tdep_h) $(mdebugread_h) alpha-nat.o: alpha-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \ $(gdbcore_h) $(target_h) $(regcache_h) $(alpha_tdep_h) $(gregset_h) ! alphanbsd-tdep.o: alphanbsd-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \ ! $(regcache_h) $(regset_h) $(value_h) $(osabi_h) $(gdb_string_h) \ ! $(gdb_assert_h) $(alpha_tdep_h) $(alphabsd_tdep_h) $(nbsd_tdep_h) \ ! $(solib_svr4_h) ! alphaobsd-tdep.o: alphaobsd-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \ ! $(osabi_h) $(obsd_tdep_h) $(alpha_tdep_h) $(alphabsd_tdep_h) \ ! $(solib_svr4_h) alpha-osf1-tdep.o: alpha-osf1-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \ $(value_h) $(osabi_h) $(gdb_string_h) $(objfiles_h) $(alpha_tdep_h) alpha-tdep.o: alpha-tdep.c $(defs_h) $(doublest_h) $(frame_h) \ --- 1721,1729 ---- $(block_h) $(gdb_assert_h) $(alpha_tdep_h) $(mdebugread_h) alpha-nat.o: alpha-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \ $(gdbcore_h) $(target_h) $(regcache_h) $(alpha_tdep_h) $(gregset_h) ! alphanbsd-tdep.o: alphanbsd-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \ ! $(regcache_h) $(value_h) $(osabi_h) $(gdb_string_h) $(alpha_tdep_h) \ ! $(alphabsd_tdep_h) $(nbsd_tdep_h) $(solib_svr4_h) alpha-osf1-tdep.o: alpha-osf1-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \ $(value_h) $(osabi_h) $(gdb_string_h) $(objfiles_h) $(alpha_tdep_h) alpha-tdep.o: alpha-tdep.c $(defs_h) $(doublest_h) $(frame_h) \ *************** arch-utils.o: arch-utils.c $(defs_h) $(a *** 1770,1794 **** $(floatformat_h) arm-linux-nat.o: arm-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ $(gdb_string_h) $(regcache_h) $(arm_tdep_h) $(gregset_h) \ ! $(target_h) $(linux_nat_h) $(gdb_proc_service_h) $(arm_linux_tdep_h) arm-linux-tdep.o: arm-linux-tdep.c $(defs_h) $(target_h) $(value_h) \ $(gdbtypes_h) $(floatformat_h) $(gdbcore_h) $(frame_h) $(regcache_h) \ $(doublest_h) $(solib_svr4_h) $(osabi_h) $(arm_tdep_h) \ - $(regset_h) $(arm_linux_tdep_h) \ $(glibc_tdep_h) $(trad_frame_h) $(tramp_frame_h) $(gdb_string_h) armnbsd-nat.o: armnbsd-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) \ $(regcache_h) $(target_h) $(gdb_string_h) $(arm_tdep_h) $(inf_ptrace_h) armnbsd-tdep.o: armnbsd-tdep.c $(defs_h) $(osabi_h) $(gdb_string_h) \ ! $(arm_tdep_h) $(solib_svr4_h) ! armobsd-tdep.o: armobsd-tdep.c $(defs_h) $(osabi_h) $(trad_frame_h) \ ! $(tramp_frame_h) $(obsd_tdep_h) $(arm_tdep_h) $(solib_svr4_h) arm-tdep.o: arm-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(gdbcmd_h) \ $(gdbcore_h) $(gdb_string_h) $(dis_asm_h) $(regcache_h) \ $(doublest_h) $(value_h) $(arch_utils_h) $(osabi_h) \ $(frame_unwind_h) $(frame_base_h) $(trad_frame_h) $(arm_tdep_h) \ $(gdb_sim_arm_h) $(elf_bfd_h) $(coff_internal_h) $(elf_arm_h) \ $(gdb_assert_h) $(bfd_in2_h) $(libcoff_h) $(objfiles_h) \ ! $(dwarf2_frame_h) $(gdbtypes_h) auxv.o: auxv.c $(defs_h) $(target_h) $(gdbtypes_h) $(command_h) \ $(inferior_h) $(valprint_h) $(gdb_assert_h) $(auxv_h) \ $(elf_common_h) --- 1779,1800 ---- $(floatformat_h) arm-linux-nat.o: arm-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \ $(gdb_string_h) $(regcache_h) $(arm_tdep_h) $(gregset_h) \ ! $(target_h) $(linux_nat_h) $(gdb_proc_service_h) arm-linux-tdep.o: arm-linux-tdep.c $(defs_h) $(target_h) $(value_h) \ $(gdbtypes_h) $(floatformat_h) $(gdbcore_h) $(frame_h) $(regcache_h) \ $(doublest_h) $(solib_svr4_h) $(osabi_h) $(arm_tdep_h) \ $(glibc_tdep_h) $(trad_frame_h) $(tramp_frame_h) $(gdb_string_h) armnbsd-nat.o: armnbsd-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) \ $(regcache_h) $(target_h) $(gdb_string_h) $(arm_tdep_h) $(inf_ptrace_h) armnbsd-tdep.o: armnbsd-tdep.c $(defs_h) $(osabi_h) $(gdb_string_h) \ ! $(arm_tdep_h) $(nbsd_tdep_h) $(solib_svr4_h) arm-tdep.o: arm-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(gdbcmd_h) \ $(gdbcore_h) $(gdb_string_h) $(dis_asm_h) $(regcache_h) \ $(doublest_h) $(value_h) $(arch_utils_h) $(osabi_h) \ $(frame_unwind_h) $(frame_base_h) $(trad_frame_h) $(arm_tdep_h) \ $(gdb_sim_arm_h) $(elf_bfd_h) $(coff_internal_h) $(elf_arm_h) \ $(gdb_assert_h) $(bfd_in2_h) $(libcoff_h) $(objfiles_h) \ ! $(dwarf2_frame_h) auxv.o: auxv.c $(defs_h) $(target_h) $(gdbtypes_h) $(command_h) \ $(inferior_h) $(valprint_h) $(gdb_assert_h) $(auxv_h) \ $(elf_common_h) *************** dsrec.o: dsrec.c $(defs_h) $(serial_h) $ *** 1922,1927 **** --- 1928,1934 ---- dummy-frame.o: dummy-frame.c $(defs_h) $(dummy_frame_h) $(regcache_h) \ $(frame_h) $(inferior_h) $(gdb_assert_h) $(frame_unwind_h) \ $(command_h) $(gdbcmd_h) $(gdb_string_h) + dfp.o: dfp.c $(defs_h) $(dfp_h) $(decimal128_h) $(decimal64_h) $(decimal3= 2_h) dve3900-rom.o: dve3900-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor= _h) \ $(serial_h) $(inferior_h) $(command_h) $(gdb_string_h) $(regcache_h) \ $(mips_tdep_h) *************** jv-typeprint.o: jv-typeprint.c $(defs_h) *** 2203,2208 **** --- 2210,2218 ---- jv-valprint.o: jv-valprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \ $(gdbcore_h) $(expression_h) $(value_h) $(demangle_h) $(valprint_h) \ $(language_h) $(jv_lang_h) $(c_lang_h) $(annotate_h) $(gdb_string_h) + kod.o: kod.c $(defs_h) $(command_h) $(gdbcmd_h) $(target_h) $(gdb_string_= h) \ + $(kod_h) + kod-cisco.o: kod-cisco.c $(defs_h) $(gdb_string_h) $(kod_h) language.o: language.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h= ) \ $(value_h) $(gdbcmd_h) $(expression_h) $(language_h) $(target_h) \ $(parser_defs_h) $(jv_lang_h) $(demangle_h) *************** valops.o: valops.c $(defs_h) $(symtab_h) *** 2792,2798 **** valprint.o: valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h= ) \ $(value_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(language_h) \ $(annotate_h) $(valprint_h) $(floatformat_h) $(doublest_h) \ ! $(exceptions_h) value.o: value.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \ $(value_h) $(gdbcore_h) $(command_h) $(gdbcmd_h) $(target_h) \ $(language_h) $(scm_lang_h) $(demangle_h) $(doublest_h) \ --- 2802,2808 ---- valprint.o: valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h= ) \ $(value_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(language_h) \ $(annotate_h) $(valprint_h) $(floatformat_h) $(doublest_h) \ ! $(exceptions_h) $(dfp_h) value.o: value.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \ $(value_h) $(gdbcore_h) $(command_h) $(gdbcmd_h) $(target_h) \ $(language_h) $(scm_lang_h) $(demangle_h) $(doublest_h) \ --=_2oh2ksjpp0ow--