xref: /openbsd-src/regress/libexec/ld.so/dlsym/test1/prog2/main.c (revision fd3b1469f5cd6ec67bc8a007f3cbc848952ebbe0)
1*fd3b1469Skurt /*	$OpenBSD: main.c,v 1.2 2005/09/16 23:30:25 kurt Exp $	*/
23aa49273Skurt 
33aa49273Skurt /*
43aa49273Skurt  * Copyright (c) 2005 Kurt Miller <kurt@openbsd.org>
53aa49273Skurt  *
63aa49273Skurt  * Permission to use, copy, modify, and distribute this software for any
73aa49273Skurt  * purpose with or without fee is hereby granted, provided that the above
83aa49273Skurt  * copyright notice and this permission notice appear in all copies.
93aa49273Skurt  *
103aa49273Skurt  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
113aa49273Skurt  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
123aa49273Skurt  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
133aa49273Skurt  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
143aa49273Skurt  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
153aa49273Skurt  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
163aa49273Skurt  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
173aa49273Skurt  */
183aa49273Skurt 
193aa49273Skurt #include <dlfcn.h>
203aa49273Skurt #include <stdio.h>
213aa49273Skurt #include "aa.h"
223aa49273Skurt 
233aa49273Skurt /*
243aa49273Skurt  * Verifies dlsym works as expected when called from the main executable.
253aa49273Skurt  * libaa and libc are in the main object group, so their symbols are visable.
263aa49273Skurt  */
273aa49273Skurt int
main()283aa49273Skurt main()
293aa49273Skurt {
303aa49273Skurt 	int ret = 0;
313aa49273Skurt 	void *exe_handle = dlopen(NULL, RTLD_LAZY);
323aa49273Skurt 
333aa49273Skurt 	if (dlsym(RTLD_DEFAULT, "aaSymbol") == NULL) {
343aa49273Skurt 		printf("dlsym(RTLD_DEFAULT, \"aaSymbol\") FAILED\n");
35*fd3b1469Skurt 		ret = 1;
363aa49273Skurt 	}
373aa49273Skurt 
383aa49273Skurt 	if (dlsym(RTLD_SELF, "aaSymbol") == NULL) {
393aa49273Skurt 		printf("dlsym(RTLD_SELF, \"aaSymbol\") FAILED\n");
40*fd3b1469Skurt 		ret = 1;
413aa49273Skurt 	}
423aa49273Skurt 
433aa49273Skurt 	if (dlsym(RTLD_NEXT, "aaSymbol") == NULL) {
443aa49273Skurt 		printf("dlsym(RTLD_NEXT, \"aaSymbol\") FAILED\n");
45*fd3b1469Skurt 		ret = 1;
463aa49273Skurt 	}
473aa49273Skurt 
483aa49273Skurt 	if (dlsym(NULL, "aaSymbol") == NULL) {
493aa49273Skurt 		printf("dlsym(RTLD_NEXT, \"aaSymbol\") FAILED\n");
50*fd3b1469Skurt 		ret = 1;
513aa49273Skurt 	}
523aa49273Skurt 
533aa49273Skurt 	if (dlsym(exe_handle, "aaSymbol") == NULL) {
543aa49273Skurt 		printf("dlsym(exe_handle, \"aaSymbol\") FAILED\n");
55*fd3b1469Skurt 		ret = 1;
563aa49273Skurt 	}
573aa49273Skurt 
583aa49273Skurt 	dlclose(exe_handle);
593aa49273Skurt 
603aa49273Skurt 	return (ret);
613aa49273Skurt }
62