1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2011-2023 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 21 extern void pendfunc (int x); 22 23 static void 24 marker () {} 25 26 int main() 27 { 28 const char *libname = "pendshr2.sl"; 29 void *h; 30 int (*p_func) (int); 31 32 pendfunc (3); 33 pendfunc (4); 34 pendfunc (3); 35 36 marker (); 37 38 h = dlopen (libname, RTLD_LAZY); 39 if (h == NULL) return 1; 40 41 p_func = dlsym (h, "pendfunc2"); 42 if (p_func == NULL) return 2; 43 44 (*p_func) (4); 45 46 marker (); 47 48 dlclose (h); 49 return 0; 50 } 51