Changeset 2973
- Timestamp:
- Feb 14, 2007, 10:14:28 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdrModNative.c
r2898 r2973 60 60 #include <winnt.h> */ 61 61 62 #elif defined(__DARWIN__) 63 # include <dlfcn.h> 64 # include <errno.h> 65 62 66 #else 63 67 # error "port me" … … 122 126 /** Pointer to the section header array. */ 123 127 const IMAGE_SECTION_HEADER *paShdrs; 128 129 #elif defined(__DARWIN__) 130 /** The dlopen() handle.*/ 131 void *pvMod; 132 124 133 #else 125 134 # error "Port me" … … 191 200 FreeLibrary(hmod); 192 201 202 #elif defined(__DARWIN__) 203 void *pvMod; 204 205 pvMod = dlopen(pszFilename, 0); 206 if (!pvMod) 207 return ENOENT; 208 rc = kLdrModOpenNativeByHandle((uintptr_t)pvMod, ppMod); 209 if (rc) 210 dlclose(pvMod); 211 193 212 #else 194 213 # error "Port me" … … 269 288 cSegments = pNtHdrs->FileHeader.NumberOfSections + 1; 270 289 paShdrs = (const IMAGE_SECTION_HEADER *)(pNtHdrs + 1); 290 291 #elif defined(__DARWIN__) 292 char szFilename[1] = ""; 293 cSegments = 0; /** @todo Figure out the Mac OS X dynamic loader. */ 271 294 272 295 #else … … 473 496 } 474 497 498 #elif defined(__DARWIN__) 499 /** @todo Figure out the Mac OS X dynamic loader. */ 500 475 501 #else 476 502 # error "Port me" … … 493 519 #ifdef __OS2__ 494 520 rc = DosFreeModule(pModNative->hmod); 521 495 522 #elif defined(__WIN__) 496 523 if (FreeLibrary(pModNative->hmod)) … … 498 525 else 499 526 rc = GetLastError(); 527 528 #elif defined(__DARWIN__) 529 dlclose(pModNative->pvMod); 530 500 531 #else 501 532 # error "Port me" … … 521 552 #elif defined(__WIN__) 522 553 FARPROC pfn; 554 #elif defined(__DARWIN__) 555 void *pfn; 523 556 #else 524 557 # error "Port me" … … 577 610 | KLDRSYMKIND_NO_TYPE; 578 611 612 #elif defined(__DARWIN__) 613 if (!pszSymbol && iSymbol != NIL_KLDRMOD_SYM_ORDINAL) 614 return KLDR_ERR_SYMBOL_NOT_FOUND; 615 616 pfn = dlsym(pModNative->pvMod, pszSymbol); 617 if (!pfn) 618 return KLDR_ERR_SYMBOL_NOT_FOUND; 619 if (puValue) 620 *puValue = (uintptr_t)pfn; 621 if (pfKind) 622 *pfKind = (sizeof(uintptr_t) == 4 ? KLDRSYMKIND_32BIT : KLDRSYMKIND_64BIT) 623 | KLDRSYMKIND_NO_TYPE; 624 579 625 #else 580 626 # error "Port me" … … 668 714 return 0; 669 715 716 #elif defined(__DARWIN__) 717 /** @todo implement enumeration on darwin. */ 718 (void)pModNative; 719 return KLDR_ERR_TODO; 720 670 721 #else 671 722 # error "Port me" … … 681 732 #ifdef __OS2__ 682 733 683 /** @todo implement export enumeration on OS/2. */734 /** @todo implement import enumeration on OS/2. */ 684 735 (void)pModNative; 685 736 return ERROR_NOT_SUPPORTED; … … 721 772 return rc; 722 773 774 #elif defined(__DARWIN__) 775 /** @todo Implement import enumeration on darwin. */ 776 (void)pModNative; 777 return KLDR_ERR_TODO; 778 723 779 #else 724 780 # error "Port me" … … 733 789 #ifdef __OS2__ 734 790 735 /** @todo implement export enumerationon OS/2. */791 /** @todo implement import counting on OS/2. */ 736 792 (void)pModNative; 737 793 return -1; … … 761 817 return pModNative->cImportModules; 762 818 819 #elif defined(__DARWIN__) 820 /** @todo Implement import counting on Darwin. */ 821 (void)pModNative; 822 return -1; 823 763 824 #else 764 825 # error "Port me" … … 773 834 #ifdef __OS2__ 774 835 775 /** @todo implement export enumerationon OS/2. */836 /** @todo implement stack info on OS/2. */ 776 837 (void)pModNative; 777 838 return ERROR_NOT_SUPPORTED; … … 784 845 return 0; 785 846 847 #elif defined(__DARWIN__) 848 /** @todo Implement stack info on Darwin. */ 849 (void)pModNative; 850 return KLDR_ERR_TODO; 851 786 852 #else 787 853 # error "Port me" … … 796 862 #ifdef __OS2__ 797 863 798 /** @todo implement export enumerationon OS/2. */864 /** @todo implement me on OS/2. */ 799 865 (void)pModNative; 800 866 return ERROR_NOT_SUPPORTED; … … 809 875 return 0; 810 876 877 #elif defined(__DARWIN__) 878 /** @todo Implement me on Darwin. */ 879 (void)pModNative; 880 return KLDR_ERR_TODO; 881 811 882 #else 812 883 # error "Port me" … … 821 892 #ifdef __OS2__ 822 893 823 /** @todo implement export enumerationon OS/2. */894 /** @todo implement me on OS/2. */ 824 895 (void)pModNative; 825 896 return ERROR_NOT_SUPPORTED; … … 884 955 return rc; 885 956 957 #elif defined(__DARWIN__) 958 /** @todo Implement me on Darwin. */ 959 (void)pModNative; 960 return KLDR_ERR_TODO; 961 886 962 #else 887 963 # error "Port me" … … 896 972 #ifdef __OS2__ 897 973 898 /** @todo implement export enumerationon OS/2. */974 /** @todo implement me on OS/2. */ 899 975 (void)pModNative; 900 976 return KLDR_ERR_NO_DEBUG_INFO; … … 909 985 return KLDR_ERR_NO_DEBUG_INFO; 910 986 return 0; 987 988 #elif defined(__DARWIN__) 989 /** @todo Implement me on Darwin. */ 990 (void)pModNative; 991 return KLDR_ERR_NO_DEBUG_INFO; 992 911 993 #else 912 994 # error "Port me" … … 988 1070 return pModNative->pNtHdrs->OptionalHeader.SizeOfImage; 989 1071 1072 #elif defined(__DARWIN__) 1073 /** @todo Implement me on Darwin. */ 1074 return 0; 1075 990 1076 #else 991 1077 # error "Port me" … … 1002 1088 #elif defined(__WIN__) || defined(__NT__) 1003 1089 return ERROR_NOT_SUPPORTED; /* don't bother even if we could implement this. */ 1090 1091 #elif defined(__DARWIN__) 1092 return KLDR_ERR_TODO; /* don't bother. */ 1093 1004 1094 #else 1005 1095 # error "Port me" … … 1017 1107 #elif defined(__WIN__) || defined(__NT__) 1018 1108 return ERROR_NOT_SUPPORTED; /* don't bother even if we could implement this. */ 1109 1110 #elif defined(__DARWIN__) 1111 return KLDR_ERR_TODO; /* don't bother. */ 1112 1019 1113 #else 1020 1114 # error "Port me"
Note:
See TracChangeset
for help on using the changeset viewer.