/* This test script is part of GDB, the GNU debugger.

   Copyright 2002-2021 Free Software Foundation, Inc.

   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/>.  */

/* Do not move this definition into a header file!  See the comments
   in psmang.exp.  */
struct s
{
  int value;
  void method1 (void);
  void method2 (void);
};

void
s::method1 ()
{
  value = 42;
}

int
main (int argc, char **argv)
{
  s si;

  si.method1 ();
  si.method2 ();

  return 0;
}


/* The presence of these variables ensures there will be so many
   symbols in psmang1.cc's symtab's global block that it will have a
   non-trivial hash table.  When there are only a very few symbols,
   the block only has one hash bucket, so even if we compute the hash
   value for the wrong symbol name, we'll still find a symbol that
   matches.  */
int ax;
int bx;
int a1x;
int b1x;
int a2x;
int b2x;
int a12x;
int b12x;
int a3x;
int b3x;
int a13x;
int b13x;
int a23x;
int b23x;
int a123x;
int b123x;
int a4x;
int b4x;
int a14x;
int b14x;
int a24x;
int b24x;
int a124x;
int b124x;
int a34x;
int b34x;
int a134x;
int b134x;
int a234x;
int b234x;
int a1234x;
int b1234x;
int a5x;
int b5x;
int a15x;
int b15x;
int a25x;
int b25x;
int a125x;
int b125x;
int a35x;
int b35x;
int a135x;
int b135x;
int a235x;
int b235x;
int a1235x;
int b1235x;
int a45x;
int b45x;
int a145x;
int b145x;
int a245x;
int b245x;
int a1245x;
int b1245x;
int a345x;
int b345x;
int a1345x;
int b1345x;
int a2345x;
int b2345x;
int a12345x;
int b12345x;
int a6x;
int b6x;
int a16x;
int b16x;
int a26x;
int b26x;
int a126x;
int b126x;
int a36x;
int b36x;
int a136x;
int b136x;
int a236x;
int b236x;
int a1236x;
int b1236x;
int a46x;
int b46x;
int a146x;
int b146x;
int a246x;
int b246x;
int a1246x;
int b1246x;
int a346x;
int b346x;
int a1346x;
int b1346x;
int a2346x;
int b2346x;
int a12346x;
int b12346x;
int a56x;
int b56x;
int a156x;
int b156x;
int a256x;
int b256x;
int a1256x;
int b1256x;
int a356x;
int b356x;
int a1356x;
int b1356x;
int a2356x;
int b2356x;
int a12356x;
int b12356x;
int a456x;
int b456x;
int a1456x;
int b1456x;
int a2456x;
int b2456x;
int a12456x;
int b12456x;
int a3456x;
int b3456x;
int a13456x;
int b13456x;
int a23456x;
int b23456x;
int a123456x;
int b123456x;
