comparison test/dynload_plain/dynload_plain.c @ 223:7076f551faf5

- dynload mach-o handling fixes for 64bit platforms - dynload test code improvements - dynload(3) clarification
author Tassilo Philipp
date Sat, 15 Apr 2017 15:21:37 +0200
parents cb56f077fd37
children 8216c86b4cbc
comparison
equal deleted inserted replaced
222:700c67984c08 223:7076f551faf5
44 "/lib64/libc.so.6", 44 "/lib64/libc.so.6",
45 "/lib64/libc.so.7", 45 "/lib64/libc.so.7",
46 "/lib32/libc.so", 46 "/lib32/libc.so",
47 "/lib32/libc.so.6", 47 "/lib32/libc.so.6",
48 "/lib32/libc.so.7", 48 "/lib32/libc.so.7",
49 "/usr/lib/system/libsystem_c.dylib",
49 "/usr/lib/libc.dylib", 50 "/usr/lib/libc.dylib",
50 "C:\\Windows\\system32\\msvcrt.dll" 51 "C:\\Windows\\system32\\msvcrt.dll"
51 }; 52 };
52 53
53 54
54 for(i=0; i<(sizeof(clibs)/sizeof(const char*)); ++i) { 55 for(i=0; i<(sizeof(clibs)/sizeof(const char*)); ++i) {
55 if(access(clibs[i], F_OK) != -1) 56 if(access(clibs[i], F_OK) != -1) {
56 path = clibs[i]; 57 path = clibs[i];
58 break;
59 }
57 } 60 }
58 61
59 if(path) { 62 if(path) {
60 printf("using clib to test at: %s\n", path); 63 printf("using clib to test at: %s\n", path);
61 ++r; 64 ++r;
98 break; 101 break;
99 } 102 }
100 } 103 }
101 printf("printf symbol found by iteration: %d\n", i<n); 104 printf("printf symbol found by iteration: %d\n", i<n);
102 105
103 name = dlSymsName(pSyms, i); 106 name = (i<n) ? dlSymsName(pSyms, i) : NULL;
104 r += (name && strcmp(name, "printf") == 0); // check if we can lookup "printf" by index 107 r += (name && strcmp(name, "printf") == 0); // check if we can lookup "printf" by index
105 printf("printf symbol name by index: %s\n", name?name:""); 108 printf("printf symbol name by index: %s\n", name?name:"");
106 109
107 pLib = dlLoadLibrary(path); // check if we can resolve ptr -> name, 110 pLib = dlLoadLibrary(path); // check if we can resolve ptr -> name,
108 if(pLib) { // need to lookup by name again, first 111 if(pLib) { // need to lookup by name again, first