1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2011-2020 Free Software Foundation, Inc.
4
5   This program is free software; you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18#include <stdio.h>
19#include <dlfcn.h>
20#include "change-loc.h"
21
22extern void func (int x);
23
24static void
25marker () {}
26
27int main()
28{
29  const char *libname = "change-loc-2.sl";
30  void *h;
31  int (*p_func) (int);
32
33  func (3);
34
35  func4 ();
36
37  marker ();
38
39  h = dlopen (libname, RTLD_LAZY);
40  if (h == NULL) return 1;
41
42  p_func = dlsym (h, "func2");
43  if (p_func == NULL) return 2;
44
45  (*p_func) (4);
46
47  marker ();
48
49  dlclose (h);
50
51  marker ();
52  return 0;
53}
54