Blame SOURCES/gdb-rhbz795424-bitpos-lazyvalue.patch

4c2ad1
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
4c2ad1
From: Fedora GDB patches <invalid@email.com>
4c2ad1
Date: Fri, 27 Oct 2017 21:07:50 +0200
4c2ad1
Subject: gdb-rhbz795424-bitpos-lazyvalue.patch
4c2ad1
4c2ad1
;; Fix `GDB cannot access struct member whose offset is larger than 256MB'
4c2ad1
;; (RH BZ 795424).
4c2ad1
;;=push
4c2ad1
4c2ad1
diff --git a/gdb/testsuite/gdb.base/longest-types-64bit.S b/gdb/testsuite/gdb.base/longest-types-64bit.S
4c2ad1
new file mode 100644
4c2ad1
--- /dev/null
4c2ad1
+++ b/gdb/testsuite/gdb.base/longest-types-64bit.S
4c2ad1
@@ -0,0 +1,249 @@
4c2ad1
+/* This testcase is part of GDB, the GNU debugger.
4c2ad1
+
4c2ad1
+   Copyright 2012 Free Software Foundation, Inc.
4c2ad1
+
4c2ad1
+   This program is free software; you can redistribute it and/or modify
4c2ad1
+   it under the terms of the GNU General Public License as published by
4c2ad1
+   the Free Software Foundation; either version 3 of the License, or
4c2ad1
+   (at your option) any later version.
4c2ad1
+
4c2ad1
+   This program is distributed in the hope that it will be useful,
4c2ad1
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
4c2ad1
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4c2ad1
+   GNU General Public License for more details.
4c2ad1
+
4c2ad1
+   You should have received a copy of the GNU General Public License
4c2ad1
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
4c2ad1
+
4c2ad1
+	.file	"longest-types-64bit.c"
4c2ad1
+	.text
4c2ad1
+.Ltext0:
4c2ad1
+	.globl main
4c2ad1
+main:
4c2ad1
+	.comm	f,8,8
4c2ad1
+.Letext0:
4c2ad1
+	.file 1 "gdb.base/longest-types-64bit.c"
4c2ad1
+	.section	.debug_info,"",@progbits
4c2ad1
+.Ldebug_info0:
4c2ad1
+	.4byte	0x9a	/* Length of Compilation Unit Info */
4c2ad1
+	.2byte	0x2	/* DWARF version number */
4c2ad1
+	.4byte	.Ldebug_abbrev0	/* Offset Into Abbrev. Section */
4c2ad1
+	.byte	0x8	/* Pointer Size (in bytes) */
4c2ad1
+	.uleb128 0x1	/* (DIE (0xb) DW_TAG_compile_unit) */
4c2ad1
+	.4byte	.LASF3	/* DW_AT_producer: "GNU C 4.7.3 20121109 (prerelease)" */
4c2ad1
+	.byte	0x1	/* DW_AT_language */
4c2ad1
+	.4byte	.LASF4	/* DW_AT_name: "gdb.base/longest-types-64bit.c" */
4c2ad1
+	.4byte	.LASF5	/* DW_AT_comp_dir: "" */
4c2ad1
+	.4byte	.Ldebug_line0	/* DW_AT_stmt_list */
4c2ad1
+	.uleb128 0x2	/* (DIE (0x1d) DW_TAG_structure_type) */
4c2ad1
+	.ascii "foo\0"	/* DW_AT_name */
4c2ad1
+	.4byte	0xff000002	/* DW_AT_byte_size */
4c2ad1
+	.byte	0x1	/* DW_AT_decl_file (gdb.base/longest-types-64bit.c) */
4c2ad1
+	.byte	0x12	/* DW_AT_decl_line */
4c2ad1
+	.4byte	0x4e	/* DW_AT_sibling */
4c2ad1
+	.uleb128 0x3	/* (DIE (0x2c) DW_TAG_member) */
4c2ad1
+	.ascii "buf\0"	/* DW_AT_name */
4c2ad1
+	.byte	0x1	/* DW_AT_decl_file (gdb.base/longest-types-64bit.c) */
4c2ad1
+	.byte	0x14	/* DW_AT_decl_line */
4c2ad1
+	.4byte	0x4e	/* DW_AT_type */
4c2ad1
+	.byte	0x2	/* DW_AT_data_member_location */
4c2ad1
+	.byte	0x23	/* DW_OP_plus_uconst */
4c2ad1
+	.uleb128 0
4c2ad1
+	.uleb128 0x4	/* (DIE (0x3a) DW_TAG_member) */
4c2ad1
+	.4byte	.LASF0	/* DW_AT_name: "buf2" */
4c2ad1
+	.byte	0x1	/* DW_AT_decl_file (gdb.base/longest-types-64bit.c) */
4c2ad1
+	.byte	0x15	/* DW_AT_decl_line */
4c2ad1
+	.4byte	0x73	/* DW_AT_type */
4c2ad1
+	.byte	0x7	/* DW_AT_data_member_location */
4c2ad1
+	.byte	0x23	/* DW_OP_plus_uconst */
4c2ad1
+	.uleb128 0xffff000000
4c2ad1
+	.byte	0	/* end of children of DIE 0x1d */
4c2ad1
+	.uleb128 0x5	/* (DIE (0x4e) DW_TAG_array_type) */
4c2ad1
+	.4byte	0x6c	/* DW_AT_type */
4c2ad1
+	.4byte	0x65	/* DW_AT_sibling */
4c2ad1
+	.uleb128 0x6	/* (DIE (0x57) DW_TAG_subrange_type) */
4c2ad1
+	.4byte	0x65	/* DW_AT_type */
4c2ad1
+	.quad	0xfffeffffff	/* DW_AT_upper_bound */
4c2ad1
+	.byte	0	/* end of children of DIE 0x4e */
4c2ad1
+	.uleb128 0x7	/* (DIE (0x65) DW_TAG_base_type) */
4c2ad1
+	.byte	0x8	/* DW_AT_byte_size */
4c2ad1
+	.byte	0x7	/* DW_AT_encoding */
4c2ad1
+	.4byte	.LASF1	/* DW_AT_name: "sizetype" */
4c2ad1
+	.uleb128 0x7	/* (DIE (0x6c) DW_TAG_base_type) */
4c2ad1
+	.byte	0x1	/* DW_AT_byte_size */
4c2ad1
+	.byte	0x6	/* DW_AT_encoding */
4c2ad1
+	.4byte	.LASF2	/* DW_AT_name: "char" */
4c2ad1
+	.uleb128 0x5	/* (DIE (0x73) DW_TAG_array_type) */
4c2ad1
+	.4byte	0x6c	/* DW_AT_type */
4c2ad1
+	.4byte	0x83	/* DW_AT_sibling */
4c2ad1
+	.uleb128 0x8	/* (DIE (0x7c) DW_TAG_subrange_type) */
4c2ad1
+	.4byte	0x65	/* DW_AT_type */
4c2ad1
+	.byte	0x1	/* DW_AT_upper_bound */
4c2ad1
+	.byte	0	/* end of children of DIE 0x73 */
4c2ad1
+	.uleb128 0x9	/* (DIE (0x83) DW_TAG_variable) */
4c2ad1
+	.ascii "f\0"	/* DW_AT_name */
4c2ad1
+	.byte	0x1	/* DW_AT_decl_file (gdb.base/longest-types-64bit.c) */
4c2ad1
+	.byte	0x16	/* DW_AT_decl_line */
4c2ad1
+	.4byte	0x97	/* DW_AT_type */
4c2ad1
+	.byte	0x1	/* DW_AT_external */
4c2ad1
+	.byte	0x9	/* DW_AT_location */
4c2ad1
+	.byte	0x3	/* DW_OP_addr */
4c2ad1
+	.quad	f
4c2ad1
+	.uleb128 0xa	/* (DIE (0x97) DW_TAG_pointer_type) */
4c2ad1
+	.byte	0x8	/* DW_AT_byte_size */
4c2ad1
+	.4byte	0x1d	/* DW_AT_type */
4c2ad1
+	.byte	0	/* end of children of DIE 0xb */
4c2ad1
+	.section	.debug_abbrev,"",@progbits
4c2ad1
+.Ldebug_abbrev0:
4c2ad1
+	.uleb128 0x1	/* (abbrev code) */
4c2ad1
+	.uleb128 0x11	/* (TAG: DW_TAG_compile_unit) */
4c2ad1
+	.byte	0x1	/* DW_children_yes */
4c2ad1
+	.uleb128 0x25	/* (DW_AT_producer) */
4c2ad1
+	.uleb128 0xe	/* (DW_FORM_strp) */
4c2ad1
+	.uleb128 0x13	/* (DW_AT_language) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x3	/* (DW_AT_name) */
4c2ad1
+	.uleb128 0xe	/* (DW_FORM_strp) */
4c2ad1
+	.uleb128 0x1b	/* (DW_AT_comp_dir) */
4c2ad1
+	.uleb128 0xe	/* (DW_FORM_strp) */
4c2ad1
+	.uleb128 0x10	/* (DW_AT_stmt_list) */
4c2ad1
+	.uleb128 0x6	/* (DW_FORM_data4) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0x2	/* (abbrev code) */
4c2ad1
+	.uleb128 0x13	/* (TAG: DW_TAG_structure_type) */
4c2ad1
+	.byte	0x1	/* DW_children_yes */
4c2ad1
+	.uleb128 0x3	/* (DW_AT_name) */
4c2ad1
+	.uleb128 0x8	/* (DW_FORM_string) */
4c2ad1
+	.uleb128 0xb	/* (DW_AT_byte_size) */
4c2ad1
+	.uleb128 0x6	/* (DW_FORM_data4) */
4c2ad1
+	.uleb128 0x3a	/* (DW_AT_decl_file) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x3b	/* (DW_AT_decl_line) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x1	/* (DW_AT_sibling) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0x3	/* (abbrev code) */
4c2ad1
+	.uleb128 0xd	/* (TAG: DW_TAG_member) */
4c2ad1
+	.byte	0	/* DW_children_no */
4c2ad1
+	.uleb128 0x3	/* (DW_AT_name) */
4c2ad1
+	.uleb128 0x8	/* (DW_FORM_string) */
4c2ad1
+	.uleb128 0x3a	/* (DW_AT_decl_file) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x3b	/* (DW_AT_decl_line) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x49	/* (DW_AT_type) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.uleb128 0x38	/* (DW_AT_data_member_location) */
4c2ad1
+	.uleb128 0xa	/* (DW_FORM_block1) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0x4	/* (abbrev code) */
4c2ad1
+	.uleb128 0xd	/* (TAG: DW_TAG_member) */
4c2ad1
+	.byte	0	/* DW_children_no */
4c2ad1
+	.uleb128 0x3	/* (DW_AT_name) */
4c2ad1
+	.uleb128 0xe	/* (DW_FORM_strp) */
4c2ad1
+	.uleb128 0x3a	/* (DW_AT_decl_file) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x3b	/* (DW_AT_decl_line) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x49	/* (DW_AT_type) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.uleb128 0x38	/* (DW_AT_data_member_location) */
4c2ad1
+	.uleb128 0xa	/* (DW_FORM_block1) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0x5	/* (abbrev code) */
4c2ad1
+	.uleb128 0x1	/* (TAG: DW_TAG_array_type) */
4c2ad1
+	.byte	0x1	/* DW_children_yes */
4c2ad1
+	.uleb128 0x49	/* (DW_AT_type) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.uleb128 0x1	/* (DW_AT_sibling) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0x6	/* (abbrev code) */
4c2ad1
+	.uleb128 0x21	/* (TAG: DW_TAG_subrange_type) */
4c2ad1
+	.byte	0	/* DW_children_no */
4c2ad1
+	.uleb128 0x49	/* (DW_AT_type) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.uleb128 0x2f	/* (DW_AT_upper_bound) */
4c2ad1
+	.uleb128 0x7	/* (DW_FORM_data8) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0x7	/* (abbrev code) */
4c2ad1
+	.uleb128 0x24	/* (TAG: DW_TAG_base_type) */
4c2ad1
+	.byte	0	/* DW_children_no */
4c2ad1
+	.uleb128 0xb	/* (DW_AT_byte_size) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x3e	/* (DW_AT_encoding) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x3	/* (DW_AT_name) */
4c2ad1
+	.uleb128 0xe	/* (DW_FORM_strp) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0x8	/* (abbrev code) */
4c2ad1
+	.uleb128 0x21	/* (TAG: DW_TAG_subrange_type) */
4c2ad1
+	.byte	0	/* DW_children_no */
4c2ad1
+	.uleb128 0x49	/* (DW_AT_type) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.uleb128 0x2f	/* (DW_AT_upper_bound) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0x9	/* (abbrev code) */
4c2ad1
+	.uleb128 0x34	/* (TAG: DW_TAG_variable) */
4c2ad1
+	.byte	0	/* DW_children_no */
4c2ad1
+	.uleb128 0x3	/* (DW_AT_name) */
4c2ad1
+	.uleb128 0x8	/* (DW_FORM_string) */
4c2ad1
+	.uleb128 0x3a	/* (DW_AT_decl_file) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x3b	/* (DW_AT_decl_line) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x49	/* (DW_AT_type) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.uleb128 0x3f	/* (DW_AT_external) */
4c2ad1
+	.uleb128 0xc	/* (DW_FORM_flag) */
4c2ad1
+	.uleb128 0x2	/* (DW_AT_location) */
4c2ad1
+	.uleb128 0xa	/* (DW_FORM_block1) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.uleb128 0xa	/* (abbrev code) */
4c2ad1
+	.uleb128 0xf	/* (TAG: DW_TAG_pointer_type) */
4c2ad1
+	.byte	0	/* DW_children_no */
4c2ad1
+	.uleb128 0xb	/* (DW_AT_byte_size) */
4c2ad1
+	.uleb128 0xb	/* (DW_FORM_data1) */
4c2ad1
+	.uleb128 0x49	/* (DW_AT_type) */
4c2ad1
+	.uleb128 0x13	/* (DW_FORM_ref4) */
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.byte	0
4c2ad1
+	.section	.debug_aranges,"",@progbits
4c2ad1
+	.4byte	0x1c	/* Length of Address Ranges Info */
4c2ad1
+	.2byte	0x2	/* DWARF Version */
4c2ad1
+	.4byte	.Ldebug_info0	/* Offset of Compilation Unit Info */
4c2ad1
+	.byte	0x8	/* Size of Address */
4c2ad1
+	.byte	0	/* Size of Segment Descriptor */
4c2ad1
+	.2byte	0	/* Pad to 16 byte boundary */
4c2ad1
+	.2byte	0
4c2ad1
+	.quad	0
4c2ad1
+	.quad	0
4c2ad1
+	.section	.debug_line,"",@progbits
4c2ad1
+.Ldebug_line0:
4c2ad1
+	.section	.debug_str,"MS",@progbits,1
4c2ad1
+.LASF4:
4c2ad1
+	.string	"gdb.base/longest-types-64bit.c"
4c2ad1
+.LASF3:
4c2ad1
+	.string	"GNU C 4.7.3 20121109 (prerelease)"
4c2ad1
+.LASF0:
4c2ad1
+	.string	"buf2"
4c2ad1
+.LASF1:
4c2ad1
+	.string	"sizetype"
4c2ad1
+.LASF5:
4c2ad1
+	.string	""
4c2ad1
+.LASF2:
4c2ad1
+	.string	"char"
4c2ad1
+	.ident	"GCC: (GNU) 4.7.3 20121109 (prerelease)"
4c2ad1
+	.section	.note.GNU-stack,"",@progbits
4c2ad1
diff --git a/gdb/testsuite/gdb.base/longest-types-64bit.bz2.uu b/gdb/testsuite/gdb.base/longest-types-64bit.bz2.uu
4c2ad1
new file mode 100644
4c2ad1
--- /dev/null
4c2ad1
+++ b/gdb/testsuite/gdb.base/longest-types-64bit.bz2.uu
4c2ad1
@@ -0,0 +1,67 @@
4c2ad1
+begin 755 gdb.base/longest-types-64bit.bz2
4c2ad1
+M0EIH.3%!62936<'N#OH`"G/________^______?_Y______//]7SQD5'^/_%
4c2ad1
+M=VY7?F_[X`F]]SG7531-==V:Z-.FW;M.U7=';:UH@<&FD31,E3]J'HE-/TR@
4c2ad1
+M]4_5/32;%/U3]1--HU/U$#$R'I'J,FC0T-,)B'J#:CU,F@]0`/4:>F@CU/4,
4c2ad1
+MA@$S2>IH!H`TR/0-$$:9`C(&FHU3VE-J;4\%,@>4T:#]49-J/4`>HT!H#3)^
4c2ad1
+MJ`!H-``T]0&@-```:'J``&@`:9!`R9,@&3(`#3!#0!H``-#$--`,@``T`T#(
4c2ad1
+M:`:`&0&@::,0:-```:``-`E-$1#4-3:4]3R9-39(Q/)#3R-30:9#$T!D!H&@
4c2ad1
+M,CTGI!H#(#0T`#0``T`T`:``-``T`0,F3(!DR``TP0T`:``#0Q#30#(``-`-
4c2ad1
+M`R&@&@!D!H&FC$&C0``&@`#0)%)H32>JGZ&!)Z1B1X@)DTVC4>H`&0:``R&@
4c2ad1
+M,C0:``T``,C0``!H``#(`T`:#0U^\?]7K8M.96V/2[?M*DC)>WIUF)H7T\
4c2ad1
+M[0D)70G25.YB!,:;8Q(;&XPAB4+$Q%:P)PA-;E=!-&$KNR22EM>$:KKRE&\Q
4c2ad1
+M..M]L1*,!>D!X)RW,[,1I,9N%X-N&2+*:&)DJY4(VFQG%9K[/?J06WACF6-I
4c2ad1
+MJ&JJ9,ZK4;X28M@[==%ME(A54:%>+3->MRK(G!8#TY>@E$6DR&<_5:C&/RZE
4c2ad1
+MI
4c2ad1
+M3R3I!)WX,-%>,!E6#`;*8R*E@++*))U)[6=OKFM%'+$-H5\X@1D)_Y*"NKV.
4c2ad1
+M&\F8?SXW^<O]_DW.8WD@HY.NMMIBXFVROM_SKZ#4-`>HQ:Y@(Q[.>PEG=]@^
4c2ad1
+M%C"3EZ/1X'H*02ZQH":6"@;8Z0LEW6
4c2ad1
+M6(/OTI'-:O6=7$/#?0T9Q[GSY1)6V`+CV@#XWMF`<S:AG<!43X"VGD,E=>)>
4c2ad1
+M6^V=*`FB'5G4MD8L3J5XT#SW;J1]ZO+"SPIS%J(P46+Q=CC2$H-`-B&TD)M`
4c2ad1
+M&A:066DA%AB0C6,460>M8B+$:-BR&@NM()F`S',,F8+#&0.SMOK@.G<'83N.
4c2ad1
+MDA"#5-`JVC("1*TA;/M()&8J0+YH%IFV)+OA@4,`E?3M$[$@&Q`3]A!$&A(-
4c2ad1
+M$PBT+2,@PU+2H9(T-H3N6'(2;""%2T*1I2P@`L?AG8&A!=31J7)1(9FB'8X=
4c2ad1
+MWJ0S#YEG9K$.#.[L.[CNA"4JSJ^GK2*)UH=MC0.R8+E75'.09<NU&R0G1>[G
4c2ad1
+MMQ1*[GI:>#>K`_NZS:V6>$K;OX6#!!N'"2413$DTL&]7KY>B<3V5!!C8#X5+
4c2ad1
+MF%9<N\]C%B6OS;LH@1LR3R<LS+<]N]9\JZ<LJ#2_S2'UW('DZ!N>X!8NOKM5
4c2ad1
+M+"N&P4.75C16!A9Q;:C.6N`WZDV=-]!
4c2ad1
+MO;[ECS>,5PG<T[XC594XI0@RVPD86,M11%(T>]SNP[GV^L?YGI]7_'D8N?XV
4c2ad1
+M'[7KZJWYVMXGBQS[`!)YI%3:D)I2!;%'R`W&YB<`9O2#F"C/)F;JK9P+@3&(
4c2ad1
+MAH31[W)=YCODQDUKNM7A"3.C!2%CHTJNZ"Z\+#F-?(DLE>XAC%07B8;$%J_L
4c2ad1
+MJPK48QC&,916=IM+<1&WRKLB6&Q2O79*!7S$,`7J8*!`!=K:5W550[NH9M#_
4c2ad1
+MKL!LT,&;59GZW7S"5Z4%`%&!`9"J9`0:IR&H=MTKT=PEYC$,4K90M9AT'%;_
4c2ad1
+MB0HVLE)(W&YWF,C:TURXO:`M[RX(A-GT97456Q4Z*HPU*4J:*[WU-4GD.9UV
4c2ad1
+MSA#L4X[[*Y+)8IF.EO<.TP4IC2?(4HX)W1#:GOMOD2F;HM1BV#
4c2ad1
+MP@$\$FD4C-Q^L"H^)NP2-.^JTT!8+!;'Z=KM7%'K@\)*PSETF&M6<Q#>;PH[
4c2ad1
+M7:PJ-!#,!6N<3')-0C,>15'IZ>@U^CJJJ+>+>%%)%BBATD\)*F6&BLMIR&?\
4c2ad1
+MQ2_?33@"NR1/CN\:)>5DG6`>$;$3QA94'-3]*CU6YG])<=2)'GC"RP-RK&-3
4c2ad1
+MZDT-M_)R+F06DS?CR>E@^!,33"U6X<@OXO$Q>U$\T@IU
4c2ad1
+M('>'@T=>K`G7H8K5GLXMS3*^@JLVBHHE'.&?9RKC?Y`&&3J5!/C$++<@U#Q'
4c2ad1
+M9R3I.$+S`%]-.UO>WH^C73F<&;RIJR+(Q@7(3PP*W[-O,,DD3S7BUK^I@D%*
4c2ad1
+M`Y<*2TXJ&7;2'6'R.U>]0-="M`K+&N%/==N4U@9%@M1)U&251C($^S"WL"]T
4c2ad1
+M-XN'D2[II3-$K%+&`3['O)%,8G*E%_8RV6A5B_4(2/?-AIC.\/>,YFJ<(G.8
4c2ad1
+MAVP?UN*=ME:7&T!C%)I:&4H:-5>&^!&0>A.O'0G'/6&ZZ964@04&=#DC`%&:
4c2ad1
+MUNLOS?,?'T:T!8L80<H_W1>='M:96K4;JX)6.('1#J$.1/L)$IS<4/*'2D34
4c2ad1
+M/@J\BA(I2T40JS%9G8F!7U5_!#'U!+[7$ES&)@:*QAET-IBX6'_N5^7/#>@V
4c2ad1
+MN3&,-6(AG[8&!8LV+F_U"W?/)+Y^,;=1K:SW28<0WA2"UPHP^8FG#R$!`Y`,
4c2ad1
+MLF<`U*NNU\[6N03"*?I8D=K7.Z*H=A_3
4c2ad1
+M\[Z\D+/3>7;S=LVC(BQ,5
4c2ad1
+M:4)>8Q_\#G`'P*_-]T!G4$`V0BS]'S)D/;V7R?.2F?SF)N+2+#P2_
4c2ad1
+M(8?NF/+?:UMR3B#9$MBDCI2G7&N'T`FV!ERQ[21DOJ_8I73#BILTTSK)B5P<
4c2ad1
+MG22S=*7TI>G(49TCE&*UIVT-MP808VTVV-$(*`VT<%>%96AHOL`(7%SI2%-R
4c2ad1
+M#G2F02VQQH-7KT3E05I9Z)E\$Y8ED1KU`(4QHT%B]1$F:F1&8DAN.Q4&*?F@
4c2ad1
+M.8D965.$PRH
4c2ad1
+M(F!2TA\,RE
4c2ad1
+M5@U!62M"WBJ=&Q(L$5,4494K=.0B0#,C3$*``XLTF$DN!6P#%,4K%HTIC[*O
4c2ad1
+M6"4S,;RN&@=NP7@72:=U#&JPBQ-60OEAWY;CUYF+$73.R>T5HD,G=G!KTF3D
4c2ad1
+M94"&ZA-F,.19=8`\(Q;A07Q%!19*3#*F9Q+D(0K@V87@O.=7EJIM6`!4`>D!
4c2ad1
+M)49QHA!BV+:4O@K00$$!5*6>A@2@4D)@R\"%$2F"O:24J*L(RP#N;O4K7I&2
4c2ad1
+M[#)KR47H-N[<O^S-)"_Q\>VJ%3>$`9,AF8QID&I3G+D`*]BX98B$2K":A7_\
4c2ad1
+M_]7LT!4,$NL5)NE>9[:MK2_/'GO:7"P`=
4c2ad1
+M>P(\L]O?"-APH(834$,W!IJS+U1F1C.!D$!&KS^-6%F90PQ[F]F=$^QE\X+-
4c2ad1
+M@.W*LPH_78B>MHH@69RU[*'1J@8QAC\KSV@IG\(;_CUW:ZR2.,0$E3LZ_^P=
4c2ad1
+M<_DCP"Q<`;+_;YP#^U%&E^#2M%,T?F3UN^>TSH)GFL"\%RF[KNZ+[R+@<&.$
4c2ad1
+MC42)B96\1-.O_I).K7)X]W>EQ):4C(XB*+:S%0_37D^EBP+1HU(D?3"%_O2R
4c2ad1
+M6-#X>AU#<$*!/,W6QC^;O^%]LR&_X'<8X$<3CUU_QFAJ;">H)2443GD4W!4#
4c2ad1
+?<55!2^6_8J$)-O<>\H0U/6Q^>UG0%W)%.%"0P>X.^@``
4c2ad1
+`
4c2ad1
+end
4c2ad1
diff --git a/gdb/testsuite/gdb.base/longest-types-64bit.c b/gdb/testsuite/gdb.base/longest-types-64bit.c
4c2ad1
new file mode 100644
4c2ad1
--- /dev/null
4c2ad1
+++ b/gdb/testsuite/gdb.base/longest-types-64bit.c
4c2ad1
@@ -0,0 +1,28 @@
4c2ad1
+/* This testcase is part of GDB, the GNU debugger.
4c2ad1
+
4c2ad1
+   Copyright 2012 Free Software Foundation, Inc.
4c2ad1
+
4c2ad1
+   This program is free software; you can redistribute it and/or modify
4c2ad1
+   it under the terms of the GNU General Public License as published by
4c2ad1
+   the Free Software Foundation; either version 3 of the License, or
4c2ad1
+   (at your option) any later version.
4c2ad1
+
4c2ad1
+   This program is distributed in the hope that it will be useful,
4c2ad1
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
4c2ad1
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4c2ad1
+   GNU General Public License for more details.
4c2ad1
+
4c2ad1
+   You should have received a copy of the GNU General Public License
4c2ad1
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
4c2ad1
+
4c2ad1
+struct foo
4c2ad1
+{
4c2ad1
+  char buf[0xffff000000];
4c2ad1
+  char buf2[2];
4c2ad1
+} *f;
4c2ad1
+
4c2ad1
+int
4c2ad1
+main (void)
4c2ad1
+{
4c2ad1
+  return 0;
4c2ad1
+}
4c2ad1
diff --git a/gdb/testsuite/gdb.base/longest-types-64bit.exp b/gdb/testsuite/gdb.base/longest-types-64bit.exp
4c2ad1
new file mode 100644
4c2ad1
--- /dev/null
4c2ad1
+++ b/gdb/testsuite/gdb.base/longest-types-64bit.exp
4c2ad1
@@ -0,0 +1,59 @@
4c2ad1
+# This testcase is part of GDB, the GNU debugger.
4c2ad1
+
4c2ad1
+# Copyright 2012 Free Software Foundation, Inc.
4c2ad1
+
4c2ad1
+# This program is free software; you can redistribute it and/or modify
4c2ad1
+# it under the terms of the GNU General Public License as published by
4c2ad1
+# the Free Software Foundation; either version 3 of the License, or
4c2ad1
+# (at your option) any later version.
4c2ad1
+#
4c2ad1
+# This program is distributed in the hope that it will be useful,
4c2ad1
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
4c2ad1
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4c2ad1
+# GNU General Public License for more details.
4c2ad1
+#
4c2ad1
+# You should have received a copy of the GNU General Public License
4c2ad1
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
4c2ad1
+
4c2ad1
+standard_testfile .c longest-types-64bit.S
4c2ad1
+
4c2ad1
+proc test { name } { with_test_prefix $name {
4c2ad1
+    # 64-bit array size should not overflow
4c2ad1
+    gdb_test "print &f->buf" {= \(char \(\*\)\[1099494850560\]\) 0x0}
4c2ad1
+
4c2ad1
+    # The offset should not overflow
4c2ad1
+    gdb_test "print &f->buf2" {= \(char \(\*\)\[2\]\) 0xffff000000}
4c2ad1
+}}
4c2ad1
+
4c2ad1
+
4c2ad1
+# Test 64-bit file first as it is not compiled so its compilation never fails.
4c2ad1
+
4c2ad1
+set file64bitbz2uu ${srcdir}/${subdir}/${testfile}.bz2.uu
4c2ad1
+set file64bit [standard_output_file ${testfile}]
4c2ad1
+
4c2ad1
+if {[catch "system \"uudecode -o - ${file64bitbz2uu} | bzip2 -dc >${file64bit}\""] != 0} {
4c2ad1
+    untested "failed uudecode or bzip2"
4c2ad1
+    return -1
4c2ad1
+}
4c2ad1
+file stat ${file64bit} file64bitstat
4c2ad1
+if {$file64bitstat(size) != 9501} {
4c2ad1
+    untested "uudecode or bzip2 produce invalid result"
4c2ad1
+    return -1
4c2ad1
+}
4c2ad1
+
4c2ad1
+clean_restart ${file64bit}
4c2ad1
+
4c2ad1
+#if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile2 {nodebug}] } {
4c2ad1
+#    return -1
4c2ad1
+#}
4c2ad1
+
4c2ad1
+test "64bit"
4c2ad1
+
4c2ad1
+
4c2ad1
+# And here is the native build test.
4c2ad1
+
4c2ad1
+if { [prepare_for_testing ${testfile}.exp ${testfile} $srcfile {debug quiet}] } {
4c2ad1
+    return -1
4c2ad1
+}
4c2ad1
+
4c2ad1
+test "native"