blob: 720970296a841222fe8c24859c32f94f1f218d4e [file]
/* Copyright (C) 2024-2026 Free Software Foundation, Inc.
This file is part of GDB.
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 3 of the License, or
(at your option) any later version.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <limits.h>
#include <stddef.h>
#include <stdint.h>
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
/* Use uintptr_t as a general purpose integer type to reduce the number of
types we need to define in the DWARF, and to make arithmetic simpler. */
struct array_type
{
uintptr_t *data;
uintptr_t count;
uintptr_t lower_bound;
};
struct outer_type
{
struct array_type assoc;
struct array_type non_assoc;
};
/* We spotted some code paths in GDB that would confuse the size of the
`.assoc` array with the size of the `.assoc` field within `g_outer_var`,
which is bogus. Make the array quite large, to make any such bugs more
apparent. */
static uintptr_t g_outer_var_assoc_data[]
= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 };
struct outer_type g_outer_var = {
.assoc = {
.data = g_outer_var_assoc_data,
.count = ARRAY_SIZE (g_outer_var_assoc_data),
.lower_bound = 6,
},
.non_assoc = {
.data = NULL,
.count = INT_MAX,
.lower_bound = INT_MAX,
},
};
int
main ()
{}