Changeset 3573
- Timestamp:
- Aug 31, 2007, 6:09:23 AM (18 years ago)
- Location:
- trunk/kStuff
- Files:
-
- 13 added
- 2 deleted
- 24 edited
- 7 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/kStuff/include/k/kErrors.h
r3550 r3573 38 38 */ 39 39 /** The base of the general status codes. */ 40 #define KERR_GENERAL_BASE (KERR_BASE 40 #define KERR_GENERAL_BASE (KERR_BASE) 41 41 /** Generic error. */ 42 42 #define KERR_GENERAL_FAILURE (KERR_GENERAL_BASE + 1) … … 45 45 /** Hit some unimplemented functionality - feel free to implement it :-) . */ 46 46 #define KERR_NOT_IMPLEMENTED (KERR_GENERAL_BASE + 3) 47 /** An environment variable wasn't found. */ 48 #define KERR_ENVVAR_NOT_FOUND (KERR_GENERAL_BASE + 4) 49 /** Buffer overflow. */ 50 #define KERR_BUFFER_OVERFLOW (KERR_GENERAL_BASE + 5) 47 51 /** @}*/ 48 52 … … 51 55 */ 52 56 /** The base of the input validation status codes. */ 53 #define KERR_INPUT_BASE (KERR_GENERAL_BASE + 4)57 #define KERR_INPUT_BASE (KERR_GENERAL_BASE + 6) 54 58 /** An API was given an invalid parameter. */ 55 59 #define KERR_INVALID_PARAMETER (KERR_INPUT_BASE + 0) -
trunk/kStuff/include/k/kHlpAlloc.h
r3552 r3573 61 61 KHLP_DECL(int) kHlpPageFree(void *pv, KSIZE cb); 62 62 63 KHLP_DECL(int) kHlpHeapInit(void); 64 KHLP_DECL(void) kHlpHeapTerm(void); 65 KHLP_DECL(void) kHlpHeapDonate(void *pv, KSIZE cb); 66 63 67 #ifdef __cplusplus 64 68 } -
trunk/kStuff/include/k/kHlpString.h
r3552 r3573 28 28 #define ___k_kHlpString_h___ 29 29 30 #include <k/k Defs.h>30 #include <k/kHlpDefs.h> 31 31 #include <k/kTypes.h> 32 32 … … 118 118 int kHlpStrIComp(const char *pv1, const char *pv2); 119 119 120 KHLP_DECL(char *) kHlpInt2Ascii(char *psz, KSIZE cch, long lVal, unsigned iBase); 121 120 122 #ifdef __cplusplus 121 123 } -
trunk/kStuff/include/k/kLdr.h
r3571 r3573 1019 1019 const char *pszName, KU32 idLang, PFNKLDRENUMRSRC pfnCallback, void *pvUser); 1020 1020 1021 1021 1022 /** @name OS/2 like API 1022 1023 * @{ */ … … 1116 1117 typedef const KLDREXEARGS *PCKLDREXEARGS; 1117 1118 1118 void kLdrLoadExe(PCKLDREXEARGS pArgs, void *pvOS); 1119 void kLdrLoadExe(PCKLDREXEARGS pArgs, void *pvOS); /** @todo fix this mess... */ 1120 void kLdrDyldLoadExe(PCKLDREXEARGS pArgs, void *pvOS); 1119 1121 1120 1122 /** @} */ -
trunk/kStuff/kHlp/Bare/kHlpBare-gcc.c
r3570 r3573 26 26 27 27 #include <k/kLdr.h> 28 #include "k LdrHlp.h"28 #include "kHlp.h" 29 29 30 30 -
trunk/kStuff/kHlp/Bare/kHlpBareHeap.c
r3570 r3573 1 1 /* $Id$ */ 2 2 /** @file 3 * 4 * kLdr - The Dynamic Loader, Helper Functions, Heap.5 * 6 * Copyright (c) 2006 knut st. osmundsen <bird-kbuild-src@anduin.net> 7 * 8 * 9 * This file is part of k Ldr.10 * 11 * k Ldr is free software; you can redistribute it and/or modify12 * it under the terms of the GNU General Public License as published by13 * the Free Software Foundation; either version 2 of the License, or14 * (at your option) any later version.15 * 16 * k Ldris distributed in the hope that it will be useful,3 * kHlpBare - Heap. 4 */ 5 6 /* 7 * Copyright (c) 2006-2007 knut st. osmundsen <bird-src-spam@anduin.net> 8 * 9 * This file is part of kStuff. 10 * 11 * kStuff is free software; you can redistribute it and/or 12 * modify it under the terms of the GNU Lesser General Public 13 * License as published by the Free Software Foundation; either 14 * version 2.1 of the License, or (at your option) any later version. 15 * 16 * kStuff is distributed in the hope that it will be useful, 17 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNUGeneral Public License for more details.20 * 21 * You should have received a copy of the GNU General Public License22 * along with kLdr; if not, write to the Free Software23 * Foundation, Inc., 5 9 Temple Place, Suite 330, Boston, MA 02111-1307USA18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 19 * Lesser General Public License for more details. 20 * 21 * You should have received a copy of the GNU Lesser General Public 22 * License along with kStuff; if not, write to the Free Software 23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 24 24 * 25 25 */ … … 30 30 * Header Files * 31 31 *******************************************************************************/ 32 #ifdef __OS2__ 32 #include <k/kHlpAlloc.h> 33 34 #if K_OS == K_OS_OS2 33 35 # define INCL_BASE 34 36 # define INCL_ERRORS 35 37 # include <os2.h> 36 #elif defined(__WIN__)38 #elif K_OS == K_OS_WINDOWS 37 39 # include <Windows.h> 38 40 #else 39 41 # error "port me" 40 42 #endif 41 42 #include <k/kLdr.h>43 #include "kLdrHlp.h"44 45 43 46 44 … … 87 85 * Assert that a heap free block is valid. */ 88 86 #ifdef KLDRHEAP_STRICT 89 # define KLDRHEAP_ASSERT(expr) k ldrHlpAssert(expr)87 # define KLDRHEAP_ASSERT(expr) kHlpAssert(expr) 90 88 91 89 # define KLDRHEAP_ASSERT_BLOCK(pHeap, pBlock) \ … … 193 191 * @returns 0 on success, non-zero OS specific status code on failure. 194 192 */ 195 int kldrHlpHeapInit(void)193 KHLP_DECL(int) kHlpHeapInit(void) 196 194 { 197 195 return kLdrHeapInit(&g_Heap); … … 202 200 * Terminates the kLdr heap. 203 201 */ 204 void kldrHlpHeapTerm(void)202 KHLP_DECL(void) kHlpHeapTerm(void) 205 203 { 206 204 kLdrHeapDelete(&g_Heap); … … 214 212 * @param cb The requested heap block size. 215 213 */ 216 void *kldrHlpAlloc(KSIZE cb)214 KHLP_DECL(void *) kHlpAlloc(KSIZE cb) 217 215 { 218 216 return kLdrHeapAlloc(&g_Heap, cb); … … 226 224 * @param cb The requested heap block size. 227 225 */ 228 void *kldrHlpAllocZ(KSIZE cb)226 KHLP_DECL(void *) kHlpAllocZ(KSIZE cb) 229 227 { 230 228 void *pv = kLdrHeapAlloc(&g_Heap, cb); 231 229 if (pv) 232 k LdrHlpMemSet(pv, 0, cb);230 kHlpMemSet(pv, 0, cb); 233 231 return pv; 234 232 } … … 238 236 * Frees memory allocated off the kLdr heap. 239 237 * 240 * @param pv Pointer to the heap block returned by k ldrHlpAlloc().241 */ 242 void kldrHlpFree(void *pv)238 * @param pv Pointer to the heap block returned by kHlpAlloc(). 239 */ 240 KHLP_DECL(void) kHlpFree(void *pv) 243 241 { 244 242 kLdrHeapFree(&g_Heap, pv); … … 252 250 * @param cb The amount of memory. 253 251 */ 254 void kldrHlpHeapDonate(void *pv, KSIZE cb)252 KHLP_DECL(void) kHlpHeapDonate(void *pv, KSIZE cb) 255 253 { 256 254 kLdrHeapDonate(&g_Heap, pv, cb); … … 652 650 static int kLdrHeapSegAlloc(PKLDRHEAPSEG pSeg, KSIZE cbMin) 653 651 { 654 #if def __OS2__652 #if K_OS == K_OS_OS2 655 653 APIRET rc; 656 654 … … 667 665 } 668 666 669 #elif defined(__WIN__)667 #elif K_OS == K_OS_WINDOWS 670 668 pSeg->cb = (cbMin + 0xffff) & ~(KSIZE)0xffff; 671 669 pSeg->pvBase = VirtualAlloc(NULL, pSeg->cb, MEM_COMMIT, PAGE_READWRITE); … … 691 689 static void kLdrHeapSegFree(PKLDRHEAPSEG pSeg) 692 690 { 693 #if def __OS2__691 #if K_OS == K_OS_OS2 694 692 APIRET rc = DosFreeMem(pSeg->pvBase); 695 693 KLDRHEAP_ASSERT(!rc); (void)rc; 696 694 697 #elif defined(__WIN__)695 #elif K_OS == K_OS_WINDOWS 698 696 BOOL fRc = VirtualFree(pSeg->pvBase, 0 /*pSeg->cb*/, MEM_RELEASE); 699 697 KLDRHEAP_ASSERT(fRc); (void)fRc; -
trunk/kStuff/kHlp/Bare/kHlpBareMem.c
r3571 r3573 1 1 /* $Id$ */ 2 2 /** @file 3 * 4 * kLdr - The Dynamic Loader, Memory Helper Functions.5 * 6 * Copyright (c) 2006-2007 knut st. osmundsen <bird-kbuild-src@anduin.net> 7 * 8 * 9 * This file is part of k Ldr.10 * 11 * k Ldr is free software; you can redistribute it and/or modify12 * it under the terms of the GNU General Public License as published by13 * the Free Software Foundation; either version 2 of the License, or14 * (at your option) any later version.15 * 16 * k Ldris distributed in the hope that it will be useful,3 * kHlp - Generic Page Memory Functions. 4 */ 5 6 /* 7 * Copyright (c) 2007 knut st. osmundsen <bird-src-spam@anduin.net> 8 * 9 * This file is part of kStuff. 10 * 11 * kStuff is free software; you can redistribute it and/or 12 * modify it under the terms of the GNU Lesser General Public 13 * License as published by the Free Software Foundation; either 14 * version 2.1 of the License, or (at your option) any later version. 15 * 16 * kStuff is distributed in the hope that it will be useful, 17 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with kLdr; if not, write to the Free Software 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 * 25 */ 26 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 19 * Lesser General Public License for more details. 20 * 21 * You should have received a copy of the GNU Lesser General Public 22 * License along with kStuff; if not, write to the Free Software 23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 24 * 25 */ 27 26 28 27 /******************************************************************************* 29 28 * Header Files * 30 29 *******************************************************************************/ 31 #ifdef __OS2__ 30 #include <k/kHlpAlloc.h> 31 32 #if K_OS == K_OS_OS2 32 33 # define INCL_BASE 33 34 # define INCL_ERRORS 34 35 # include <os2.h> 35 #elif defined(__WIN__)36 #elif K_OS == K_OS_WINDOWS 36 37 # include <Windows.h> 37 38 #else 38 39 # error "port me" 39 40 #endif 40 41 #include <k/kLdr.h>42 #include "kLdrHlp.h"43 41 44 42 … … 46 44 * Global Variables * 47 45 *******************************************************************************/ 48 #if def __OS2__46 #if K_OS == K_OS_OS2 49 47 /** The base of the stub object. 50 48 * The OS/2 exe stub consists of a single data object. When allocating memory … … 54 52 static KSIZE g_cbStub = 0; 55 53 56 #elif defined(__WIN__)54 #elif K_OS == K_OS_WINDOWS 57 55 /** The system info. */ 58 56 static SYSTEM_INFO g_SystemInfo; … … 63 61 64 62 65 #if def __OS2__66 static ULONG k ldrHlpPageProtToNative(KPROT enmProt)63 #if K_OS == K_OS_OS2 64 static ULONG kHlpPageProtToNative(KPROT enmProt) 67 65 { 68 66 switch (enmProt) … … 75 73 case KPROT_EXECUTE_READWRITE: return PAG_COMMIT | PAG_EXECUTE | PAG_READ | PAG_WRITE; 76 74 default: 77 k ldrHlpAssert(0);75 kHlpAssert(0); 78 76 return ~0U; 79 77 } 80 78 } 81 #elif defined(__WIN__)82 static DWORD k ldrHlpPageProtToNative(KPROT enmProt)79 #elif K_OS == K_OS_WINDOWS 80 static DWORD kHlpPageProtToNative(KPROT enmProt) 83 81 { 84 82 switch (enmProt) … … 91 89 case KPROT_EXECUTE_READWRITE: return PAGE_EXECUTE_READWRITE; 92 90 default: 93 k ldrHlpAssert(0);91 kHlpAssert(0); 94 92 return ~0U; 95 93 } … … 107 105 * @param enmProt The new protection. Copy-on-write is invalid. 108 106 */ 109 int kldrHlpPageAlloc(void **ppv, KSIZE cb, KPROT enmProt, unsignedfFixed)110 { 111 #if def __OS2__107 KHLP_DECL(int) kHlpPageAlloc(void **ppv, KSIZE cb, KPROT enmProt, KBOOL fFixed) 108 { 109 #if K_OS == K_OS_OS2 112 110 APIRET rc; 113 ULONG fFlags = k ldrHlpPageProtToNative(enmProt);;111 ULONG fFlags = kHlpPageProtToNative(enmProt);; 114 112 115 113 if (!fFixed) … … 128 126 if (!rc) 129 127 return 0; 130 k ldrHlpAssert(0);131 return rc; 132 133 #elif defined(__WIN__)128 kHlpAssert(0); 129 return rc; 130 131 #elif K_OS == K_OS_WINDOWS 134 132 /* (We don't have to care about the stub here, because the stub will be unmapped before we get here.) */ 135 133 int rc; 136 DWORD fProt = k ldrHlpPageProtToNative(enmProt);134 DWORD fProt = kHlpPageProtToNative(enmProt); 137 135 138 136 if (!g_SystemInfo.dwPageSize) … … 143 141 return 0; 144 142 rc = GetLastError(); 145 k ldrHlpAssert(0);143 kHlpAssert(0); 146 144 return rc; 147 145 … … 155 153 * Change the protection of one or more pages in an allocation. 156 154 * 157 * (This will of course only work correctly on memory allocated by k ldrHlpPageAlloc().)155 * (This will of course only work correctly on memory allocated by kHlpPageAlloc().) 158 156 * 159 157 * @returns 0 on success, non-zero OS status code on failure. … … 162 160 * @param enmProt The new protection. Copy-on-write is invalid. 163 161 */ 164 int kldrHlpPageProtect(void *pv, KSIZE cb, KPROT enmProt)165 { 166 #if def __OS2__162 KHLP_DECL(int) kHlpPageProtect(void *pv, KSIZE cb, KPROT enmProt) 163 { 164 #if K_OS == K_OS_OS2 167 165 APIRET rc; 168 ULONG fFlags = k ldrHlpPageProtToNative(enmProt);;166 ULONG fFlags = kHlpPageProtToNative(enmProt);; 169 167 170 168 /* … … 188 186 } 189 187 } 190 k ldrHlpAssert(!rc);191 return rc; 192 193 #elif defined(__WIN__)188 kHlpAssert(!rc); 189 return rc; 190 191 #elif K_OS == K_OS_WINDOWS 194 192 DWORD fOldProt = 0; 195 DWORD fProt = k ldrHlpPageProtToNative(enmProt);193 DWORD fProt = kHlpPageProtToNative(enmProt); 196 194 int rc = 0; 197 195 … … 199 197 { 200 198 rc = GetLastError(); 201 k ldrHlpAssert(0);199 kHlpAssert(0); 202 200 } 203 201 return rc; … … 209 207 210 208 /** 211 * Free memory allocated by k ldrHlpPageAlloc().209 * Free memory allocated by kHlpPageAlloc(). 212 210 * 213 211 * @returns 0 on success, non-zero OS status code on failure. 214 * @param pv The address returned by k ldrHlpPageAlloc().215 * @param cb The byte count requested from k ldrHlpPageAlloc().216 */ 217 int kldrHlpPageFree(void *pv, KSIZE cb)218 { 219 #if def __OS2__212 * @param pv The address returned by kHlpPageAlloc(). 213 * @param cb The byte count requested from kHlpPageAlloc(). 214 */ 215 KHLP_DECL(int) skHlpPageFree(void *pv, KSIZE cb) 216 { 217 #if K_OS == K_OS_OS2 220 218 APIRET rc; 221 219 … … 242 240 if (rc) 243 241 { 244 k ldrHlpAssert(!rc);242 kHlpAssert(!rc); 245 243 return rc; 246 244 } … … 259 257 */ 260 258 rc = DosFreeMem(pv); 261 k ldrHlpAssert(!rc);262 return rc; 263 264 #elif defined(__WIN__)259 kHlpAssert(!rc); 260 return rc; 261 262 #elif K_OS == K_OS_WINDOWS 265 263 /* 266 264 * Free the object. … … 270 268 { 271 269 rc = GetLastError(); 272 k ldrHlpAssert(0);273 } 274 return rc; 275 276 #else 277 # error "port me" 278 #endif 279 } 280 270 kHlpAssert(0); 271 } 272 return rc; 273 274 #else 275 # error "port me" 276 #endif 277 } 278 -
trunk/kStuff/kHlp/Bare/kHlpBarePath.c
r3570 r3573 29 29 * Header Files * 30 30 *******************************************************************************/ 31 #include <k/k Ldr.h>32 #include "kLdrHlp.h"31 #include <k/kHlpPath.h> 32 #include <k/kHlpString.h> 33 33 34 34 … … 40 40 * @param pszFilename The filename to parse. 41 41 */ 42 char *k ldrHlpGetFilename(const char *pszFilename)42 char *kHlpGetFilename(const char *pszFilename) 43 43 { 44 44 const char *pszLast = NULL; … … 75 75 * @param pszFilename The filename to parse. 76 76 */ 77 char *k ldrHlpGetSuff(const char *pszFilename)77 char *kHlpGetSuff(const char *pszFilename) 78 78 { 79 79 const char *pszDot = NULL; 80 pszFilename = k ldrHlpGetFilename(pszFilename);80 pszFilename = kHlpGetFilename(pszFilename); 81 81 for (;;) 82 82 { … … 103 103 * @param pszFilename The filename to parse. 104 104 */ 105 char *k ldrHlpGetExt(const char *pszFilename)105 char *kHlpGetExt(const char *pszFilename) 106 106 { 107 char *psz = k ldrHlpGetSuff(pszFilename);107 char *psz = kHlpGetSuff(pszFilename); 108 108 return *psz ? psz + 1 : psz; 109 109 } … … 118 118 * @param pszFilename The filename to parse. 119 119 */ 120 int k ldrHlpIsFilenameOnly(const char *pszFilename)120 int kHlpIsFilenameOnly(const char *pszFilename) 121 121 { 122 122 for (;;) -
trunk/kStuff/kHlp/Bare/kHlpBareSem.c
r3570 r3573 29 29 * Header Files * 30 30 *******************************************************************************/ 31 #ifdef __OS2__ 31 #include <k/kDefs.h> 32 #include <k/kHlpSem.h> 33 34 #if K_OS == K_OS_OS2 32 35 # define INCL_BASE 33 36 # define INCL_ERRORS 34 37 # include <os2.h> 35 #elif defined(__WIN__)38 #elif K_OS == K_OS_WINDOWS 36 39 # include <Windows.h> 37 40 #else … … 39 42 #endif 40 43 41 #include <k/kLdr.h>42 #include "kLdrHlp.h"43 44 44 45 … … 46 47 * Global Variables * 47 48 *******************************************************************************/ 48 #if def __OS2__49 #if K_OS == K_OS_OS2 49 50 /** The loader sempahore. */ 50 51 static HMTX g_hmtx; 51 52 52 #elif defined(__WIN__)53 #elif K_OS == K_OS_WINDOWS 53 54 /** The loader sempahore. */ 54 55 static CRITICAL_SECTION g_CritSect; … … 63 64 * @returns 0 on success, non-zero OS status code on failure. 64 65 */ 65 int k ldrHlpSemInit(void)66 int kHlpSemInit(void) 66 67 { 67 #if def __OS2__68 #if K_OS == K_OS_OS2 68 69 APIRET rc; 69 70 g_hmtx = NULLHANDLE; … … 72 73 return rc; 73 74 74 #elif defined(__WIN__)75 #elif K_OS == K_OS_WINDOWS 75 76 InitializeCriticalSection(&g_CritSect); 76 77 … … 85 86 * Terminates the loader semaphore. 86 87 */ 87 void k ldrHlpSemTerm(void)88 void kHlpSemTerm(void) 88 89 { 89 #if def __OS2__90 #if K_OS == K_OS_OS2 90 91 HMTX hmtx = g_hmtx; 91 92 g_hmtx = NULLHANDLE; 92 93 DosCloseMutexSem(hmtx); 93 94 94 #elif defined(__WIN__)95 #elif K_OS == K_OS_WINDOWS 95 96 DeleteCriticalSection(&g_CritSect); 96 97 … … 107 108 * @returns 0 on success, non-zero OS status code on failure. 108 109 */ 109 int k ldrHlpSemRequest(void)110 int kHlpSemRequest(void) 110 111 { 111 #if def __OS2__112 #if K_OS == K_OS_OS2 112 113 APIRET rc = DosRequestMutexSem(g_hmtx, 5000); 113 114 if (rc == ERROR_TIMEOUT || rc == ERROR_SEM_TIMEOUT || rc == ERROR_INTERRUPT) … … 125 126 return rc; 126 127 127 #elif defined(__WIN__)128 #elif K_OS == K_OS_WINDOWS 128 129 EnterCriticalSection(&g_CritSect); 129 130 return 0; … … 139 140 * The caller is responsible for making sure it's the semaphore owner! 140 141 */ 141 void k ldrHlpSemRelease(void)142 void kHlpSemRelease(void) 142 143 { 143 #if def __OS2__144 #if K_OS == K_OS_OS2 144 145 APIRET rc = DosReleaseMutexSem(g_hmtx); 145 k ldrHlpAssert(!rc); (void)rc;146 kHlpAssert(!rc); (void)rc; 146 147 147 #elif defined(__WIN__)148 #elif K_OS == K_OS_WINDOWS 148 149 LeaveCriticalSection(&g_CritSect); 149 150 -
trunk/kStuff/kHlp/Bare/kHlpBareStr.c
r3570 r3573 1 1 /* $Id$ */ 2 2 /** @file 3 * kHlpBare - String Manipulation. 4 */ 5 6 /* 7 * Copyright (c) 2006-2007 knut st. osmundsen <bird-src-spam@anduin.net> 3 8 * 4 * kLdr - The Dynamic Loader, String Helper Functions.9 * This file is part of kStuff. 5 10 * 6 * Copyright (c) 2006 knut st. osmundsen <bird-kbuild-src@anduin.net> 11 * kStuff is free software; you can redistribute it and/or 12 * modify it under the terms of the GNU Lesser General Public 13 * License as published by the Free Software Foundation; either 14 * version 2.1 of the License, or (at your option) any later version. 7 15 * 16 * kStuff is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 19 * Lesser General Public License for more details. 8 20 * 9 * This file is part of kLdr. 10 * 11 * kLdr is free software; you can redistribute it and/or modify 12 * it under the terms of the GNU General Public License as published by 13 * the Free Software Foundation; either version 2 of the License, or 14 * (at your option) any later version. 15 * 16 * kLdr is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with kLdr; if not, write to the Free Software 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * You should have received a copy of the GNU Lesser General Public 22 * License along with kStuff; if not, write to the Free Software 23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 24 24 * 25 25 */ 26 27 26 28 27 /******************************************************************************* 29 28 * Header Files * 30 29 *******************************************************************************/ 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h" 30 #include <k/kHlpString.h> 33 31 34 32 35 /** 36 * Converts an signed integer to an ascii string. 37 * 38 * @returns psz. 39 * @param psz Pointer to the output buffer. 40 * @param cch The size of the output buffer. 41 * @param lVal The value. 42 * @param iBase The base to format it. (2,8,10 or 16) 43 */ 44 char *kldrHlpInt2Ascii(char *psz, KSIZE cch, long lVal, unsigned iBase) 45 { 46 static const char s_szDigits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; 47 char *pszRet = psz; 48 49 if (cch >= (lVal < 0 ? 3U : 2U) && psz) 50 { 51 /* prefix */ 52 if (lVal < 0) 53 { 54 *psz++ = '-'; 55 cch--; 56 lVal = -lVal; 57 } 58 59 /* the digits */ 60 do 61 { 62 *psz++ = s_szDigits[lVal % iBase]; 63 cch--; 64 lVal /= iBase; 65 } while (lVal && cch > 1); 66 67 /* overflow indicator */ 68 if (lVal) 69 psz[-1] = '+'; 70 } 71 else if (!pszRet) 72 return pszRet; 73 else if (cch < 1 || !pszRet) 74 return pszRet; 75 else 76 *psz++ = '+'; 77 *psz = '\0'; 78 79 return pszRet; 80 } 81 82 83 KSIZE kLdrHlpStrNLen(const char *psz, KSIZE cchMax) 33 KSIZE kHlpStrNLen(const char *psz, KSIZE cchMax) 84 34 { 85 35 const char * const pszStart = psz; … … 90 40 91 41 92 int k LdrHlpMemIComp(const void *pv1, const void *pv2, KSIZE cb)42 int kHlpMemIComp(const void *pv1, const void *pv2, KSIZE cb) 93 43 { 94 44 const KU8 *pb1 = (const KU8 *)pv1; … … 110 60 111 61 112 int k LdrHlpStrIComp(const char *pv1, const char *pv2)62 int kHlpStrIComp(const char *pv1, const char *pv2) 113 63 { 114 64 const KU8 *pb1 = (const KU8 *)pv1; … … 132 82 133 83 134 #ifdef k LdrHlpStrChr_needed135 char *k LdrHlpStrChr(const char *psz, int ch)84 #ifdef kHlpStrChr_needed 85 char *kHlpStrChr(const char *psz, int ch) 136 86 { 137 87 while (*psz) … … 146 96 147 97 148 #ifdef k LdrHlpMemChr_needed149 void *k LdrHlpMemChr(const void *pv, int ch, KSIZE cb)98 #ifdef kHlpMemChr_needed 99 void *kHlpMemChr(const void *pv, int ch, KSIZE cb) 150 100 { 151 101 const KU8 *pb = (const KU8 *)pv; … … 162 112 163 113 164 #ifdef k LdrHlpMemMove_needed165 void *k LdrHlpMemMove(void *pv1, const void *pv2, KSIZE cb)114 #ifdef kHlpMemMove_needed 115 void *kHlpMemMove(void *pv1, const void *pv2, KSIZE cb) 166 116 { 167 117 KU8 *pbDst = (KU8 *)pv1; … … 177 127 178 128 179 #ifdef k LdrHlpStrNComp_needed180 int k LdrHlpStrNComp(const char *psz1, const char *psz2, KSIZE cch)129 #ifdef kHlpStrNComp_needed 130 int kHlpStrNComp(const char *psz1, const char *psz2, KSIZE cch) 181 131 { 182 132 while (cch-- > 0) -
trunk/kStuff/kHlp/Makefile.kmk
r3572 r3573 1 1 # $Id$ 2 2 ## @file 3 # kHlp CRT - The CRT BasedHelper API.3 # kHlp - The Helper API. 4 4 # 5 5 … … 25 25 # 26 26 27 DEPTH = ../.. /..27 DEPTH = ../.. 28 28 include $(PATH_KBUILD)/header.kmk 29 30 # 31 # kHlpBaseStatic 32 # 33 LIBRARIES += kHlpBaseStatic 34 kHlpBaseStatic_TEMPLATE = kStuffLIB 35 kHlpBaseStatic_SOURCES = \ 36 Generic/kHlpInt2Ascii.c \ 37 \ 38 Bare/kHlpBareAssert.c \ 39 Bare/kHlpBareHeap.c \ 40 Bare/kHlpBareEnv.c \ 41 Bare/kHlpBareMem.c \ 42 Bare/kHlpBarePath.c \ 43 Bare/kHlpBareProcess.c \ 44 Bare/kHlpBareSem.c \ 45 Bare/kHlpBareStr.c \ 46 Bare/kHlpBareThread.c \ 29 47 30 48 # … … 34 52 kHlpCRTStatic_TEMPLATE = kStuffLIB 35 53 kHlpCRTStatic_SOURCES = \ 36 kHlpCRTAlloc.cpp \ 37 kHlpCRTString.cpp \ 54 \ 55 CRT/kHlpCRTAlloc.cpp \ 56 CRT/kHlpCRTString.cpp \ 38 57 39 58 # Generate the rules -
trunk/kStuff/kLdr/Makefile.kmk
r3570 r3573 120 120 kLdrDyldOS.c \ 121 121 kLdrErr.c \ 122 kLdrHlp.c \123 kLdrHlpHeap.c \124 kLdrHlpMem.c \125 kLdrHlpPath.c \126 kLdrHlpSem.c \127 kLdrHlpStr.c \128 122 kLdrMisc.c \ 129 123 kLdrRdr.c \ … … 137 131 kLdr-os2.def \ 138 132 kLdr-os2.c \ 139 kLdrHlp-gcc.c \140 133 kLdrA-os2.asm 141 134 kLdr_SOURCES.win = \ 142 135 kLdr-win.def \ 143 136 kLdr-win.c 137 kLdr_LIBS += \ 138 $(PATH_LIB)/kHlpBaseStatic$(SUFF_LIB) 144 139 145 140 kLdrErr.c_DEPS = $(PATH_TARGET)/kldrErrConsts.h … … 197 192 # Heap testcase. 198 193 # 199 PROGRAMS += tstkLdrHeap194 #PROGRAMS += tstkLdrHeap 200 195 tstkLdrHeap_TEMPLATE = TST 201 196 tstkLdrHeap_SOURCES = \ 202 197 tstkLdrHeap.c \ 203 k LdrHlp.c \204 k LdrHlpHeap.c \205 k LdrHlpMem.c \206 k LdrHlpPath.c \207 k LdrHlpSem.c \208 k LdrHlpStr.c \198 kHlp.c \ 199 kHlpHeap.c \ 200 kHlpMem.c \ 201 kHlpPath.c \ 202 kHlpSem.c \ 203 kHlpStr.c \ 209 204 210 205 # -
trunk/kStuff/kLdr/kLdr-os2.c
r3570 r3573 35 35 #include <k/kLdr.h> 36 36 #include "kLdrInternal.h" 37 #include "kLdrHlp.h"38 37 39 38 -
trunk/kStuff/kLdr/kLdr-win.c
r3570 r3573 34 34 #include <k/kLdr.h> 35 35 #include "kLdrInternal.h" 36 #include "kLdrHlp.h"37 36 38 37 -
trunk/kStuff/kLdr/kLdr.c
r3570 r3573 52 52 *******************************************************************************/ 53 53 #include <k/kLdr.h> 54 #include "kLdrHlp.h"55 54 #include "kLdrInternal.h" 56 55 … … 95 94 break; 96 95 } 97 k ldrHlpSleep(1);96 kHlpSleep(1); 98 97 } 99 98 … … 101 100 * Do the initialization. 102 101 */ 103 rc = k ldrHlpHeapInit();102 rc = kHlpHeapInit(); 104 103 if (!rc) 105 104 { 106 rc = k ldrHlpSemInit();105 rc = kHlpSemInit(); 107 106 if (!rc) 108 107 { … … 113 112 return 0; 114 113 } 115 k ldrHlpSemTerm();114 kHlpSemTerm(); 116 115 } 117 k ldrHlpHeapTerm();116 kHlpHeapTerm(); 118 117 } 119 118 g_fInitialized = -2; … … 135 134 * Do the termination. 136 135 */ 137 k ldrHlpSemTerm();138 k ldrHlpHeapTerm();136 kHlpSemTerm(); 137 kHlpHeapTerm(); 139 138 140 139 /* done */ -
trunk/kStuff/kLdr/kLdrDyld.c
r3570 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 … … 45 44 */ 46 45 #ifdef KLDRDYLD_STRICT 47 # define KLDRDYLD_ASSERT(expr) k ldrHlpAssert(expr)46 # define KLDRDYLD_ASSERT(expr) kHlpAssert(expr) 48 47 #else 49 48 # define KLDRDYLD_ASSERT(expr) do {} while (0) … … 267 266 /** @todo make sense of this default prefix/suffix stuff. */ 268 267 if (pArgs->szDefPrefix[0] != '\0') 269 k LdrHlpMemCopy(kLdrDyldDefPrefix, pArgs->szDefPrefix, K_MIN(sizeof(pArgs->szDefPrefix), sizeof(kLdrDyldDefPrefix)));268 kHlpMemCopy(kLdrDyldDefPrefix, pArgs->szDefPrefix, K_MIN(sizeof(pArgs->szDefPrefix), sizeof(kLdrDyldDefPrefix))); 270 269 if (pArgs->szDefSuffix[0] != '\0') 271 k LdrHlpMemCopy(kLdrDyldDefSuffix, pArgs->szDefSuffix, K_MIN(sizeof(pArgs->szDefSuffix), sizeof(kLdrDyldDefSuffix)));270 kHlpMemCopy(kLdrDyldDefSuffix, pArgs->szDefSuffix, K_MIN(sizeof(pArgs->szDefSuffix), sizeof(kLdrDyldDefSuffix))); 272 271 273 272 /** @todo append that path to the one for the specified search method. */ 274 273 /** @todo create a function for doing this, an exposed api preferably. */ 275 274 /* append path */ 276 cbStack = sizeof(kLdrDyldLibraryPath) - k LdrHlpStrLen(kLdrDyldLibraryPath); /* borrow cbStack for a itty bit. */277 k LdrHlpMemCopy(kLdrDyldLibraryPath, pArgs->szLibPath, K_MIN(sizeof(pArgs->szLibPath), cbStack));275 cbStack = sizeof(kLdrDyldLibraryPath) - kHlpStrLen(kLdrDyldLibraryPath); /* borrow cbStack for a itty bit. */ 276 kHlpMemCopy(kLdrDyldLibraryPath, pArgs->szLibPath, K_MIN(sizeof(pArgs->szLibPath), cbStack)); 278 277 kLdrDyldLibraryPath[sizeof(kLdrDyldLibraryPath) - 1] = '\0'; 279 278 … … 281 280 * Make sure we own the loader semaphore (necessary for init). 282 281 */ 283 rc = k ldrHlpSemRequest();282 rc = kHlpSemRequest(); 284 283 if (rc) 285 284 kldrDyldFailure(rc, "Sem req. failure, rc=%d", rc); … … 333 332 *pszErr = '\0'; 334 333 *phMod = NIL_HKLDRMOD; 335 K LDRHLP_VALIDATE_STRING(pszDll);336 K LDRHLP_VALIDATE_OPTIONAL_STRING(pszPrefix);337 K LDRHLP_VALIDATE_OPTIONAL_STRING(pszSuffix);338 K LDRHLP_VALIDATE_ENUM(enmSearch, KLDRDYLD_SEARCH);339 K LDRHLP_VALIDATE_OPTIONAL_BUFFER(pszErr, cchErr);334 K_VALIDATE_STRING(pszDll); 335 K_VALIDATE_OPTIONAL_STRING(pszPrefix); 336 K_VALIDATE_OPTIONAL_STRING(pszSuffix); 337 K_VALIDATE_ENUM(enmSearch, KLDRDYLD_SEARCH); 338 K_VALIDATE_OPTIONAL_BUFFER(pszErr, cchErr); 340 339 341 340 /* get the semaphore and do the job. */ 342 rc = k ldrHlpSemRequest();341 rc = kHlpSemRequest(); 343 342 if (!rc) 344 343 { … … 349 348 g_cActiveLoadCalls--; 350 349 kldrDyldDoModuleTerminationAndGarabageCollection(); 351 k ldrHlpSemRelease();350 kHlpSemRelease(); 352 351 *phMod = pMod ? pMod->hMod : NIL_HKLDRMOD; 353 352 } … … 370 369 371 370 /* get sem & do work */ 372 rc = k ldrHlpSemRequest();371 rc = kHlpSemRequest(); 373 372 if (!rc) 374 373 { … … 378 377 g_cActiveUnloadCalls--; 379 378 kldrDyldDoModuleTerminationAndGarabageCollection(); 380 k ldrHlpSemRelease();379 kHlpSemRelease(); 381 380 } 382 381 return rc; … … 406 405 /* validate & initialize */ 407 406 *phMod = NIL_HKLDRMOD; 408 K LDRHLP_VALIDATE_STRING(pszDll);407 K_VALIDATE_STRING(pszDll); 409 408 410 409 /* get sem & do work */ 411 rc = k ldrHlpSemRequest();410 rc = kHlpSemRequest(); 412 411 if (!rc) 413 412 { 414 413 PKLDRDYLDMOD pMod = NULL; 415 414 rc = kldrDyldDoFindByName(pszDll, pszPrefix, pszSuffix, enmSearch, fFlags, &pMod); 416 k ldrHlpSemRelease();415 kHlpSemRelease(); 417 416 *phMod = pMod ? pMod->hMod : NIL_HKLDRMOD; 418 417 } … … 446 445 447 446 /* get sem & do work */ 448 rc = k ldrHlpSemRequest();447 rc = kHlpSemRequest(); 449 448 if (!rc) 450 449 { 451 450 PKLDRDYLDMOD pMod = NULL; 452 451 rc = kldrDyldDoFindByAddress(Address, &pMod, piSegment, poffSegment); 453 k ldrHlpSemRelease();452 kHlpSemRelease(); 454 453 *phMod = pMod ? pMod->hMod : NIL_HKLDRMOD; 455 454 } … … 476 475 *pszName = '\0'; 477 476 KLDRDYLD_VALIDATE_HKLDRMOD(hMod); 478 K LDRHLP_VALIDATE_BUFFER(pszName, cchName);477 K_VALIDATE_BUFFER(pszName, cchName); 479 478 480 479 /* get sem & do work */ 481 rc = k ldrHlpSemRequest();480 rc = kHlpSemRequest(); 482 481 if (!rc) 483 482 { 484 483 rc = kldrDyldDoGetName(hMod, pszName, cchName); 485 k ldrHlpSemRelease();484 kHlpSemRelease(); 486 485 } 487 486 return rc; … … 507 506 *pszFilename = '\0'; 508 507 KLDRDYLD_VALIDATE_HKLDRMOD(hMod); 509 K LDRHLP_VALIDATE_BUFFER(pszFilename, cchFilename);508 K_VALIDATE_BUFFER(pszFilename, cchFilename); 510 509 511 510 /* get sem & do work */ 512 rc = k ldrHlpSemRequest();511 rc = kHlpSemRequest(); 513 512 if (!rc) 514 513 { 515 514 rc = kldrDyldDoGetFilename(hMod, pszFilename, cchFilename); 516 k ldrHlpSemRelease();515 kHlpSemRelease(); 517 516 } 518 517 return rc; … … 545 544 return KLDR_ERR_INVALID_PARAMETER; 546 545 KLDRDYLD_VALIDATE_HKLDRMOD(hMod); 547 K LDRHLP_VALIDATE_OPTIONAL_STRING(pszSymbolName);546 K_VALIDATE_OPTIONAL_STRING(pszSymbolName); 548 547 549 548 /* get sem & do work */ 550 rc = k ldrHlpSemRequest();549 rc = kHlpSemRequest(); 551 550 if (!rc) 552 551 { 553 552 rc = kldrDyldDoQuerySymbol(hMod, uSymbolOrdinal, pszSymbolName, pValue, pfKind); 554 k ldrHlpSemRelease();553 kHlpSemRelease(); 555 554 } 556 555 return rc; … … 1086 1085 KU32 cNew = g_cStackModsAllocated ? g_cStackModsAllocated * 2 : 128; 1087 1086 void *pvOld = g_papStackMods; 1088 void *pvNew = k ldrHlpAlloc(cNew * sizeof(g_papStackMods[0]));1087 void *pvNew = kHlpAlloc(cNew * sizeof(g_papStackMods[0])); 1089 1088 if (!pvNew) 1090 1089 return KLDR_ERR_NO_MEMORY; 1091 k LdrHlpMemCopy(pvNew, pvOld, g_cStackMods * sizeof(g_papStackMods[0]));1090 kHlpMemCopy(pvNew, pvOld, g_cStackMods * sizeof(g_papStackMods[0])); 1092 1091 g_papStackMods = (PPKLDRDYLDMOD)pvNew; 1093 k ldrHlpFree(pvOld);1092 kHlpFree(pvOld); 1094 1093 } 1095 1094 … … 1472 1471 /** @todo print it. */ 1473 1472 if (g_fBootstrapping); 1474 k ldrHlpExit(1);1473 kHlpExit(1); 1475 1474 return rc; 1476 1475 } … … 1491 1490 /* if no error string, format the rc into a string. */ 1492 1491 if (!g_szkLdrDyldError[0] && rc) 1493 k ldrHlpInt2Ascii(g_szkLdrDyldError, sizeof(g_szkLdrDyldError), rc, 10);1492 kHlpInt2Ascii(g_szkLdrDyldError, sizeof(g_szkLdrDyldError), rc, 10); 1494 1493 1495 1494 /* copy it if we got something. */ 1496 1495 if (cchErr && pszErr && g_szkLdrDyldError[0]) 1497 1496 { 1498 cchToCopy = k LdrHlpStrLen(g_szkLdrDyldError);1497 cchToCopy = kHlpStrLen(g_szkLdrDyldError); 1499 1498 if (cchToCopy >= cchErr) 1500 1499 cchToCopy = cchErr - 1; 1501 k LdrHlpMemCopy(pszErr, g_szkLdrDyldError, cchToCopy);1500 kHlpMemCopy(pszErr, g_szkLdrDyldError, cchToCopy); 1502 1501 pszErr[cchToCopy] = '\0'; 1503 1502 } -
trunk/kStuff/kLdr/kLdrDyldFind.c
r3570 r3573 52 52 53 53 #include <k/kLdr.h> 54 #include "kLdrHlp.h"55 54 #include "kLdrInternal.h" 55 56 56 57 57 /******************************************************************************* … … 66 66 */ 67 67 #ifdef KLDRDYLDFIND_STRICT 68 # define KLDRDYLDFIND_ASSERT(expr) k ldrHlpAssert(expr)68 # define KLDRDYLDFIND_ASSERT(expr) kHlpAssert(expr) 69 69 #else 70 70 # define KLDRDYLDFIND_ASSERT(expr) do {} while (0) … … 225 225 * The kLdr search parameters. 226 226 */ 227 rc = k ldrHlpGetEnv("KLDR_LIBRARY_PATH", kLdrDyldLibraryPath, sizeof(kLdrDyldLibraryPath));228 rc = k ldrHlpGetEnv("KLDR_DEF_PREFIX", szTmp, sizeof(szTmp));227 rc = kHlpGetEnv("KLDR_LIBRARY_PATH", kLdrDyldLibraryPath, sizeof(kLdrDyldLibraryPath)); 228 rc = kHlpGetEnv("KLDR_DEF_PREFIX", szTmp, sizeof(szTmp)); 229 229 if (!rc) 230 k LdrHlpMemCopy(kLdrDyldDefPrefix, szTmp, sizeof(szTmp));231 rc = k ldrHlpGetEnv("KLDR_DEF_SUFFIX", szTmp, sizeof(szTmp));230 kHlpMemCopy(kLdrDyldDefPrefix, szTmp, sizeof(szTmp)); 231 rc = kHlpGetEnv("KLDR_DEF_SUFFIX", szTmp, sizeof(szTmp)); 232 232 if (!rc) 233 k LdrHlpMemCopy(kLdrDyldDefSuffix, szTmp, sizeof(szTmp));233 kHlpMemCopy(kLdrDyldDefSuffix, szTmp, sizeof(szTmp)); 234 234 235 235 /* … … 251 251 252 252 #else 253 k ldrHlpGetEnv("KLDR_OS2_LIBPATH", kLdrDyldOS2Libpath, sizeof(kLdrDyldOS2Libpath));254 k ldrHlpGetEnv("KLDR_OS2_LIBPATHSTRICT", kLdrDyldOS2LibpathStrict, sizeof(kLdrDyldOS2LibpathStrict));253 kHlpGetEnv("KLDR_OS2_LIBPATH", kLdrDyldOS2Libpath, sizeof(kLdrDyldOS2Libpath)); 254 kHlpGetEnv("KLDR_OS2_LIBPATHSTRICT", kLdrDyldOS2LibpathStrict, sizeof(kLdrDyldOS2LibpathStrict)); 255 255 if ( kLdrDyldOS2LibpathStrict[0] == 'T' 256 256 || kLdrDyldOS2LibpathStrict[0] == 't') … … 259 259 kLdrDyldOS2LibpathStrict[0] = '\0'; 260 260 kLdrDyldOS2LibpathStrict[1] = '\0'; 261 k ldrHlpGetEnv("KLDR_OS2_BEGINLIBPATH", kLdrDyldOS2BeginLibpath, sizeof(kLdrDyldOS2BeginLibpath));262 k ldrHlpGetEnv("KLDR_OS2_ENDLIBPATH", kLdrDyldOS2EndLibpath, sizeof(kLdrDyldOS2EndLibpath));261 kHlpGetEnv("KLDR_OS2_BEGINLIBPATH", kLdrDyldOS2BeginLibpath, sizeof(kLdrDyldOS2BeginLibpath)); 262 kHlpGetEnv("KLDR_OS2_ENDLIBPATH", kLdrDyldOS2EndLibpath, sizeof(kLdrDyldOS2EndLibpath)); 263 263 #endif 264 264 … … 273 273 if (cch >= sizeof(kLdrDyldWindowsDir)) 274 274 return (rc = GetLastError()) ? rc : -1; 275 k ldrHlpGetEnv("PATH", kLdrDyldWindowsPath, sizeof(kLdrDyldWindowsPath));275 kHlpGetEnv("PATH", kLdrDyldWindowsPath, sizeof(kLdrDyldWindowsPath)); 276 276 #else 277 k ldrHlpGetEnv("KLDR_WINDOWS_SYSTEM_DIR", kLdrDyldWindowsSystemDir, sizeof(kLdrDyldWindowsSystemDir));278 k ldrHlpGetEnv("KLDR_WINDOWS_DIR", kLdrDyldWindowsDir, sizeof(kLdrDyldWindowsDir));279 rc = k ldrHlpGetEnv("KLDR_WINDOWS_PATH", kLdrDyldWindowsPath, sizeof(kLdrDyldWindowsPath));277 kHlpGetEnv("KLDR_WINDOWS_SYSTEM_DIR", kLdrDyldWindowsSystemDir, sizeof(kLdrDyldWindowsSystemDir)); 278 kHlpGetEnv("KLDR_WINDOWS_DIR", kLdrDyldWindowsDir, sizeof(kLdrDyldWindowsDir)); 279 rc = kHlpGetEnv("KLDR_WINDOWS_PATH", kLdrDyldWindowsPath, sizeof(kLdrDyldWindowsPath)); 280 280 if (rc) 281 k ldrHlpGetEnv("PATH", kLdrDyldWindowsPath, sizeof(kLdrDyldWindowsPath));281 kHlpGetEnv("PATH", kLdrDyldWindowsPath, sizeof(kLdrDyldWindowsPath)); 282 282 #endif 283 283 … … 285 285 * The Unix search parameters. 286 286 */ 287 rc = k ldrHlpGetEnv("KLDR_UNIX_LIBRARY_PATH", kLdrDyldUnixLibraryPath, sizeof(kLdrDyldUnixLibraryPath));287 rc = kHlpGetEnv("KLDR_UNIX_LIBRARY_PATH", kLdrDyldUnixLibraryPath, sizeof(kLdrDyldUnixLibraryPath)); 288 288 if (rc) 289 k ldrHlpGetEnv("LD_LIBRARY_PATH", kLdrDyldUnixLibraryPath, sizeof(kLdrDyldUnixLibraryPath));289 kHlpGetEnv("LD_LIBRARY_PATH", kLdrDyldUnixLibraryPath, sizeof(kLdrDyldUnixLibraryPath)); 290 290 291 291 (void)cch; … … 310 310 if (!rc) 311 311 { 312 *k ldrHlpGetFilename(kLdrDyldAppDir) = '\0';313 k LdrHlpMemCopy(kLdrDyldWindowsAppDir, kLdrDyldAppDir, sizeof(kLdrDyldAppDir));312 *kHlpGetFilename(kLdrDyldAppDir) = '\0'; 313 kHlpMemCopy(kLdrDyldWindowsAppDir, kLdrDyldAppDir, sizeof(kLdrDyldAppDir)); 314 314 } 315 315 else … … 324 324 if (dwSize > 0) 325 325 { 326 *k ldrHlpGetFilename(kLdrDyldAppDir) = '\0';327 k LdrHlpMemCopy(kLdrDyldWindowsAppDir, kLdrDyldAppDir, sizeof(kLdrDyldAppDir));326 *kHlpGetFilename(kLdrDyldAppDir) = '\0'; 327 kHlpMemCopy(kLdrDyldWindowsAppDir, kLdrDyldAppDir, sizeof(kLdrDyldAppDir)); 328 328 } 329 329 else … … 364 364 * that should be opened directly and not a module name to be searched for. 365 365 */ 366 if (!k ldrHlpIsFilenameOnly(pszName))366 if (!kHlpIsFilenameOnly(pszName)) 367 367 rc = kldrDyldFindTryOpen(pszName, &pRdr); 368 368 else if (!(fFlags & KLDRDYLD_LOAD_FLAGS_EXECUTABLE)) … … 377 377 { 378 378 const char *pszFilename = kLdrRdrName(pRdr); 379 const KSIZE cchFilename = k LdrHlpStrLen(pszFilename);379 const KSIZE cchFilename = kHlpStrLen(pszFilename); 380 380 PKLDRDYLDMOD pCur; 381 381 for (pCur = kLdrDyldHead; pCur; pCur = pCur->Load.pNext) 382 382 KLDRDYLDFIND_ASSERT( pCur->pMod->cchFilename != cchFilename 383 || k LdrHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename));383 || kHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename)); 384 384 } 385 385 #endif … … 391 391 { 392 392 const char *pszFilename = kLdrRdrName(pRdr); 393 const KSIZE cchFilename = k LdrHlpStrLen(pszFilename);393 const KSIZE cchFilename = kHlpStrLen(pszFilename); 394 394 PKLDRDYLDMOD pCur; 395 395 for (pCur = kLdrDyldHead; pCur; pCur = pCur->Load.pNext) … … 397 397 if ( !pCur->fGlobalOrSpecific 398 398 && pCur->pMod->cchFilename == cchFilename 399 && !k LdrHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename))399 && !kHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename)) 400 400 { 401 401 kLdrRdrClose(pRdr); … … 405 405 } 406 406 KLDRDYLDFIND_ASSERT( pCur->pMod->cchFilename != cchFilename 407 || k LdrHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename));407 || kHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename)); 408 408 } 409 409 } … … 449 449 return rc; 450 450 Args.pszName = pszName; 451 Args.cchName = k LdrHlpStrLen(pszName);452 Args.cchPrefix = Args.pszPrefix ? k LdrHlpStrLen(Args.pszPrefix) : 0;453 Args.cchSuffix = Args.pszSuffix ? k LdrHlpStrLen(Args.pszSuffix) : 0;451 Args.cchName = kHlpStrLen(pszName); 452 Args.cchPrefix = Args.pszPrefix ? kHlpStrLen(Args.pszPrefix) : 0; 453 Args.cchSuffix = Args.pszSuffix ? kHlpStrLen(Args.pszSuffix) : 0; 454 454 Args.cchMaxLength = Args.cchName + Args.cchSuffix + Args.cchPrefix; 455 455 Args.fFlags = fFlags; … … 467 467 if (kLdrDyldAppDir[0] != '\0') 468 468 { 469 rc = kldrDyldFindTryOpenPath(kLdrDyldAppDir, k LdrHlpStrLen(kLdrDyldAppDir), &Args);469 rc = kldrDyldFindTryOpenPath(kLdrDyldAppDir, kHlpStrLen(kLdrDyldAppDir), &Args); 470 470 if (rc != KLDR_ERR_MODULE_NOT_FOUND) 471 471 break; … … 494 494 { 495 495 kldrDyldFindLazyInitAppDir(); 496 rc = kldrDyldFindTryOpenPath(kLdrDyldWindowsAppDir, k LdrHlpStrLen(kLdrDyldWindowsAppDir), &Args);496 rc = kldrDyldFindTryOpenPath(kLdrDyldWindowsAppDir, kHlpStrLen(kLdrDyldWindowsAppDir), &Args); 497 497 if (rc != KLDR_ERR_MODULE_NOT_FOUND) 498 498 break; … … 503 503 break; 504 504 } 505 rc = kldrDyldFindTryOpenPath(kLdrDyldWindowsSystemDir, k LdrHlpStrLen(kLdrDyldWindowsSystemDir), &Args);505 rc = kldrDyldFindTryOpenPath(kLdrDyldWindowsSystemDir, kHlpStrLen(kLdrDyldWindowsSystemDir), &Args); 506 506 if (rc != KLDR_ERR_MODULE_NOT_FOUND) 507 507 break; 508 rc = kldrDyldFindTryOpenPath(kLdrDyldWindowsDir, k LdrHlpStrLen(kLdrDyldWindowsDir), &Args);508 rc = kldrDyldFindTryOpenPath(kLdrDyldWindowsDir, kHlpStrLen(kLdrDyldWindowsDir), &Args); 509 509 if (rc != KLDR_ERR_MODULE_NOT_FOUND) 510 510 break; … … 528 528 } 529 529 530 default: k ldrHlpAssert(!"internal error"); return -1;530 default: kHlpAssert(!"internal error"); return -1; 531 531 } 532 532 return rc; … … 563 563 return rc; 564 564 Args.pszName = pszName; 565 Args.cchName = k LdrHlpStrLen(pszName);566 Args.cchPrefix = Args.pszPrefix ? k LdrHlpStrLen(Args.pszPrefix) : 0;567 Args.cchSuffix = Args.pszSuffix ? k LdrHlpStrLen(Args.pszSuffix) : 0;565 Args.cchName = kHlpStrLen(pszName); 566 Args.cchPrefix = Args.pszPrefix ? kHlpStrLen(Args.pszPrefix) : 0; 567 Args.cchSuffix = Args.pszSuffix ? kHlpStrLen(Args.pszSuffix) : 0; 568 568 Args.cchMaxLength = Args.cchName + Args.cchSuffix + Args.cchPrefix; 569 569 Args.fFlags = fFlags; … … 579 579 if (kLdrDyldAppDir[0] != '\0') 580 580 { 581 rc = kldrDyldFindTryOpenPath(kLdrDyldAppDir, k LdrHlpStrLen(kLdrDyldAppDir), &Args);581 rc = kldrDyldFindTryOpenPath(kLdrDyldAppDir, kHlpStrLen(kLdrDyldAppDir), &Args); 582 582 if (rc != KLDR_ERR_MODULE_NOT_FOUND) 583 583 return rc; … … 591 591 { 592 592 KSIZE cch; 593 k ldrHlpGetEnv("KLDR_EXE_PATH", kLdrDyldExePath, sizeof(kLdrDyldExePath) - 10);594 cch = k LdrHlpStrLen(kLdrDyldExePath);593 kHlpGetEnv("KLDR_EXE_PATH", kLdrDyldExePath, sizeof(kLdrDyldExePath) - 10); 594 cch = kHlpStrLen(kLdrDyldExePath); 595 595 kLdrDyldExePath[cch++] = ';'; 596 k ldrHlpGetEnv("PATH", &kLdrDyldExePath[cch], sizeof(kLdrDyldExePath) - cch);596 kHlpGetEnv("PATH", &kLdrDyldExePath[cch], sizeof(kLdrDyldExePath) - cch); 597 597 } 598 598 return kldrDyldFindEnumeratePath(kLdrDyldExePath, &Args); … … 662 662 * The directory path. 663 663 */ 664 k LdrHlpMemCopy(s_szFilename, pchPath, cchPath);664 kHlpMemCopy(s_szFilename, pchPath, cchPath); 665 665 psz = &s_szFilename[cchPath]; 666 666 if (psz[-1] != '/' … … 677 677 if (pArgs->cchPrefix) 678 678 { 679 k LdrHlpMemCopy(psz, pArgs->pszPrefix, pArgs->cchPrefix);679 kHlpMemCopy(psz, pArgs->pszPrefix, pArgs->cchPrefix); 680 680 psz += pArgs->cchPrefix; 681 681 } 682 k LdrHlpMemCopy(psz, pArgs->pszName, pArgs->cchName);682 kHlpMemCopy(psz, pArgs->pszName, pArgs->cchName); 683 683 psz += pArgs->cchName; 684 684 if (pArgs->cchSuffix) 685 685 { 686 k LdrHlpMemCopy(psz, pArgs->pszSuffix, pArgs->cchSuffix);686 kHlpMemCopy(psz, pArgs->pszSuffix, pArgs->cchSuffix); 687 687 psz += pArgs->cchSuffix; 688 688 } … … 836 836 if (*ppszSuffix) 837 837 { 838 const KSIZE cchName = k LdrHlpStrLen(pszName);839 const KSIZE cchSuffix = k LdrHlpStrLen(*ppszSuffix);838 const KSIZE cchName = kHlpStrLen(pszName); 839 const KSIZE cchSuffix = kHlpStrLen(*ppszSuffix); 840 840 if ( cchName > cchSuffix 841 841 && ( fCaseSensitive 842 ? !k LdrHlpMemComp(pszName + cchName - cchSuffix, *ppszSuffix, cchSuffix)843 : !k LdrHlpMemIComp(pszName + cchName - cchSuffix, *ppszSuffix, cchSuffix))842 ? !kHlpMemComp(pszName + cchName - cchSuffix, *ppszSuffix, cchSuffix) 843 : !kHlpMemIComp(pszName + cchName - cchSuffix, *ppszSuffix, cchSuffix)) 844 844 ) 845 845 *ppszSuffix = NULL; … … 893 893 */ 894 894 fOS2LibpathStrict = 0; 895 if ( !k ldrHlpIsFilenameOnly(pszName)895 if ( !kHlpIsFilenameOnly(pszName) 896 896 || (fOS2LibpathStrict = ( enmSearch == KLDRDYLD_SEARCH_OS2 897 897 && kLdrDyldOS2LibpathStrict[0] == 'T') … … 908 908 /* do a filename based search. */ 909 909 const char *pszFilename = kLdrRdrName(pRdr); 910 const KSIZE cchFilename = k LdrHlpStrLen(pszFilename);910 const KSIZE cchFilename = kHlpStrLen(pszFilename); 911 911 PKLDRDYLDMOD pCur; 912 912 rc = KLDR_ERR_MODULE_NOT_FOUND; … … 914 914 { 915 915 if ( pCur->pMod->cchFilename == cchFilename 916 && !k LdrHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename))916 && !kHlpMemComp(pCur->pMod->pszFilename, pszFilename, cchFilename)) 917 917 { 918 918 *ppMod = pCur; … … 926 926 else 927 927 { 928 const KSIZE cchName = k LdrHlpStrLen(pszName);929 const KSIZE cchPrefix = pszPrefix ? k LdrHlpStrLen(pszPrefix) : 0;930 const KSIZE cchSuffix = pszSuffix ? k LdrHlpStrLen(pszSuffix) : 0;931 const char *pszNameSuffix = k ldrHlpGetSuff(pszName);928 const KSIZE cchName = kHlpStrLen(pszName); 929 const KSIZE cchPrefix = pszPrefix ? kHlpStrLen(pszPrefix) : 0; 930 const KSIZE cchSuffix = pszSuffix ? kHlpStrLen(pszSuffix) : 0; 931 const char *pszNameSuffix = kHlpGetSuff(pszName); 932 932 PKLDRDYLDMOD pCur = kLdrDyldHead; 933 933 … … 942 942 { 943 943 const unsigned fNameHasSuffix = pszNameSuffix 944 && k LdrHlpStrLen(pszNameSuffix) == cchSuffix945 && !k LdrHlpMemIComp(pszNameSuffix, pszName + cchName - cchSuffix, cchSuffix);944 && kHlpStrLen(pszNameSuffix) == cchSuffix 945 && !kHlpMemIComp(pszNameSuffix, pszName + cchName - cchSuffix, cchSuffix); 946 946 for (; pCur; pCur = pCur->Load.pNext) 947 947 { … … 953 953 /* match name */ 954 954 if ( pCur->pMod->cchName == cchName 955 && !k LdrHlpMemIComp(pCur->pMod->pszName, pszName, cchName))955 && !kHlpMemIComp(pCur->pMod->pszName, pszName, cchName)) 956 956 break; 957 957 if (cchPrefix) 958 958 { 959 959 if ( pCur->pMod->cchName == cchName + cchPrefix 960 && !k LdrHlpMemIComp(pCur->pMod->pszName, pszPrefix, cchPrefix)961 && !k LdrHlpMemIComp(pCur->pMod->pszName + cchPrefix, pszName, cchName))960 && !kHlpMemIComp(pCur->pMod->pszName, pszPrefix, cchPrefix) 961 && !kHlpMemIComp(pCur->pMod->pszName + cchPrefix, pszName, cchName)) 962 962 break; 963 963 } … … 965 965 { 966 966 if ( pCur->pMod->cchName == cchName + cchSuffix 967 && !k LdrHlpMemIComp(pCur->pMod->pszName + cchName, pszSuffix, cchSuffix)968 && !k LdrHlpMemIComp(pCur->pMod->pszName, pszName, cchName))967 && !kHlpMemIComp(pCur->pMod->pszName + cchName, pszSuffix, cchSuffix) 968 && !kHlpMemIComp(pCur->pMod->pszName, pszName, cchName)) 969 969 break; 970 970 if ( fNameHasSuffix 971 971 && pCur->pMod->cchName == cchName - cchSuffix 972 && !k LdrHlpMemIComp(pCur->pMod->pszName, pszName, cchName - cchSuffix))972 && !kHlpMemIComp(pCur->pMod->pszName, pszName, cchName - cchSuffix)) 973 973 break; 974 974 if (cchPrefix) 975 975 { 976 976 if ( pCur->pMod->cchName == cchName + cchPrefix + cchSuffix 977 && !k LdrHlpMemIComp(pCur->pMod->pszName, pszPrefix, cchPrefix)978 && !k LdrHlpMemIComp(pCur->pMod->pszName + cchPrefix, pszName, cchName)979 && !k LdrHlpMemIComp(pCur->pMod->pszName + cchPrefix + cchName, pszSuffix, cchSuffix))977 && !kHlpMemIComp(pCur->pMod->pszName, pszPrefix, cchPrefix) 978 && !kHlpMemIComp(pCur->pMod->pszName + cchPrefix, pszName, cchName) 979 && !kHlpMemIComp(pCur->pMod->pszName + cchPrefix + cchName, pszSuffix, cchSuffix)) 980 980 break; 981 981 if ( fNameHasSuffix 982 982 && pCur->pMod->cchName == cchName + cchPrefix - cchSuffix 983 && !k LdrHlpMemIComp(pCur->pMod->pszName, pszPrefix, cchPrefix)984 && !k LdrHlpMemIComp(pCur->pMod->pszName + cchPrefix, pszName, cchName - cchSuffix))983 && !kHlpMemIComp(pCur->pMod->pszName, pszPrefix, cchPrefix) 984 && !kHlpMemIComp(pCur->pMod->pszName + cchPrefix, pszName, cchName - cchSuffix)) 985 985 break; 986 986 } … … 991 991 { 992 992 const unsigned fNameHasSuffix = pszNameSuffix 993 && k LdrHlpStrLen(pszNameSuffix) == cchSuffix994 && k LdrHlpMemComp(pszNameSuffix, pszName + cchName - cchSuffix, cchSuffix);993 && kHlpStrLen(pszNameSuffix) == cchSuffix 994 && kHlpMemComp(pszNameSuffix, pszName + cchName - cchSuffix, cchSuffix); 995 995 for (; pCur; pCur = pCur->Load.pNext) 996 996 { … … 1002 1002 /* match name */ 1003 1003 if ( pCur->pMod->cchName == cchName 1004 && !k LdrHlpMemComp(pCur->pMod->pszName, pszName, cchName))1004 && !kHlpMemComp(pCur->pMod->pszName, pszName, cchName)) 1005 1005 break; 1006 1006 if (cchPrefix) 1007 1007 { 1008 1008 if ( pCur->pMod->cchName == cchName + cchPrefix 1009 && !k LdrHlpMemComp(pCur->pMod->pszName, pszPrefix, cchPrefix)1010 && !k LdrHlpMemComp(pCur->pMod->pszName + cchPrefix, pszName, cchName))1009 && !kHlpMemComp(pCur->pMod->pszName, pszPrefix, cchPrefix) 1010 && !kHlpMemComp(pCur->pMod->pszName + cchPrefix, pszName, cchName)) 1011 1011 break; 1012 1012 } … … 1014 1014 { 1015 1015 if ( pCur->pMod->cchName == cchName + cchSuffix 1016 && !k LdrHlpMemComp(pCur->pMod->pszName + cchName, pszSuffix, cchSuffix)1017 && !k LdrHlpMemComp(pCur->pMod->pszName, pszName, cchName))1016 && !kHlpMemComp(pCur->pMod->pszName + cchName, pszSuffix, cchSuffix) 1017 && !kHlpMemComp(pCur->pMod->pszName, pszName, cchName)) 1018 1018 break; 1019 1019 if ( fNameHasSuffix 1020 1020 && pCur->pMod->cchName == cchName - cchSuffix 1021 && !k LdrHlpMemComp(pCur->pMod->pszName, pszName, cchName - cchSuffix))1021 && !kHlpMemComp(pCur->pMod->pszName, pszName, cchName - cchSuffix)) 1022 1022 break; 1023 1023 if (cchPrefix) 1024 1024 { 1025 1025 if ( pCur->pMod->cchName == cchName + cchPrefix + cchSuffix 1026 && !k LdrHlpMemComp(pCur->pMod->pszName, pszPrefix, cchPrefix)1027 && !k LdrHlpMemComp(pCur->pMod->pszName + cchPrefix, pszName, cchName)1028 && !k LdrHlpMemComp(pCur->pMod->pszName + cchPrefix + cchName, pszSuffix, cchSuffix))1026 && !kHlpMemComp(pCur->pMod->pszName, pszPrefix, cchPrefix) 1027 && !kHlpMemComp(pCur->pMod->pszName + cchPrefix, pszName, cchName) 1028 && !kHlpMemComp(pCur->pMod->pszName + cchPrefix + cchName, pszSuffix, cchSuffix)) 1029 1029 break; 1030 1030 if ( pCur->pMod->cchName == cchName + cchPrefix - cchSuffix 1031 && !k LdrHlpMemComp(pCur->pMod->pszName, pszPrefix, cchPrefix)1032 && !k LdrHlpMemComp(pCur->pMod->pszName + cchPrefix, pszName, cchName - cchSuffix))1031 && !kHlpMemComp(pCur->pMod->pszName, pszPrefix, cchPrefix) 1032 && !kHlpMemComp(pCur->pMod->pszName + cchPrefix, pszName, cchName - cchSuffix)) 1033 1033 break; 1034 1034 } -
trunk/kStuff/kLdr/kLdrDyldMod.c
r3570 r3573 32 32 #include <k/kLdr.h> 33 33 #include "kLdrInternal.h" 34 #include "kLdrHlp.h"35 34 36 35 … … 46 45 */ 47 46 #ifdef KLDRDYLDMOD_STRICT 48 # define KLDRDYLDMOD_ASSERT(expr) k ldrHlpAssert(expr)47 # define KLDRDYLDMOD_ASSERT(expr) kHlpAssert(expr) 49 48 #else 50 49 # define KLDRDYLDMOD_ASSERT(expr) do {} while (0) … … 120 119 * Allocate a new dyld module. 121 120 */ 122 pMod = (PKLDRDYLDMOD)k ldrHlpAlloc(sizeof(*pMod));121 pMod = (PKLDRDYLDMOD)kHlpAlloc(sizeof(*pMod)); 123 122 if (pMod) 124 123 { … … 282 281 } 283 282 284 k ldrHlpFree(pMod->papPrereqs);283 kHlpFree(pMod->papPrereqs); 285 284 pMod->papPrereqs = NULL; 286 285 pMod->cPrereqs = 0; … … 305 304 pMod->u32MagicHead = 1; 306 305 pMod->u32MagicTail = 2; 307 k ldrHlpFree(pMod);306 kHlpFree(pMod); 308 307 } 309 308 } … … 490 489 pMod->u32MagicHead = 1; 491 490 pMod->u32MagicTail = 2; 492 k ldrHlpFree(pMod);491 kHlpFree(pMod); 493 492 } 494 493 } … … 757 756 */ 758 757 cPrereqs = kLdrModNumberOfImports(pMod->pMod, NULL); 759 k ldrHlpAssert(cPrereqs >= 0);758 kHlpAssert(cPrereqs >= 0); 760 759 if (pMod->cPrereqs != cPrereqs) 761 760 { 762 761 KLDRDYLDMOD_ASSERT(!pMod->papPrereqs); 763 pMod->papPrereqs = (PPKLDRDYLDMOD)k ldrHlpAllocZ(sizeof(pMod->papPrereqs[0]) * cPrereqs);762 pMod->papPrereqs = (PPKLDRDYLDMOD)kHlpAllocZ(sizeof(pMod->papPrereqs[0]) * cPrereqs); 764 763 if (!pMod->papPrereqs) 765 764 return KLDR_ERR_NO_MEMORY; … … 1149 1148 /* check if there is a stack size override/default. */ 1150 1149 KSIZE cbDefOverride; 1151 if (k ldrHlpGetEnvUZ("KLDR_MAIN_STACK_SIZE", &cbDefOverride))1150 if (kHlpGetEnvUZ("KLDR_MAIN_STACK_SIZE", &cbDefOverride)) 1152 1151 cbDefOverride = 0; 1153 1152 … … 1235 1234 if (cch) 1236 1235 { 1237 k LdrHlpMemCopy(pszName, pMod->pMod->pszName, cch - 1);1236 kHlpMemCopy(pszName, pMod->pMod->pszName, cch - 1); 1238 1237 pszName[cch - 1] = '\0'; 1239 1238 } … … 1255 1254 if (cch) 1256 1255 { 1257 k LdrHlpMemCopy(pszFilename, pMod->pMod->pszFilename, cch - 1);1256 kHlpMemCopy(pszFilename, pMod->pMod->pszFilename, cch - 1); 1258 1257 pszFilename[cch - 1] = '\0'; 1259 1258 } … … 1280 1279 1281 1280 rc = kLdrModQuerySymbol(pMod->pMod, NULL, KLDRMOD_BASEADDRESS_MAP, 1282 uSymbolOrdinal, pszSymbolName, k LdrHlpStrLen(pszSymbolName), NULL,1281 uSymbolOrdinal, pszSymbolName, kHlpStrLen(pszSymbolName), NULL, 1283 1282 kldrDyldModFixupGetImportCallback, pMod, 1284 1283 &uValue, &fKind); -
trunk/kStuff/kLdr/kLdrDyldOS.c
r3570 r3573 40 40 41 41 #include <k/kLdr.h> 42 #include "kLdrHlp.h"43 42 #include "kLdrInternal.h" 44 43 … … 103 102 104 103 TerminateProcess(GetCurrentProcess(), rc); 105 k ldrHlpAssert(!"TerminateProcess failed");104 kHlpAssert(!"TerminateProcess failed"); 106 105 for (;;) 107 106 TerminateProcess(GetCurrentProcess(), rc); … … 118 117 void kldrDyldDoLoadExeStackSwitch(PKLDRDYLDMOD pExe, void *pvStack, KSIZE cbStack) 119 118 { 120 /*k ldrHlpAssert(!"not implemented");*/119 /*kHlpAssert(!"not implemented");*/ 121 120 122 121 /** @todo implement this properly! */ -
trunk/kStuff/kLdr/kLdrExeStub-win.c
r3570 r3573 31 31 #include <k/kLdr.h> 32 32 #include <Windows.h> 33 #include "kLdrInternal.h" 33 34 34 35 … … 52 53 int WindowsMain(void) 53 54 { 54 return kLdrDyldLoadExe(&g_Args, NULL); 55 kLdrDyldLoadExe(&g_Args, NULL); 56 /* won't happen */ 57 return 0; 55 58 } 56 59 -
trunk/kStuff/kLdr/kLdrHlp.h
r3571 r3573 1 /* $Id$ */2 /** @file3 *4 * kLdr - The Dynamic Loader, Helper Functions.5 *6 * Copyright (c) 2006 knut st. osmundsen <bird@anduin.net>7 *8 *9 * This file is part of kLdr.10 *11 * kLdr is free software; you can redistribute it and/or modify12 * it under the terms of the GNU General Public License as published by13 * the Free Software Foundation; either version 2 of the License, or14 * (at your option) any later version.15 *16 * kLdr is distributed in the hope that it will be useful,17 * but WITHOUT ANY WARRANTY; without even the implied warranty of18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the19 * GNU General Public License for more details.20 *21 * You should have received a copy of the GNU General Public License22 * along with kLdr; if not, write to the Free Software23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA24 *25 */26 27 28 #ifndef __kLdrHlp_h__29 #define __kLdrHlp_h__30 31 /** @defgroup grp_kLdrHlp kLdrHlp - Helper Functions32 * @internal33 * @{ */34 35 /*36 * Compiler specific helpers / CRT.37 * (I.e. operations that tend to have compiler intrinsic implementations).38 */39 #ifndef KLDR_USE_CRT40 41 # ifdef __GNUC__42 /** memchr */43 # define kLdrHlpMemChr(a,b,c) __builtin_memchr(a,b,c)44 /** memcmp */45 # define kLdrHlpMemComp(a,b,c) __builtin_memcmp(a,b,c)46 /** memcpy */47 # define kLdrHlpMemCopy(a,b,c) __builtin_memcpy(a,b,c)48 /** memmove */49 /*# define kLdrHlpMemMove(a,b,c) __builtin_memmove(a,b,c)*/50 # define kLdrHlpMemMove_needed51 /** memset */52 # define kLdrHlpMemSet(a,b,c) __builtin_memset(a,b,c)53 /** strchr */54 # define kLdrHlpStrChr(a, b) __builtin_strchr(a, b)55 /** strcmp */56 # define kLdrHlpStrComp(a, b) __builtin_strcmp(a, b)57 /** strncmp */58 # define kLdrHlpStrNComp(a,b,c) __builtin_strncmp(a, b, c)59 /** strlen */60 # define kLdrHlpStrLen(a) __builtin_strlen(a)61 /** alloca */62 # define kLdrHlpAllocA(a) __builtin_alloca(a)63 /** int3 */64 # define kldrHlpBreakpoint() do { __asm__ __volatile__ ("int3\n\tnop"); } while (0)65 /** NULL */66 # ifndef NULL67 # define NULL 068 # endif69 # endif70 71 # ifdef _MSC_VER72 # include <string.h>73 # include <malloc.h>74 # pragma intrinsic(memcmp, memcpy, memset, strcmp, strlen, __debugbreak)75 /** memchr */76 # define kLdrHlpMemChr_needed77 /** memcmp */78 # define kLdrHlpMemComp(a,b,c) memcmp(a,b,c)79 /** memcpy */80 # define kLdrHlpMemCopy(a,b,c) memcpy(a,b,c)81 /** memmove */82 # define kLdrHlpMemMove_needed83 /** memset */84 # define kLdrHlpMemSet(a,b,c) memset(a,b,c)85 /** strcmp */86 # define kLdrHlpStrComp(a, b) strcmp(a, b)87 /** strncmp */88 # define kLdrHlpStrNComp_needed89 /** strlen */90 # define kLdrHlpStrLen(a) strlen(a)91 /** strchr */92 # define kLdrHlpStrChr_needed93 /** alloca */94 # define kLdrHlpAllocA(a) alloca(a)95 /** int3 */96 # define kldrHlpBreakpoint() __debugbreak()97 /** NULL */98 # ifndef NULL99 # define NULL 0100 # endif101 # endif102 103 # ifdef kLdrHlpStrChr_needed104 char *kLdrHlpStrChr(const char *psz, int ch);105 # endif106 # ifdef kLdrHlpStrChr_needed107 int kLdrHlpStrNComp(const char *psz1, const char *psz2, KSIZE cch);108 # endif109 # ifdef kLdrHlpMemChr_needed110 void *kLdrHlpMemChr(const void *pv, int ch, KSIZE cb);111 # endif112 # ifdef kLdrHlpMemMove_needed113 void *kLdrHlpMemMove(void *pv1, const void *pv2, KSIZE cb);114 # endif115 116 117 #else /* KLDR_USE_CRT */118 119 # include <string.h>120 # include <stdlib.h>121 # ifdef _MSC_VER122 # include <malloc.h>123 # endif124 125 # define kLdrHlpMemChr(a,b,c) memchr(a,b,c)126 /** memcmp */127 # define kLdrHlpMemComp(a,b,c) memcmp(a,b,c)128 /** memcpy */129 # define kLdrHlpMemCopy(a,b,c) memcpy(a,b,c)130 /** memmove */131 # define kLdrHlpMemMove(a,b,c) memmove(a,b,c)132 /** memset */133 # define kLdrHlpMemSet(a,b,c) memset(a,b,c)134 /** strchr */135 # define kLdrHlpStrChr(a, b) strchr(a, b)136 /** strcmp */137 # define kLdrHlpStrComp(a, b) strcmp(a, b)138 /** strncmp */139 # define kLdrHlpStrNComp(a,b,c) strncmp(a, b, c)140 /** strlen */141 # define kLdrHlpStrLen(a) strlen(a)142 /** alloca */143 # define kLdrHlpAllocA(a) alloca(a)144 /** int3 */145 # ifdef __GNUC__146 # define kldrHlpBreakpoint() do { __asm__ __volatile__ ("int3\n\tnop"); } while (0)147 # endif148 # ifdef _MSC_VER149 # define kldrHlpBreakpoint() __debugbreak()150 # endif151 152 #endif153 154 #if (!defined(kLdrHlpMemChr) && !defined(kLdrHlpStrChr_needed))\155 || !defined(kLdrHlpMemComp) \156 || !defined(kLdrHlpMemCopy) \157 || !defined(kLdrHlpMemSet) \158 || (!defined(kLdrHlpStrChr) && !defined(kLdrHlpStrChr_needed)) \159 || !defined(kLdrHlpStrComp) \160 || (!defined(kLdrHlpStrNComp) && !defined(kLdrHlpStrNComp_needed)) \161 || !defined(kLdrHlpStrLen) \162 || !defined(kLdrHlpAllocA) \163 || !defined(kldrHlpBreakpoint)164 # error "Needs porting to your compiler."165 #endif166 167 #ifdef __cplusplus168 extern "C" {169 #endif170 171 KSIZE kLdrHlpStrNLen(const char *psz, KSIZE cchMax);172 int kLdrHlpMemIComp(const void *pv1, const void *pv2, KSIZE cb);173 int kLdrHlpStrIComp(const char *pv1, const char *pv2);174 175 int kldrHlpSemInit(void);176 void kldrHlpSemTerm(void);177 int kldrHlpSemRequest(void);178 void kldrHlpSemRelease(void);179 180 int kldrHlpPageAlloc(void **ppv, KSIZE cb, KPROT enmProt, unsigned fFixed);181 int kldrHlpPageProtect(void *pv, KSIZE cb, KPROT enmProt);182 int kldrHlpPageFree(void *pv, KSIZE cb);183 184 int kldrHlpHeapInit(void);185 void kldrHlpHeapTerm(void);186 void kldrHlpHeapDonate(void *pv, KSIZE cb);187 void * kldrHlpAlloc(KSIZE cb);188 void * kldrHlpAllocZ(KSIZE cb);189 void kldrHlpFree(void *pv);190 1 191 2 int kldrHlpGetEnv(const char *pszVar, char *pszVal, KSIZE cchVal); 192 3 int kldrHlpGetEnvUZ(const char *pszVar, KSIZE *pcb); 193 char *kldrHlpGetFilename(const char *pszFilename); 194 char *kldrHlpGetSuff(const char *pszFilename); 195 char *kldrHlpGetExt(const char *pszFilename); 196 int kldrHlpIsFilenameOnly(const char *pszFilename); 4 197 5 void kldrHlpExit(int rc); 198 6 void kldrHlpSleep(unsigned cMillies); 7 199 8 char *kldrHlpInt2Ascii(char *psz, KSIZE cch, long lVal, unsigned iBase); 200 void kldrHlpAssertMsg(const char *pszExpr, const char *pszFile, unsigned iLine, const char *pszFunction);201 9 202 #ifdef __cplusplus203 }204 #endif205 206 207 /** Assertion macro.208 * Users should wrap it since this is ALWAYS compiled in. */209 #define kldrHlpAssert(expr) \210 do { \211 if (!(expr)) \212 { \213 kldrHlpAssertMsg(#expr, __FILE__, __LINE__, __FUNCTION__); \214 kldrHlpBreakpoint(); \215 } \216 } while (0)217 218 219 /** @name Parameter validation macros220 * @{ */221 222 /** Crash validation of a string argument. */223 #define KLDRHLP_VALIDATE_STRING(str) \224 do { kLdrHlpStrLen(str); } while (0)225 226 /** Crash validation of an optional string argument. */227 #define KLDRHLP_VALIDATE_OPTIONAL_STRING(str) \228 do { if (str) { KLDRHLP_VALIDATE_STRING(str); } } while (0)229 230 /** Return/Crash validation of an output buffer. */231 #define KLDRHLP_VALIDATE_BUFFER(buf, cb) \232 do { \233 if ((cb)) \234 { \235 KU8 __b; \236 KU8 volatile * __pb = (KU8 volatile *)(buf); \237 KSIZE __cbPage1 = 0x1000 - ((KUPTR)(__pb) & 0xfff); /* ASSUMES page size! */ \238 __b = *__pb; *__pb = 0xff; *__pb = __b; \239 if ((cb) > __cbPage1) \240 { \241 KSIZE __cb = (cb) - __cbPage1; \242 __pb -= __cbPage1; \243 for (;;) \244 { \245 __b = *__pb; *__pb = 0xff; *__pb = __b; \246 if (__cb < 0x1000) \247 break; \248 __pb += 0x1000; \249 __cb -= 0x1000; \250 } \251 } \252 } \253 else \254 return KLDR_ERR_INVALID_PARAMETER; \255 } while (0)256 257 /** Crash validation of an optional output buffer. */258 #define KLDRHLP_VALIDATE_OPTIONAL_BUFFER(buf, cb) \259 do { \260 if ((buf) != NULL && (cb) != 0) \261 { \262 KLDRHLP_VALIDATE_BUFFER(buf, cb); \263 } \264 } while (0)265 266 /** Return validation of an enum argument. */267 #define KLDRHLP_VALIDATE_ENUM(arg, enumname) \268 do { \269 if ((arg) <= enumname##_INVALID || (arg) >= enumname##_END) \270 { \271 return KLDR_ERR_INVALID_PARAMETER; \272 } \273 } while (0)274 275 /** Return validation of a flags argument. */276 #define KLDRHLP_VALIDATE_FLAGS(arg, AllowedMask) \277 do { \278 if ((arg) & ~(AllowedMask)) \279 { \280 return KLDR_ERR_INVALID_PARAMETER; \281 } \282 } while (0)283 284 /** @} */285 286 287 /** @} */288 289 #endif /* __kLdrHlp_h__ */290 -
trunk/kStuff/kLdr/kLdrInternal.h
r3569 r3573 26 26 27 27 28 #ifndef __kLdrInternal_h__ 29 #define __kLdrInternal_h__ 28 #ifndef ___kLdrInternal_h___ 29 #define ___kLdrInternal_h___ 30 31 #include <k/kHlp.h> 30 32 31 33 #ifdef __cplusplus … … 442 444 /** @} */ 443 445 446 444 447 /** @} */ 445 448 #ifdef __cplusplus -
trunk/kStuff/kLdr/kLdrMisc.c
r3570 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 -
trunk/kStuff/kLdr/kLdrMod.c
r3570 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 #include <k/kLdrFmts/mz.h> … … 53 52 */ 54 53 #ifdef KLDRMOD_STRICT 55 # define KLDRMOD_ASSERT(expr) k ldrHlpAssert(expr)54 # define KLDRMOD_ASSERT(expr) kHlpAssert(expr) 56 55 #else 57 56 # define KLDRMOD_ASSERT(expr) do {} while (0) … … 268 267 *puValue = 0; 269 268 if (pfKind) 270 K LDRHLP_VALIDATE_FLAGS(*pfKind, KLDRSYMKIND_REQ_SEGMENTED);269 K_VALIDATE_FLAGS(*pfKind, KLDRSYMKIND_REQ_SEGMENTED); 271 270 return pMod->pOps->pfnQuerySymbol(pMod, pvBits, BaseAddress, iSymbol, pchSymbol, cchSymbol, pszVersion, 272 271 pfnGetForwarder, pvUser, puValue, pfKind); … … 292 291 { 293 292 KLDRMOD_VALIDATE(pMod); 294 K LDRHLP_VALIDATE_FLAGS(fFlags, KLDRMOD_ENUM_SYMS_FLAGS_ALL);293 K_VALIDATE_FLAGS(fFlags, KLDRMOD_ENUM_SYMS_FLAGS_ALL); 295 294 return pMod->pOps->pfnEnumSymbols(pMod, pvBits, BaseAddress, fFlags, pfnCallback, pvUser); 296 295 } … … 653 652 { 654 653 KLDRMOD_VALIDATE(pMod); 655 K LDRHLP_VALIDATE_FLAGS(fAttachingOrDetaching, 1);654 K_VALIDATE_FLAGS(fAttachingOrDetaching, 1); 656 655 return pMod->pOps->pfnCallThread(pMod, uHandle, fAttachingOrDetaching); 657 656 } -
trunk/kStuff/kLdr/kLdrModLX.c
r3571 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 #include <k/kLdrFmts/lx.h> … … 46 45 */ 47 46 #ifdef KLDRMODLX_STRICT 48 # define KLDRMODLX_ASSERT(expr) k ldrHlpAssert(expr)47 # define KLDRMODLX_ASSERT(expr) kHlpAssert(expr) 49 48 #else 50 49 # define KLDRMODLX_ASSERT(expr) do {} while (0) … … 162 161 return 0; 163 162 } 164 k ldrHlpFree(pModLX);163 kHlpFree(pModLX); 165 164 return rc; 166 165 } … … 267 266 * Calc the instance size, allocate and initialize it. 268 267 */ 269 cchFilename = k LdrHlpStrLen(kLdrRdrName(pRdr));268 cchFilename = kHlpStrLen(kLdrRdrName(pRdr)); 270 269 cb = K_ALIGN_Z(sizeof(KLDRMODLX), 8) 271 270 + K_ALIGN_Z(K_OFFSETOF(KLDRMOD, aSegments[Hdr.e32_objcnt + 1]), 8) 272 271 + K_ALIGN_Z(cchFilename + 1, 8) 273 272 + Hdr.e32_ldrsize + 2; /* +2 for two extra zeros. */ 274 pModLX = (PKLDRMODLX)k ldrHlpAlloc(cb);273 pModLX = (PKLDRMODLX)kHlpAlloc(cb); 275 274 if (!pModLX) 276 275 return KLDR_ERR_NO_MEMORY; … … 285 284 pMod->cchFilename = cchFilename; 286 285 pMod->pszFilename = (char *)K_ALIGN_P(&pMod->aSegments[pMod->cSegments], 8); 287 k LdrHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1);286 kHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1); 288 287 pMod->pszName = NULL; /* finalized further down */ 289 288 pMod->cchName = 0; … … 387 386 return KLDR_ERR_LX_NO_SONAME; 388 387 pMod->cchName = *(const KU8 *)pMod->pszName++; 389 if (pMod->cchName != k LdrHlpStrLen(pMod->pszName))388 if (pMod->cchName != kHlpStrLen(pMod->pszName)) 390 389 return KLDR_ERR_LX_BAD_SONAME; 391 390 … … 533 532 if (pModLX->pbNonResNameTab) 534 533 { 535 k ldrHlpFree(pModLX->pbNonResNameTab);534 kHlpFree(pModLX->pbNonResNameTab); 536 535 pModLX->pbNonResNameTab = NULL; 537 536 } 538 537 if (pModLX->pbFixupSection) 539 538 { 540 k ldrHlpFree(pModLX->pbFixupSection);539 kHlpFree(pModLX->pbFixupSection); 541 540 pModLX->pbFixupSection = NULL; 542 541 } 543 542 pMod->u32Magic = 0; 544 543 pMod->pOps = NULL; 545 k ldrHlpFree(pModLX);544 kHlpFree(pModLX); 546 545 return rc; 547 546 } … … 789 788 790 789 if ( cbName == cbSymbol8Bit 791 && !k LdrHlpMemComp(pbNameTable + 1, pchSymbol, cbName))790 && !kHlpMemComp(pbNameTable + 1, pchSymbol, cbName)) 792 791 return pbNameTable; 793 792 … … 937 936 void *pv; 938 937 939 pv = k ldrHlpAlloc(pModLX->Hdr.e32_fixupsize);938 pv = kHlpAlloc(pModLX->Hdr.e32_fixupsize); 940 939 if (!pv) 941 940 return KLDR_ERR_NO_MEMORY; … … 962 961 } 963 962 else 964 k ldrHlpFree(pv);963 kHlpFree(pv); 965 964 return rc; 966 965 } … … 1208 1207 if (*pb < cchName) 1209 1208 { 1210 k LdrHlpMemCopy(pszName, pb + 1, *pb);1209 kHlpMemCopy(pszName, pb + 1, *pb); 1211 1210 pszName[*pb] = '\0'; 1212 1211 rc = 0; … … 1214 1213 else 1215 1214 { 1216 k LdrHlpMemCopy(pszName, pb + 1, cchName);1215 kHlpMemCopy(pszName, pb + 1, cchName); 1217 1216 if (cchName) 1218 1217 pszName[cchName - 1] = '\0'; … … 1345 1344 return KLDR_ERR_ADDRESS_OVERFLOW; 1346 1345 } 1347 rc = k ldrHlpPageAlloc(&pvBase, pModLX->cbMapped, KPROT_EXECUTE_READWRITE, fFixed);1346 rc = kHlpPageAlloc(&pvBase, pModLX->cbMapped, KPROT_EXECUTE_READWRITE, fFixed); 1348 1347 if (rc) 1349 1348 return rc; … … 1366 1365 } 1367 1366 else 1368 k ldrHlpPageFree(pvBase, pModLX->cbMapped);1367 kHlpPageFree(pvBase, pModLX->cbMapped); 1369 1368 return rc; 1370 1369 } … … 1413 1412 rc = kLdrRdrRead(pRdr, pbPage, pMap->o32_pagesize, 1414 1413 pModLX->Hdr.e32_datapage + (pMap->o32_pagedataoffset << pModLX->Hdr.e32_pageshift)); 1415 k LdrHlpMemSet(pbPage + pMap->o32_pagesize, 0, OBJPAGELEN - pMap->o32_pagesize);1414 kHlpMemSet(pbPage + pMap->o32_pagesize, 0, OBJPAGELEN - pMap->o32_pagesize); 1416 1415 } 1417 1416 else … … 1424 1423 if (!pbTmpPage) 1425 1424 { 1426 pbTmpPage = k ldrHlpAlloc(OBJPAGELEN + 256);1425 pbTmpPage = kHlpAlloc(OBJPAGELEN + 256); 1427 1426 if (!pbTmpPage) 1428 1427 break; … … 1440 1439 if (rc) 1441 1440 break; 1442 k LdrHlpMemSet(pbTmpPage + pMap->o32_pagesize, 0, 4);1441 kHlpMemSet(pbTmpPage + pMap->o32_pagesize, 0, 4); 1443 1442 1444 1443 /* unpack it into the image page. */ … … 1451 1450 case INVALID: /* we're probably not dealing correctly with INVALID pages... */ 1452 1451 case ZEROED: 1453 k LdrHlpMemSet(pbPage, 0, OBJPAGELEN);1452 kHlpMemSet(pbPage, 0, OBJPAGELEN); 1454 1453 break; 1455 1454 … … 1468 1467 */ 1469 1468 if (iPage < cPages) 1470 k LdrHlpMemSet(pbPage, 0, (cPages - iPage) * OBJPAGELEN);1469 kHlpMemSet(pbPage, 0, (cPages - iPage) * OBJPAGELEN); 1471 1470 } 1472 1471 1473 1472 if (pbTmpPage) 1474 k ldrHlpFree(pbTmpPage);1473 kHlpFree(pbTmpPage); 1475 1474 return rc; 1476 1475 } … … 1513 1512 return KLDR_ERR_LX_BAD_ITERDATA; 1514 1513 1515 k LdrHlpMemSet(pbDst, pIter->LX_Iterdata, pIter->LX_nIter);1514 kHlpMemSet(pbDst, pIter->LX_Iterdata, pIter->LX_nIter); 1516 1515 pbDst += pIter->LX_nIter; 1517 1516 pIter++; … … 1533 1532 1534 1533 for (i = pIter->LX_nIter; i > 0; i--, pbDst += pIter->LX_nBytes) 1535 k LdrHlpMemCopy(pbDst, &pIter->LX_Iterdata, pIter->LX_nBytes);1534 kHlpMemCopy(pbDst, &pIter->LX_Iterdata, pIter->LX_nBytes); 1536 1535 pIter = (struct LX_Iter *)((char*)pIter + 4 + pIter->LX_nBytes); 1537 1536 } … … 1542 1541 */ 1543 1542 if (cbDst > 0) 1544 k LdrHlpMemSet(pbDst, 0, cbDst);1543 kHlpMemSet(pbDst, 0, cbDst); 1545 1544 1546 1545 return 0; … … 1599 1598 if (cbSrc < 0) 1600 1599 return KLDR_ERR_LX_BAD_ITERDATA2; 1601 k LdrHlpMemCopy(pbDst, ++pbSrc, cb);1600 kHlpMemCopy(pbDst, ++pbSrc, cb); 1602 1601 pbDst += cb; 1603 1602 pbSrc += cb; … … 1616 1615 if (cbSrc < 0) 1617 1616 return KLDR_ERR_LX_BAD_ITERDATA2; 1618 k LdrHlpMemSet(pbDst, pbSrc[2], cb);1617 kHlpMemSet(pbDst, pbSrc[2], cb); 1619 1618 pbDst += cb; 1620 1619 pbSrc += 3; … … 1652 1651 if (cbDst < 0) 1653 1652 return KLDR_ERR_LX_BAD_ITERDATA2; 1654 k LdrHlpMemCopy(pbDst, pbSrc, cb1);1653 kHlpMemCopy(pbDst, pbSrc, cb1); 1655 1654 pbDst += cb1; 1656 1655 pbSrc += cb1; … … 1661 1660 if (cbDst < 0) 1662 1661 return KLDR_ERR_LX_BAD_ITERDATA2; 1663 k LdrHlpMemMove(pbDst, pbDst - off, cb2);1662 kHlpMemMove(pbDst, pbDst - off, cb2); 1664 1663 pbDst += cb2; 1665 1664 } … … 1733 1732 if (cbDst < 0) 1734 1733 return KLDR_ERR_LX_BAD_ITERDATA2; 1735 k LdrHlpMemCopy(pbDst, pbSrc, cb1);1734 kHlpMemCopy(pbDst, pbSrc, cb1); 1736 1735 pbDst += cb1; 1737 1736 pbSrc += cb1; … … 1757 1756 */ 1758 1757 if (cbDst > 0) 1759 k LdrHlpMemSet(pbDst, 0, cbDst);1758 kHlpMemSet(pbDst, 0, cbDst); 1760 1759 1761 1760 return 0; … … 1867 1866 pv = (KU8 *)pvBits + pMod->aSegments[i].RVA; 1868 1867 1869 rc = k ldrHlpPageProtect(pv, pMod->aSegments[i].cbMapped, enmProt);1868 rc = kHlpPageProtect(pv, pMod->aSegments[i].cbMapped, enmProt); 1870 1869 if (rc) 1871 1870 break; … … 1894 1893 * Free the mapping and update the segments. 1895 1894 */ 1896 rc = k ldrHlpPageFree((void *)pModLX->pvMapping, pModLX->cbMapped);1895 rc = kHlpPageFree((void *)pModLX->pvMapping, pModLX->cbMapped); 1897 1896 KLDRMODLX_ASSERT(!rc); 1898 1897 pModLX->pvMapping = NULL; -
trunk/kStuff/kLdr/kLdrModMachO.c
r3571 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 #include <k/kLdrFmts/mach-o.h> … … 46 45 */ 47 46 #ifdef KLDRMODMACHO_STRICT 48 # define KLDRMODMACHO_ASSERT(expr) k ldrHlpAssert(expr)47 # define KLDRMODMACHO_ASSERT(expr) kHlpAssert(expr) 49 48 #else 50 49 # define KLDRMODMACHO_ASSERT(expr) do {} while (0) … … 215 214 if (pModMachO) 216 215 { 217 k ldrHlpFree(pModMachO->pbLoadCommands);218 k ldrHlpFree(pModMachO);216 kHlpFree(pModMachO->pbLoadCommands); 217 kHlpFree(pModMachO); 219 218 } 220 219 return rc; … … 279 278 * Read and pre-parse the load commands to figure out how many segments we'll be needing. 280 279 */ 281 pbLoadCommands = k ldrHlpAlloc(s.Hdr32.sizeofcmds);280 pbLoadCommands = kHlpAlloc(s.Hdr32.sizeofcmds); 282 281 if (!pbLoadCommands) 283 282 return KLDR_ERR_NO_MEMORY; … … 290 289 if (rc) 291 290 { 292 k ldrHlpFree(pbLoadCommands);291 kHlpFree(pbLoadCommands); 293 292 return rc; 294 293 } … … 298 297 * Calc the instance size, allocate and initialize it. 299 298 */ 300 cchFilename = k LdrHlpStrLen(kLdrRdrName(pRdr));299 cchFilename = kHlpStrLen(kLdrRdrName(pRdr)); 301 300 cb = K_ALIGN_Z( K_OFFSETOF(KLDRMODMACHO, aSegments[cSegments]) 302 301 + sizeof(KLDRMODMACHOSECT) * cSections, 16) … … 304 303 + cchFilename + 1 305 304 + cbStringPool; 306 pModMachO = (PKLDRMODMACHO)k ldrHlpAlloc(cb);305 pModMachO = (PKLDRMODMACHO)kHlpAlloc(cb); 307 306 if (!pModMachO) 308 307 return KLDR_ERR_NO_MEMORY; … … 319 318 pMod->cchFilename = cchFilename; 320 319 pMod->pszFilename = (char *)&pMod->aSegments[pMod->cSegments]; 321 k LdrHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1);322 pMod->pszName = k ldrHlpGetFilename(pMod->pszFilename);320 kHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1); 321 pMod->pszName = kHlpGetFilename(pMod->pszFilename); 323 322 pMod->cchName = cchFilename - (pMod->pszName - pMod->pszFilename); 324 323 switch (s.Hdr32.cputype) … … 619 618 /* a new segment? */ 620 619 if ( !cSegments 621 || k LdrHlpStrNComp(pSect->segname, (pSect - 1)->segname, sizeof(pSect->segname)))620 || kHlpStrNComp(pSect->segname, (pSect - 1)->segname, sizeof(pSect->segname))) 622 621 { 623 622 #if 0 /** @todo This doesn't work because of BSS. */ … … 626 625 while ((KUPTR)pCur >= (KUPTR)pFirstSect) 627 626 { 628 if (!k LdrHlpStrNComp(pCur->segname, pSect->segname, sizeof(pSect->segname)))627 if (!kHlpStrNComp(pCur->segname, pSect->segname, sizeof(pSect->segname))) 629 628 return KLDR_ERR_MACHO_BAD_SECTION_ORDER; 630 629 pCur--; … … 634 633 /* ok. count it and the string. */ 635 634 cSegments++; 636 cbStringPool += k LdrHlpStrNLen(&pSect->segname[0], sizeof(pSect->segname)) + 1;635 cbStringPool += kHlpStrNLen(&pSect->segname[0], sizeof(pSect->segname)) + 1; 637 636 } 638 637 break; … … 858 857 859 858 if ( fFirstSegment 860 || k LdrHlpStrNComp(pSect->segname, (pSect - 1)->segname, sizeof(pSect->segname)))859 || kHlpStrNComp(pSect->segname, (pSect - 1)->segname, sizeof(pSect->segname))) 861 860 { 862 861 /* close the previous segment */ … … 867 866 pSeg->pvUser = NULL; 868 867 pSeg->pchName = pbStringPool; 869 pSeg->cchName = (KU32)k LdrHlpStrNLen(&pSect->segname[0], sizeof(pSect->sectname));870 k LdrHlpMemCopy(pbStringPool, &pSect->segname[0], pSeg->cchName);868 pSeg->cchName = (KU32)kHlpStrNLen(&pSect->segname[0], sizeof(pSect->sectname)); 869 kHlpMemCopy(pbStringPool, &pSect->segname[0], pSeg->cchName); 871 870 pbStringPool += pSeg->cchName; 872 871 *pbStringPool++ = '\0'; … … 1002 1001 while (j-- > 0) 1003 1002 { 1004 k ldrHlpFree(pModMachO->aSegments[i].paSections[j].paFixups);1003 kHlpFree(pModMachO->aSegments[i].paSections[j].paFixups); 1005 1004 pModMachO->aSegments[i].paSections[j].paFixups = NULL; 1006 1005 } … … 1014 1013 pMod->u32Magic = 0; 1015 1014 pMod->pOps = NULL; 1016 k ldrHlpFree(pModMachO->pbLoadCommands);1015 kHlpFree(pModMachO->pbLoadCommands); 1017 1016 pModMachO->pbLoadCommands = NULL; 1018 k ldrHlpFree(pModMachO->pchStrings);1017 kHlpFree(pModMachO->pchStrings); 1019 1018 pModMachO->pchStrings = NULL; 1020 k ldrHlpFree(pModMachO->pvaSymbols);1019 kHlpFree(pModMachO->pvaSymbols); 1021 1020 pModMachO->pvaSymbols = NULL; 1022 k ldrHlpFree(pModMachO);1021 kHlpFree(pModMachO); 1023 1022 return rc; 1024 1023 } … … 1152 1151 if (psz[cchSymbol]) 1153 1152 continue; 1154 if (k LdrHlpMemComp(psz, pchSymbol, cchSymbol))1153 if (kHlpMemComp(psz, pchSymbol, cchSymbol)) 1155 1154 continue; 1156 1155 … … 1325 1324 return KLDR_ERR_MACHO_BAD_SYMBOL; 1326 1325 psz = &pchStrings[paSyms[iSym].n_un.n_strx]; 1327 cch = k LdrHlpStrLen(psz);1326 cch = kHlpStrLen(psz); 1328 1327 if (!cch) 1329 1328 psz = NULL; … … 1757 1756 return KLDR_ERR_MACHO_BAD_SYMBOL; 1758 1757 pszSymbol = &pModMachO->pchStrings[paSyms[iSym].n_un.n_strx]; 1759 cchSymbol = k LdrHlpStrLen(pszSymbol);1758 cchSymbol = kHlpStrLen(pszSymbol); 1760 1759 rc = pfnGetImport(pModMachO->pMod, NIL_KLDRMOD_IMPORT, iSym, pszSymbol, cchSymbol, NULL, 1761 1760 &Value, &fKind, pvUser); … … 1808 1807 return KLDR_ERR_MACHO_BAD_SYMBOL; 1809 1808 pszSymbol = &pModMachO->pchStrings[paSyms[iSym].n_un.n_strx]; 1810 cchSymbol = k LdrHlpStrLen(pszSymbol);1809 cchSymbol = kHlpStrLen(pszSymbol); 1811 1810 rc = pfnGetImport(pModMachO->pMod, NIL_KLDRMOD_IMPORT, iSym, pszSymbol, cchSymbol, NULL, 1812 1811 &Value, &fKind, pvUser); … … 2142 2141 return KLDR_ERR_SIZE_OVERFLOW; 2143 2142 rc = KLDR_ERR_NO_MEMORY; 2144 pvSyms = k ldrHlpAlloc(cbSyms);2143 pvSyms = kHlpAlloc(cbSyms); 2145 2144 if (pvSyms) 2146 2145 { 2147 2146 if (pModMachO->cchStrings) 2148 pvStrings = k ldrHlpAlloc(pModMachO->cchStrings);2147 pvStrings = kHlpAlloc(pModMachO->cchStrings); 2149 2148 else 2150 pvStrings = k ldrHlpAllocZ(4);2149 pvStrings = kHlpAllocZ(4); 2151 2150 if (pvStrings) 2152 2151 { … … 2188 2187 return 0; 2189 2188 } 2190 k ldrHlpFree(pvStrings);2189 kHlpFree(pvStrings); 2191 2190 } 2192 k ldrHlpFree(pvSyms);2191 kHlpFree(pvSyms); 2193 2192 } 2194 2193 } … … 2220 2219 if (cbFixups / sizeof(*paFixups) != cFixups) 2221 2220 return KLDR_ERR_SIZE_OVERFLOW; 2222 paFixups = (macho_relocation_info_t *)k ldrHlpAlloc(cbFixups);2221 paFixups = (macho_relocation_info_t *)kHlpAlloc(cbFixups); 2223 2222 if (!paFixups) 2224 2223 return KLDR_ERR_NO_MEMORY; … … 2244 2243 } 2245 2244 else 2246 k ldrHlpFree(paFixups);2245 kHlpFree(paFixups); 2247 2246 return rc; 2248 2247 } … … 2306 2305 * Zero the entire buffer first to simplify things. 2307 2306 */ 2308 k LdrHlpMemSet(pvBits, 0, (KSIZE)pModMachO->cbImage);2307 kHlpMemSet(pvBits, 0, (KSIZE)pModMachO->cbImage); 2309 2308 2310 2309 /* -
trunk/kStuff/kLdr/kLdrModNative.c
r3571 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 #ifdef __OS2__ … … 81 80 */ 82 81 #ifdef KLDRMODNATIVE_STRICT 83 # define KLDRMODNATIVE_ASSERT(expr) k ldrHlpAssert(expr)82 # define KLDRMODNATIVE_ASSERT(expr) kHlpAssert(expr) 84 83 #else 85 84 # define KLDRMODNATIVE_ASSERT(expr) do {} while (0) … … 300 299 * Calc the instance size, allocate and initialize it. 301 300 */ 302 cchFilename = k LdrHlpStrLen(szFilename);301 cchFilename = kHlpStrLen(szFilename); 303 302 cb = K_ALIGN_Z(sizeof(KLDRMODNATIVE), 16) 304 303 + K_OFFSETOF(KLDRMOD, aSegments[cSegments]) 305 304 + cchFilename + 1; 306 pModNative = (PKLDRMODNATIVE)k ldrHlpAlloc(cb);305 pModNative = (PKLDRMODNATIVE)kHlpAlloc(cb); 307 306 if (!pModNative) 308 307 return KLDR_ERR_NO_MEMORY; … … 316 315 pMod->cchFilename = cchFilename; 317 316 pMod->pszFilename = (char *)&pMod->aSegments[pMod->cSegments]; 318 k LdrHlpMemCopy((char *)pMod->pszFilename, szFilename, cchFilename + 1);319 pMod->pszName = k ldrHlpGetFilename(pMod->pszFilename); /** @todo get soname */317 kHlpMemCopy((char *)pMod->pszFilename, szFilename, cchFilename + 1); 318 pMod->pszName = kHlpGetFilename(pMod->pszFilename); /** @todo get soname */ 320 319 pMod->cchName = cchFilename - (pMod->pszName - pMod->pszFilename); 321 320 #if defined(__i386__) || defined(__X86__) || defined(_M_IX86) … … 492 491 case IMAGE_SCN_ALIGN_4096BYTES: pMod->aSegments[i + 1].Alignment = 4096; break; 493 492 case IMAGE_SCN_ALIGN_8192BYTES: pMod->aSegments[i + 1].Alignment = 8192; break; 494 default: k ldrHlpAssert(0); pMod->aSegments[i + 1].Alignment = 0; break;493 default: kHlpAssert(0); pMod->aSegments[i + 1].Alignment = 0; break; 495 494 } 496 495 } … … 535 534 pMod->u32Magic = 0; 536 535 pMod->pOps = NULL; 537 k ldrHlpFree(pModNative);536 kHlpFree(pModNative); 538 537 return rc; 539 538 } … … 561 560 if (pszSymbol && pszSymbol[cchSymbol]) 562 561 { 563 char *pszCopy = k LdrHlpAllocA(cchSymbol + 1);564 k LdrHlpMemCopy(pszCopy, pchSymbol, cchSymbol);562 char *pszCopy = kHlpAllocA(cchSymbol + 1); 563 kHlpMemCopy(pszCopy, pchSymbol, cchSymbol); 565 564 pszCopy[cchSymbol] = '\0'; 566 565 pszSymbol = pszCopy; … … 756 755 const IMAGE_IMPORT_DESCRIPTOR *); 757 756 pszImportName = KLDRMODNATIVE_RVA2TYPE(pModNative->hmod, pImpDesc->Name, const char *); 758 cchImportName = k LdrHlpStrLen(pszImportName);757 cchImportName = kHlpStrLen(pszImportName); 759 758 if (cchImportName < cchName) 760 759 { 761 k LdrHlpMemCopy(pszName, pszImportName, cchImportName + 1);760 kHlpMemCopy(pszName, pszImportName, cchImportName + 1); 762 761 rc = 0; 763 762 } 764 763 else 765 764 { 766 k LdrHlpMemCopy(pszName, pszImportName, cchName);765 kHlpMemCopy(pszName, pszImportName, cchName); 767 766 if (cchName) 768 767 pszName[cchName - 1] = '\0'; -
trunk/kStuff/kLdr/kLdrModPE.c
r3571 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 #include <k/kLdrFmts/pe.h> … … 46 45 */ 47 46 #ifdef KLDRMODPE_STRICT 48 # define KLDRMODPE_ASSERT(expr) k ldrHlpAssert(expr)47 # define KLDRMODPE_ASSERT(expr) kHlpAssert(expr) 49 48 #else 50 49 # define KLDRMODPE_ASSERT(expr) do {} while (0) … … 151 150 return 0; 152 151 } 153 k ldrHlpFree(pModPE);152 kHlpFree(pModPE); 154 153 return rc; 155 154 } … … 200 199 * Calc the instance size, allocate and initialize it. 201 200 */ 202 cchFilename = k LdrHlpStrLen(kLdrRdrName(pRdr));201 cchFilename = kHlpStrLen(kLdrRdrName(pRdr)); 203 202 cb = K_ALIGN_Z(K_OFFSETOF(KLDRMODPE, aShdrs[s.FileHdr.NumberOfSections]), 16) 204 203 + K_OFFSETOF(KLDRMOD, aSegments[s.FileHdr.NumberOfSections + 1]) 205 204 + cchFilename + 1; 206 pModPE = (PKLDRMODPE)k ldrHlpAlloc(cb);205 pModPE = (PKLDRMODPE)kHlpAlloc(cb); 207 206 if (!pModPE) 208 207 return KLDR_ERR_NO_MEMORY; … … 217 216 pMod->cchFilename = cchFilename; 218 217 pMod->pszFilename = (char *)&pMod->aSegments[pMod->cSegments]; 219 k LdrHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1);220 pMod->pszName = k ldrHlpGetFilename(pMod->pszFilename);218 kHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1); 219 pMod->pszName = kHlpGetFilename(pMod->pszFilename); 221 220 pMod->cchName = cchFilename - (pMod->pszName - pMod->pszFilename); 222 221 switch (s.FileHdr.Machine) … … 234 233 break; 235 234 default: 236 k ldrHlpAssert(0);235 kHlpAssert(0); 237 236 break; 238 237 } … … 410 409 case IMAGE_SCN_ALIGN_4096BYTES: pMod->aSegments[i + 1].Alignment = 4096; break; 411 410 case IMAGE_SCN_ALIGN_8192BYTES: pMod->aSegments[i + 1].Alignment = 8192; break; 412 default: k ldrHlpAssert(0); pMod->aSegments[i + 1].Alignment = 0; break;411 default: kHlpAssert(0); pMod->aSegments[i + 1].Alignment = 0; break; 413 412 } 414 413 } … … 536 535 pMod->u32Magic = 0; 537 536 pMod->pOps = NULL; 538 k ldrHlpFree(pModPE);537 kHlpFree(pModPE); 539 538 return rc; 540 539 } … … 751 750 { 752 751 pszName = KLDRMODPE_RVA2TYPE(pvBits, paRVANames[i], const char *); 753 KLDRMODPE_ASSERT(k LdrHlpStrNComp(pszName, pchSymbol, cchSymbol) || pszName[cchSymbol]);754 KLDRMODPE_ASSERT(i == 0 || k LdrHlpStrComp(pszName, KLDRMODPE_RVA2TYPE(pvBits, paRVANames[i - 1], const char *)));752 KLDRMODPE_ASSERT(kHlpStrNComp(pszName, pchSymbol, cchSymbol) || pszName[cchSymbol]); 753 KLDRMODPE_ASSERT(i == 0 || kHlpStrComp(pszName, KLDRMODPE_RVA2TYPE(pvBits, paRVANames[i - 1], const char *))); 755 754 } 756 755 #endif … … 760 759 i = (iEnd - iStart) / 2 + iStart; 761 760 pszName = KLDRMODPE_RVA2TYPE(pvBits, paRVANames[i - 1], const char *); 762 diff = k LdrHlpStrNComp(pszName, pchSymbol, cchSymbol);761 diff = kHlpStrNComp(pszName, pchSymbol, cchSymbol); 763 762 if (!diff) 764 763 diff = pszName[cchSymbol] - 0; … … 903 902 { 904 903 const char *pszName = KLDRMODPE_RVA2TYPE(pvBits, paImpDir[iImpModule].Name, const char *); 905 KSIZE cchName = k LdrHlpStrLen(pszName);904 KSIZE cchName = kHlpStrLen(pszName); 906 905 if ( ( cchName == cchImpModule 907 906 || ( cchName > cchImpModule … … 911 910 && (pszName[cchImpModule + 3] == 'l' || pszName[cchImpModule + 3] == 'L')) 912 911 ) 913 && k LdrHlpMemIComp(pszName, pszForwarder, cchImpModule)912 && kHlpMemIComp(pszName, pszForwarder, cchImpModule) 914 913 ) 915 914 { … … 918 917 */ 919 918 rc = pfnGetForwarder(pModPE->pMod, iImpModule, iSymbol, pszSymbol, 920 pszSymbol ? k LdrHlpStrLen(pszSymbol) : 0, NULL, puValue, pfKind, pvUser);919 pszSymbol ? kHlpStrLen(pszSymbol) : 0, NULL, puValue, pfKind, pvUser); 921 920 if (!rc && pfKind) 922 921 *pfKind |= KLDRSYMKIND_FORWARDER; … … 989 988 fFoundName = 1; 990 989 pszName = KLDRMODPE_RVA2TYPE(pvBits, paRVANames[iName], const char *); 991 rc = pfnCallback(pMod, iFunction + pExpDir->Base, pszName, k LdrHlpStrLen(pszName), NULL,990 rc = pfnCallback(pMod, iFunction + pExpDir->Base, pszName, kHlpStrLen(pszName), NULL, 992 991 uValue, fKind, pvUser); 993 992 if (rc) … … 1040 1039 const IMAGE_IMPORT_DESCRIPTOR *); 1041 1040 pszImportName = KLDRMODPE_RVA2TYPE(pvBits, pImpDesc->Name, const char *); 1042 cchImportName = k LdrHlpStrLen(pszImportName);1041 cchImportName = kHlpStrLen(pszImportName); 1043 1042 if (cchImportName < cchName) 1044 1043 { 1045 k LdrHlpMemCopy(pszName, pszImportName, cchImportName + 1);1044 kHlpMemCopy(pszName, pszImportName, cchImportName + 1); 1046 1045 rc = 0; 1047 1046 } 1048 1047 else 1049 1048 { 1050 k LdrHlpMemCopy(pszName, pszImportName, cchName);1049 kHlpMemCopy(pszName, pszImportName, cchName); 1051 1050 if (cchName) 1052 1051 pszName[cchName - 1] = '\0'; … … 1594 1593 const IMAGE_IMPORT_BY_NAME *pName = KLDRMODPE_RVA2TYPE(pvMapping, pThunk->u1.Ordinal, const IMAGE_IMPORT_BY_NAME *); 1595 1594 rc = pfnGetImport(pMod, iImp, NIL_KLDRMOD_SYM_ORDINAL, (const char *)pName->Name, 1596 k LdrHlpStrLen((const char *)pName->Name), NULL, &Value, &fKind, pvUser);1595 kHlpStrLen((const char *)pName->Name), NULL, &Value, &fKind, pvUser); 1597 1596 } 1598 1597 else … … 1662 1661 const IMAGE_IMPORT_BY_NAME *pName = KLDRMODPE_RVA2TYPE(pvMapping, pThunk->u1.Ordinal, const IMAGE_IMPORT_BY_NAME *); 1663 1662 rc = pfnGetImport(pMod, iImp, NIL_KLDRMOD_SYM_ORDINAL, (const char *)pName->Name, 1664 k LdrHlpStrLen((const char *)pName->Name), NULL, &Value, &fKind, pvUser);1663 kHlpStrLen((const char *)pName->Name), NULL, &Value, &fKind, pvUser); 1665 1664 } 1666 1665 else … … 1902 1901 * Zero the entire buffer first to simplify things. 1903 1902 */ 1904 k LdrHlpMemSet(pvBits, 0, pModPE->Hdrs.OptionalHeader.SizeOfImage);1903 kHlpMemSet(pvBits, 0, pModPE->Hdrs.OptionalHeader.SizeOfImage); 1905 1904 1906 1905 /* -
trunk/kStuff/kLdr/kLdrRdr.c
r3570 r3573 44 44 */ 45 45 #ifdef KLDRRDR_STRICT 46 # define KLDRRDR_ASSERT(expr) k ldrHlpAssert(expr)46 # define KLDRRDR_ASSERT(expr) kHlpAssert(expr) 47 47 #else 48 48 # define KLDRRDR_ASSERT(expr) do {} while (0) -
trunk/kStuff/kLdr/kLdrRdrFile.c
r3571 r3573 153 153 154 154 #include <k/kLdr.h> 155 #include "kLdrHlp.h"156 155 157 156 … … 167 166 */ 168 167 #ifdef KLDRRDRFILE_STRICT 169 # define KLDRRDRFILE_ASSERT(expr) k ldrHlpAssert(expr)168 # define KLDRRDRFILE_ASSERT(expr) kHlpAssert(expr) 170 169 #else 171 170 # define KLDRRDRFILE_ASSERT(expr) do {} while (0) … … 377 376 { 378 377 kldrRdrFileGenericProtect(pRdr, pPrep, cSegments, paSegments, 1 /* unprotect */); 379 return k ldrHlpPageFree(pPrep->pv, pPrep->cb);378 return kHlpPageFree(pPrep->pv, pPrep->cb); 380 379 } 381 380 … … 452 451 pv = (KU8 *)pPrep->pv + paSegments[i].RVA; 453 452 454 rc = k ldrHlpPageProtect(pv, paSegments[i].cbMapped, enmProt);453 rc = kHlpPageProtect(pv, paSegments[i].cbMapped, enmProt); 455 454 if (rc) 456 455 break; … … 502 501 */ 503 502 /** @todo only zero the areas not covered by raw file bits. */ 504 k LdrHlpMemSet(pPrep->pv, 0, pPrep->cb);503 kHlpMemSet(pPrep->pv, 0, pPrep->cb); 505 504 506 505 /* … … 769 768 770 769 /* 771 * Generic mapping code using k ldrHlpPageAlloc(), kldrHlpPageFree() and kldrHlpPageProtect().772 */ 773 rc = k ldrHlpPageAlloc(&pPrep->pv, pPrep->cb, KPROT_EXECUTE_READWRITE, fFixed);770 * Generic mapping code using kHlpPageAlloc(), kHlpPageFree() and kHlpPageProtect(). 771 */ 772 rc = kHlpPageAlloc(&pPrep->pv, pPrep->cb, KPROT_EXECUTE_READWRITE, fFixed); 774 773 if (rc) 775 774 return rc; … … 804 803 805 804 /* bailout */ 806 k ldrHlpPageFree(pPrep->pv, pPrep->cb);805 kHlpPageFree(pPrep->pv, pPrep->cb); 807 806 return rc; 808 807 } … … 896 895 if (!--pRdrFile->cMappings) 897 896 { 898 k ldrHlpFree(pRdrFile->pvMapping);897 kHlpFree(pRdrFile->pvMapping); 899 898 pRdrFile->pvMapping = NULL; 900 899 } … … 917 916 KLDRFOFF cb = pRdrFile->Core.pOps->pfnSize(pRdr); 918 917 919 pRdrFile->pvMapping = k ldrHlpAlloc(cb);918 pRdrFile->pvMapping = kHlpAlloc(cb); 920 919 if (!pRdrFile->pvMapping) 921 920 #if defined(__OS2__) || defined(__WIN__) … … 927 926 if (rc) 928 927 { 929 k ldrHlpFree(pRdrFile->pvMapping);928 kHlpFree(pRdrFile->pvMapping); 930 929 pRdrFile->pvMapping = NULL; 931 930 return rc; … … 1047 1046 if (pRdrFile->pvMapping) 1048 1047 { 1049 k ldrHlpFree(pRdrFile->pvMapping);1048 kHlpFree(pRdrFile->pvMapping); 1050 1049 pRdrFile->pvMapping = NULL; 1051 1050 } 1052 1051 1053 k ldrHlpFree(pRdr);1052 kHlpFree(pRdr); 1054 1053 return rc; 1055 1054 } … … 1076 1075 { 1077 1076 char *psz; 1078 cchFilename = k LdrHlpStrLen(szFilename);1079 psz = (char *)k LdrHlpAllocA(cchFilename + 1);1080 k LdrHlpMemCopy(psz, pszFilename, cchFilename + 1);1077 cchFilename = kHlpStrLen(szFilename); 1078 psz = (char *)kHlpAllocA(cchFilename + 1); 1079 kHlpMemCopy(psz, pszFilename, cchFilename + 1); 1081 1080 pszFilename = psz; 1082 1081 } … … 1147 1146 * Allocate the reader instance. 1148 1147 */ 1149 cchFilename = k LdrHlpStrLen(szFilename);1150 pRdrFile = (PKLDRRDRFILE)k ldrHlpAlloc(sizeof(*pRdrFile) + cchFilename);1148 cchFilename = kHlpStrLen(szFilename); 1149 pRdrFile = (PKLDRRDRFILE)kHlpAlloc(sizeof(*pRdrFile) + cchFilename); 1151 1150 if (!pRdrFile) 1152 1151 #if defined(__OS2__) … … 1174 1173 pRdrFile->cMappings = 0; 1175 1174 pRdrFile->cPreps = 0; 1176 k LdrHlpMemCopy(&pRdrFile->szFilename[0], szFilename, cchFilename + 1);1175 kHlpMemCopy(&pRdrFile->szFilename[0], szFilename, cchFilename + 1); 1177 1176 1178 1177 *ppRdr = &pRdrFile->Core; -
trunk/kStuff/kLdr/tstkLdrHeap.c
r3570 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"32 #include <k/kHlp.h> 33 33 34 34 #include <stdio.h> … … 44 44 45 45 #define CHECK(expr) \ 46 do { if (!(expr)) { printf("tstkLdrHeap(%d): ERROR - %s\n", __LINE__, #expr); cErrors++; k ldrHlpBreakpoint();} \46 do { if (!(expr)) { printf("tstkLdrHeap(%d): ERROR - %s\n", __LINE__, #expr); cErrors++; kHlpAssertBreakpoint();} \ 47 47 } while (0) 48 48 … … 72 72 73 73 #if 0 74 # define k ldrHlpAlloc(a) malloc(a)75 # define k ldrHlpFree(a) free(a)74 # define kHlpAlloc(a) malloc(a) 75 # define kHlpFree(a) free(a) 76 76 #endif 77 77 … … 93 93 * Some simple init / term. 94 94 */ 95 rc = k ldrHlpHeapInit();96 CHECK_FATAL(!rc); 97 k ldrHlpHeapTerm();98 99 rc = k ldrHlpHeapInit();100 CHECK_FATAL(!rc); 101 k ldrHlpHeapTerm();95 rc = kHlpHeapInit(); 96 CHECK_FATAL(!rc); 97 kHlpHeapTerm(); 98 99 rc = kHlpHeapInit(); 100 CHECK_FATAL(!rc); 101 kHlpHeapTerm(); 102 102 103 103 … … 105 105 * Simple alloc all, free all in FIFO order. 106 106 */ 107 rc = k ldrHlpHeapInit();107 rc = kHlpHeapInit(); 108 108 CHECK_FATAL(!rc); 109 109 … … 112 112 { 113 113 s_aAllocs[i].cb = RandSize(); 114 s_aAllocs[i].pv = k ldrHlpAlloc(s_aAllocs[i].cb);114 s_aAllocs[i].pv = kHlpAlloc(s_aAllocs[i].cb); 115 115 CHECK(s_aAllocs[i].pv); 116 116 } … … 118 118 /* 2. free all slots. */ 119 119 for (i = 0; i < MAX_ALLOCS; i++) 120 k ldrHlpFree(s_aAllocs[i].pv);120 kHlpFree(s_aAllocs[i].pv); 121 121 122 122 /* terminate */ 123 k ldrHlpHeapTerm();123 kHlpHeapTerm(); 124 124 125 125 … … 127 127 * Simple alloc all, free all in LIFO order. 128 128 */ 129 rc = k ldrHlpHeapInit();129 rc = kHlpHeapInit(); 130 130 CHECK_FATAL(!rc); 131 131 … … 134 134 { 135 135 s_aAllocs[i].cb = RandSize(); 136 s_aAllocs[i].pv = k ldrHlpAlloc(s_aAllocs[i].cb);136 s_aAllocs[i].pv = kHlpAlloc(s_aAllocs[i].cb); 137 137 CHECK(s_aAllocs[i].pv); 138 138 } … … 141 141 i = MAX_ALLOCS; 142 142 while (i-- > 0) 143 k ldrHlpFree(s_aAllocs[i].pv);143 kHlpFree(s_aAllocs[i].pv); 144 144 145 145 /* terminate */ 146 k ldrHlpHeapTerm();146 kHlpHeapTerm(); 147 147 148 148 … … 150 150 * Bunch of allocations, free half, allocate and free in pairs, free all. 151 151 */ 152 rc = k ldrHlpHeapInit();152 rc = kHlpHeapInit(); 153 153 CHECK_FATAL(!rc); 154 154 … … 157 157 { 158 158 s_aAllocs[i].cb = RandSize(); 159 s_aAllocs[i].pv = k ldrHlpAlloc(s_aAllocs[i].cb);159 s_aAllocs[i].pv = kHlpAlloc(s_aAllocs[i].cb); 160 160 CHECK(s_aAllocs[i].pv); 161 161 } … … 166 166 { 167 167 i = RandIdx(cAllocs); 168 k ldrHlpFree(s_aAllocs[i].pv);168 kHlpFree(s_aAllocs[i].pv); 169 169 cAllocs--; 170 170 if (i != cAllocs) … … 181 181 i = cAllocs; 182 182 s_aAllocs[i].cb = RandSize(); 183 s_aAllocs[i].pv = k ldrHlpAlloc(s_aAllocs[i].cb);183 s_aAllocs[i].pv = kHlpAlloc(s_aAllocs[i].cb); 184 184 CHECK(s_aAllocs[i].pv); 185 185 cAllocs++; … … 191 191 { 192 192 i = RandIdx(cAllocs); 193 k ldrHlpFree(s_aAllocs[i].pv);193 kHlpFree(s_aAllocs[i].pv); 194 194 cAllocs--; 195 195 if (i != cAllocs) … … 202 202 { 203 203 i = RandIdx(cAllocs); 204 k ldrHlpFree(s_aAllocs[i].pv);204 kHlpFree(s_aAllocs[i].pv); 205 205 cAllocs--; 206 206 if (i != cAllocs) … … 209 209 210 210 /* terminate */ 211 k ldrHlpHeapTerm();211 kHlpHeapTerm(); 212 212 213 213
Note:
See TracChangeset
for help on using the changeset viewer.