Changeset 525
- Timestamp:
- Aug 5, 2003, 3:15:13 AM (22 years ago)
- Location:
- trunk/src/emx/src/lib
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/emx/src/lib/libc.smak
-
Property cvs2svn:cvs-rev
changed from
1.22
to1.23
r524 r525 51 51 LIBC.OBJS := $.omf/src/lib/startup/386/dll0.obj $.omf/src/lib/startup/dllinit.obj 52 52 LIBC.LIBS := $.omf/c.lib $.omf/c_app.lib 53 LIBC.DEPS := $.omf/os2stub.bin 53 LIBC.DEPS := $.omf/os2stub.bin $.omf/c_alias.lib 54 54 LIBC.DLL.OBJS := 55 55 LIBC.DIRS := $(sort $(dir $(LIBC.OBJS) $(LIBC.DEPS) $(LIBC.DLL.OBJS))) … … 62 62 LIBC.PRF.DIRS := $(sort $(dir $(LIBC.PRF.OBJS) $(LIBC.PRF.DEPS))) 63 63 64 TARGDIRS += $(LIBC.DIRS) $(LIBC.PRF.DIRS) 64 LIBC.ELH.DLL := $(LIBC.DLL:.dll=.elh) 65 LIBC.ELH.DEF := $.omf/libc.elh.def 66 LIBC.ELH.OBJS := $(LIBC.OBJS) 67 LIBC.ELH.LIBS := $(LIBC.LIBS) 68 LIBC.ELH.DEPS := $(LIBC.DEPS) 69 LIBC.ELH.DIRS := 70 71 TARGDIRS += $(LIBC.DIRS) $(LIBC.PRF.DIRS) $(LIBC.ELH.DIRS) 65 72 66 73 … … 78 85 endif 79 86 80 # LIBC .def file 87 # LIBC .def file 81 88 $(LIBC.DEF): $(LIBC.LIBS) src/lib/libc.def 82 89 $(call RM,$@) … … 118 125 119 126 127 # LIBC.ELH - Electric Heap version of libcXY.dll 128 $(LIBC.ELH.DLL): $(LIBC.ELH.OBJS) $(LIBC.ELH.LIBS) $(LIBC.ELH.DEF) $(LIBC.ELH.DEPS) 129 $(LD) -o $@ -Zomf $(subst -s,,$(LDFLAGS.DLL)) -Zmap=$@.map -nostdlib \ 130 $(LIBC.ELH.DEF) \ 131 $(LIBC.ELH.OBJS) \ 132 $(LIBC.ELH.LIBS) \ 133 -L$.omf -los2 -lgcc -lgcc_eh -lc_alias -lend \ 134 -Zlinker -STUB:$.omf/os2stub.bin 135 echo $@ 136 137 # LIBC .def file (two steps) 138 # Man! This sucks! Isn't there support for inline files (<<\nfile\n<<) in GNU MAKE? 139 # Even M$/IBM nmake have that. 140 # And no, I couldn't care less about performance with this type of DLL. 141 $(LIBC.ELH.DEF): $(LIBC.DEF) src/lib/libc.smak 142 $(call RM,$@) 143 cp $< $@ 144 @$(call FECHO,$@,"") 145 @$(call FECHO,$@,"IMPORTS"); 146 @$(call FECHO,$@," kHeapDbgException = KLIBDBG.kHeapDbgException") 147 @$(call FECHO,$@," __std_calloc = KLIBDBG._gcc__std_calloc") 148 @$(call FECHO,$@," __um_default_alloc = KLIBDBG._gcc__um_default_alloc") 149 @$(call FECHO,$@," __um_default_expand = KLIBDBG._gcc__um_default_expand") 150 @$(call FECHO,$@," __um_default_release = KLIBDBG._gcc__um_default_release") 151 @$(call FECHO,$@," __um_default_shrink = KLIBDBG._gcc__um_default_shrink") 152 @$(call FECHO,$@," __std_expand = KLIBDBG._gcc__std_expand") 153 @$(call FECHO,$@," __std_free = KLIBDBG._gcc__std_free") 154 @$(call FECHO,$@," __heapchk = KLIBDBG._gcc__heapchk") 155 @$(call FECHO,$@," __heapmin = KLIBDBG._gcc__heapmin") 156 @$(call FECHO,$@," __heapset = KLIBDBG._gcc__heapset") 157 @$(call FECHO,$@," __heap_walk = KLIBDBG._gcc__heap_walk") 158 @$(call FECHO,$@," __um_seg_addmem = KLIBDBG._gcc__um_seg_addmem") 159 @$(call FECHO,$@," __um_seg_setmem = KLIBDBG._gcc__um_seg_setmem") 160 @$(call FECHO,$@," __um_addmem_nolock = KLIBDBG._gcc__um_addmem_nolock") 161 @$(call FECHO,$@," __um_crumb_alloc = KLIBDBG._gcc__um_crumb_alloc") 162 @$(call FECHO,$@," __um_lump_alloc = KLIBDBG._gcc__um_lump_alloc") 163 @$(call FECHO,$@," __um_alloc_no_lock = KLIBDBG._gcc__um_alloc_no_lock") 164 @$(call FECHO,$@," __um_free_maybe_lock = KLIBDBG._gcc__um_free_maybe_lock") 165 @$(call FECHO,$@," __um_crumb_free_maybe_lock = KLIBDBG._gcc__um_crumb_free_maybe_lock") 166 @$(call FECHO,$@," __um_lump_free_maybe_lock = KLIBDBG._gcc__um_lump_free_maybe_lock") 167 @$(call FECHO,$@," __um_find_bucket = KLIBDBG._gcc__um_find_bucket") 168 @$(call FECHO,$@," __um_lump_unlink_bucket = KLIBDBG._gcc__um_lump_unlink_bucket") 169 @$(call FECHO,$@," __um_lump_unlink_heap = KLIBDBG._gcc__um_lump_unlink_heap") 170 @$(call FECHO,$@," __um_lump_link_heap = KLIBDBG._gcc__um_lump_link_heap") 171 @$(call FECHO,$@," __um_lump_make_free = KLIBDBG._gcc__um_lump_make_free") 172 @$(call FECHO,$@," __um_lump_coalesce_free = KLIBDBG._gcc__um_lump_coalesce_free") 173 @$(call FECHO,$@," __um_init_default_regular_heap = KLIBDBG._gcc__um_init_default_regular_heap") 174 @$(call FECHO,$@," __um_init_default_tiled_heap = KLIBDBG._gcc__um_init_default_tiled_heap") 175 @$(call FECHO,$@," __um_realloc = KLIBDBG._gcc__um_realloc") 176 @$(call FECHO,$@," __um_walk_error = KLIBDBG._gcc__um_walk_error") 177 @$(call FECHO,$@," __um_walk_no_lock = KLIBDBG._gcc__um_walk_no_lock") 178 @$(call FECHO,$@," __std_malloc = KLIBDBG._gcc__std_malloc") 179 @$(call FECHO,$@," __mheap = KLIBDBG._gcc__mheap") 180 @$(call FECHO,$@," __msize = KLIBDBG._gcc__msize") 181 @$(call FECHO,$@," __std_realloc = KLIBDBG._gcc__std_realloc") 182 @$(call FECHO,$@," __tcalloc = KLIBDBG._gcc__tcalloc") 183 @$(call FECHO,$@," __tfree = KLIBDBG._gcc__tfree") 184 @$(call FECHO,$@," __theapmin = KLIBDBG._gcc__theapmin") 185 @$(call FECHO,$@," __tmalloc = KLIBDBG._gcc__tmalloc") 186 @$(call FECHO,$@," __trealloc = KLIBDBG._gcc__trealloc") 187 @$(call FECHO,$@," __uaddmem = KLIBDBG._gcc__uaddmem") 188 @$(call FECHO,$@," __ucalloc = KLIBDBG._gcc__ucalloc") 189 @$(call FECHO,$@," __uclose = KLIBDBG._gcc__uclose") 190 @$(call FECHO,$@," __ucreate = KLIBDBG._gcc__ucreate") 191 @$(call FECHO,$@," __ucreate2 = KLIBDBG._gcc__ucreate2") 192 @$(call FECHO,$@," __udefault = KLIBDBG._gcc__udefault") 193 @$(call FECHO,$@," __udestroy = KLIBDBG._gcc__udestroy") 194 @$(call FECHO,$@," __uheapchk = KLIBDBG._gcc__uheapchk") 195 @$(call FECHO,$@," __uheapmin = KLIBDBG._gcc__uheapmin") 196 @$(call FECHO,$@," __uheapset = KLIBDBG._gcc__uheapset") 197 @$(call FECHO,$@," __umalloc = KLIBDBG._gcc__umalloc") 198 @$(call FECHO,$@," __uopen = KLIBDBG._gcc__uopen") 199 @$(call FECHO,$@," __ustats = KLIBDBG._gcc__ustats") 200 @$(call FECHO,$@," __utcalloc = KLIBDBG._gcc__utcalloc") 201 @$(call FECHO,$@," __utdefault = KLIBDBG._gcc__utdefault") 202 @$(call FECHO,$@," __utmalloc = KLIBDBG._gcc__utmalloc") 203 @$(call FECHO,$@," __uheap_type = KLIBDBG._gcc__uheap_type") 204 @$(call FECHO,$@," __uheap_walk = KLIBDBG._gcc__uheap_walk") 205 @$(call FECHO,$@," __uheap_walk2 = KLIBDBG._gcc__uheap_walk2") 206 @$(call FECHO,$@," ") 207 @$(call FECHO,$@," __um_regular_heap = KLIBDBG._gcc__um_regular_heap") 208 @$(call FECHO,$@," __um_tiled_heap = KLIBDBG._gcc__um_tiled_heap") 209 210 120 211 # Put libc into the big picture. (semihacks) 121 212 DO.HELP.MODULES += $(call ECHO, libc-dll - The dynamic C library (.dll))$(NL) … … 125 216 libc-dll: emxbind emxexp app alias libc os2 \ 126 217 $(LIBC.DIRS) $(LIBC.DLL) $(LIBC.IMPLIB) \ 127 $(LIBC.PRF.DIRS) $(LIBC.PRF.DLL) 218 $(LIBC.PRF.DIRS) $(LIBC.PRF.DLL) \ 219 $(LIBC.ELH.DIRS) $(LIBC.ELH.DLL) 128 220 129 221 # Installation. 130 222 INS.FILES += $(INS)lib/$(notdir $(LIBC.DLL)) \ 131 223 $(addprefix $(INS)lib/,$(notdir $(LIBC.IMPLIB))) \ 132 $(INS)lib/$(notdir $(LIBC.PRF.DLL)) 224 $(INS)lib/$(notdir $(LIBC.PRF.DLL)) \ 225 $(INS)lib/$(notdir $(LIBC.ELH.DLL)) 133 226 134 227 $(INS)lib/$(notdir $(LIBC.DLL)): $(LIBC.DLL) … … 138 231 $(call CP,$<,$@) 139 232 233 $(INS)lib/$(notdir $(LIBC.ELH.DLL)): $(LIBC.ELH.DLL) 234 $(call CP,$<,$@) 235 140 236 ifeq ($(MODE),opt) 141 237 INS.FILES += $(INS)lib/$(notdir $(LIBC.DLL:.dll=.dbg)) -
Property cvs2svn:cvs-rev
changed from
-
trunk/src/emx/src/lib/sys/__init.c
-
Property cvs2svn:cvs-rev
changed from
1.4
to1.5
r524 r525 356 356 } 357 357 358 /* from kLib/kHeapDbg.h */ 359 typedef enum { enmRead, enmWrite, enmUnknown } ENMACCESS; 360 extern BOOL _Optlink kHeapDbgException(void * pvAccess, 361 ENMACCESS enmAccess, 362 void * pvIP, 363 void * pvOS); 364 /* Weak on _Optlink and _System doesn't work because of underscoring. */ 365 asm (".weak kHeapDbgException"); 358 366 359 367 ULONG _sys_exception (PEXCEPTIONREPORTRECORD report, … … 379 387 break; 380 388 case XCPT_ACCESS_VIOLATION: 389 /* If we're linking libc01.elh or someone is linking static libc 390 together with kLib the electric fence heap will get the opportunity 391 to check if any access violation was caused by someone touching any 392 of the electric fences. */ 393 if ( kHeapDbgException 394 && ( report->ExceptionInfo[0] == XCPT_READ_ACCESS 395 || report->ExceptionInfo[0] == XCPT_WRITE_ACCESS 396 || report->ExceptionInfo[0] == XCPT_EXECUTE_ACCESS 397 || report->ExceptionInfo[0] == XCPT_UNKNOWN_ACCESS) 398 ) 399 { 400 ENMACCESS enmAccess = enmRead; 401 switch (report->ExceptionInfo[0]) 402 { 403 case XCPT_WRITE_ACCESS: enmAccess = enmWrite; break; 404 case XCPT_UNKNOWN_ACCESS: enmAccess = enmUnknown; break; 405 } 406 /* This call returns true if the page was commited in order 407 to workaround the immediate problem. If it returns false 408 the default action should be taken. */ 409 if (kHeapDbgException((void*)report->ExceptionInfo[1], 410 enmAccess, 411 report->ExceptionAddress, 412 report)) 413 return XCPT_CONTINUE_EXECUTION; 414 } 381 415 case XCPT_DATATYPE_MISALIGNMENT: 382 416 return _sys_trap (SIGSEGV); -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.