Changeset 227
- Timestamp:
- 08/02/06 19:07:04 (2 years ago)
- Files:
-
- trunk/ddl/Utils.d (modified) (1 diff)
- trunk/ddl/omf/OMFBinary.d (modified) (1 diff)
- trunk/ddl/omf/OMFModule.d (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ddl/Utils.d
r216 r227 93 93 alias ExtSprintClassT!(char) ExtSprintClass; 94 94 95 char[] dataDumper(void* data,uint length){ 96 char[] result = ""; 97 char[] buf2 = ""; 98 ubyte* ptr = cast(ubyte*)(cast(uint)data&0xFFFFFFF0); // start at nearest page 99 ExtSprintClass sprint = new ExtSprintClass(1024); 100 101 for(uint idx=0; idx<length; idx++,ptr++){ 102 ubyte b = *ptr; 103 if(idx % 16 == 0){ 104 result ~= sprint(" | %s\n [%0.8X] ",buf2,ptr); 105 buf2 = ""; 106 } 107 108 if(ptr == data){ 109 result ~= "*"; 110 } 111 else{ 112 result ~= " "; 113 } 114 115 if(b < 16) result ~= "0"; //HACK: sprint doesn't left-pad correctly 116 result ~= sprint("%0.2X",b); 117 118 if(b >= 32 && b <= 126){ 119 buf2 ~= cast(char)b; 120 } 121 else{ 122 buf2 ~= "."; 123 } 124 } 125 result ~= " | " ~ buf2 ~ "\n"; 126 return result; 127 } 128 95 129 /* 96 130 debug{ trunk/ddl/omf/OMFBinary.d
r224 r227 473 473 if((fixDataByte & 0b00000100) == 0){ 474 474 reader.get(targetDisplacement); 475 //debug debugLog("targetDisplacement: %d for %d (%d)",cast(uint)targetDisplacement,fixupData.destNameIndex,offset); 475 476 } 476 477 trunk/ddl/omf/OMFModule.d
r224 r227 116 116 fixupValue = cast(uint)(segmentImages[targetIndex].data.ptr); 117 117 } 118 debug debugLog("fixup dest [%0.8X] = fixupValue [%0.8X] rel:%d",destAddress,fixupValue,cast(uint)isSegmentRelative);118 debug debugLog("fixup dest [%0.8X] (%0.8X) = fixupValue [%0.8X] rel:%d",destAddress,*cast(uint*)destAddress,fixupValue,cast(uint)isSegmentRelative); 119 119 120 120 // apply the fixup value … … 125 125 *cast(uint*)destAddress = fixupValue; 126 126 } 127 else if(!isSegmentRelative){ 128 *cast(uint*)destAddress = fixupValue - cast(uint)destAddress - 4; // relative fixup, offset by width of field129 } 130 else{ // se lfrelative127 else if(!isSegmentRelative){ // relative fixup, offset by width of field 128 *cast(uint*)destAddress = fixupValue - destAddress - 4; 129 } 130 else{ // segment relative 131 131 *cast(uint*)destAddress += fixupValue; 132 132 } … … 480 480 } 481 481 } 482 result ~= "\n";482 result ~= buf2 ~ "\n"; 483 483 } 484 484
