File: dladdr.c

package info (click to toggle)
audacity 1.2.4b-2.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 24,136 kB
  • ctags: 20,445
  • sloc: ansic: 139,567; cpp: 55,998; sh: 24,963; lisp: 3,772; makefile: 1,683; python: 272
file content (29 lines) | stat: -rw-r--r-- 734 bytes parent folder | download | duplicates (3)
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
#define __BSD_VISIBLE 1
#include "dlfcn.h"
#include <stdlib.h>
#include <stdio.h>
#include <mach-o/dyld.h>

int main(int argc, const char* argv[])
{
	int retCode = 0;
	const char * syms[] = {"_printf","_dlopen","_main",0};
	int i=0;
	struct dl_info info;
	NSSymbol syml;
	void* addr;
	while (syms[i]) {
		syml = NSLookupAndBindSymbol(syms[i]);
		if (syml)
		{
			addr = NSAddressOfSymbol(syml);
			dladdr(addr,&info);
			fprintf(stdout,"Symbol: %s\nNSSym: %x\nAddress: %x\nFName: %s\nBase: %x\nSymbol: %s\nAddress: %x\n\n\n",
				syms[i],syml,addr,info.dli_fname,info.dli_fbase,info.dli_sname,info.dli_saddr);
			if (addr != info.dli_saddr) retCode++;
			if (strcmp(syms[i],info.dli_sname)) retCode++;
		}
		i++;
	}
	return retCode;
}