Changeset 92
- Timestamp:
- 12/21/05 22:14:07 (3 years ago)
- Files:
-
- trunk/buildutils.bat (modified) (1 diff)
- trunk/ddl/Utils.d (modified) (2 diffs)
- trunk/ddl/ddl/DDLBinary.d (modified) (4 diffs)
- trunk/ddl/insitu/InSituLibBinary.d (modified) (2 diffs)
- trunk/ddl/insitu/InSituLibrary.d (modified) (1 diff)
- trunk/ddl/insitu/InSituModule.d (modified) (1 diff)
- trunk/ddl/omf/OMFBinary.d (modified) (6 diffs)
- trunk/ddl/omf/RecordCursor.d (modified) (1 diff)
- trunk/utils/ddlinfo.d (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/buildutils.bat
r85 r92 11 11 12 12 echo UTILS:Packaging Win32 Binaries 13 rm ../downloads/ddl.beta.utils.1. 0.win32.bin.zip14 zip ../downloads/ddl.beta.utils.1. 0.win32.bin.zip utils/*.exe13 rm ../downloads/ddl.beta.utils.1.1.win32.bin.zip 14 zip ../downloads/ddl.beta.utils.1.1.win32.bin.zip utils/*.exe 15 15 16 16 echo UTILS:Packaging Source 17 rm ../downloads/ddl.beta.utils.1.0.src.zip 18 zip ../downloads/ddl.beta.utils.1.0.src.zip utils/*.d 17 rm ../downloads/ddl.beta.utils.1.1.src.zip 18 zip ../downloads/ddl.beta.utils.1.1.src.zip utils/*.d 19 20 copy utils\*.exe c:\dev\dmd\bin\ trunk/ddl/Utils.d
r91 r92 50 50 void load(char[] filename){ 51 51 this.filename = filename; 52 debugLog(filename); 52 53 assert(std.file.exists(filename)); 53 54 buffer = cast(ubyte[])std.file.read(filename); … … 134 135 135 136 public ubyte peekByte(){ 136 return data[position +1];137 return data[position]; 137 138 } 138 139 trunk/ddl/ddl/DDLBinary.d
r85 r92 34 34 */ 35 35 class DDLBinary{ 36 protected static const uint MagicBytes = ('D'<<24)|('D'<<16)|('L'<<8)|('!');36 protected static const char[] MagicBytes = "DDL!"; 37 37 protected static const uint DDLVersion = 0x00010001; 38 38 protected static const uint BufferSize = 4096; … … 60 60 61 61 protected void loadHeader(ReadCursor cursor){ 62 u int magic = cursor.getDWord();63 if(magic != MagicBytes){62 ubyte[] magic = cursor.getBytes(4); 63 if(magic != cast(ubyte[])MagicBytes){ 64 64 throw new Exception("File is not a DDL library"); 65 65 } … … 110 110 uint binaryStart = 0; 111 111 112 cursor.write( MagicBytes);112 cursor.write(cast(ubyte[])MagicBytes); 113 113 cursor.write(DDLVersion); 114 114 cursor.write(binaryStart); // dummy argument, return here when finished … … 136 136 cursor.write(binaryData); 137 137 138 cursor.setPosition( 4);138 cursor.setPosition(8); 139 139 cursor.write(binaryStart); // write it for real this time, at the start of the file 140 140 trunk/ddl/insitu/InSituLibBinary.d
r85 r92 25 25 module ddl.insitu.InSituLibBinary; 26 26 27 private import std.stream;28 27 private import std.zlib; 29 28 … … 97 96 // write the actual file 98 97 cursor = new WriteCursor(); 99 cursor.write( magicString);98 cursor.write(cast(ubyte[])magicString); 100 99 cursor.write(InSituVersion); 101 100 cursor.write(allSymbols.length); trunk/ddl/insitu/InSituLibrary.d
r85 r92 30 30 private import ddl.insitu.InSituBinary; 31 31 private import ddl.insitu.InSituModule; 32 private import std.stream;33 34 debug private import std.stdio;35 32 36 33 class InSituLibrary : DynamicLibrary{ trunk/ddl/insitu/InSituModule.d
r85 r92 28 28 private import ddl.DynamicModule; 29 29 private import ddl.insitu.InSituModule; 30 private import std.stream;31 30 32 31 class InSituModule : DynamicModule{ trunk/ddl/omf/OMFBinary.d
r85 r92 176 176 protected void parseTHEADR(OMFRecordCursor cursor){ 177 177 char[] name = cursor.getLString(); 178 debug writefln("Library Name: %s",name);178 debug debugLog("Library Name: %s",name); 179 179 this.libraryName = name; 180 180 this.libraryName = std.string.replace(this.libraryName,"/","."); … … 225 225 } 226 226 227 private import std.stdio;228 227 /* 229 228 Read in public names … … 232 231 uint groupIndex = cursor.getIndex(); 233 232 uint segmentIndex = cursor.getIndex(); 234 debug printf("PUBDEF group: %d segment: %d\n",groupIndex,segmentIndex);233 debug debugLog("PUBDEF group: %d segment: %d\n",groupIndex,segmentIndex); 235 234 236 235 ushort baseFrame = 0; … … 482 481 ubyte[] result; 483 482 484 //debug writefln("parseblock: repeat %d block count %d",repeatCount,blockCount);483 //debug debugLog("parseblock: repeat %d block count %d",repeatCount,blockCount); 485 484 486 485 //build raw data using a repeated block … … 674 673 675 674 protected void parseRecords(OMFRecordCursor mainCursor){ 676 Stdout.println("parsing records: %s bytes",mainCursor.getData.length);675 debug Stdout.println("parsing records: %s bytes",mainCursor.getData.length); 677 676 while(mainCursor.hasMore()){ 678 677 ubyte type; … … 704 703 705 704 706 //debug writefln("Record: %0.2X %d bytes",type,length);705 debug debugLog("Record: %0.2X %d bytes",type,length); 707 706 708 707 //NOTE: there are *many* record types not supported in here, as they are not used in DMD .obj files trunk/ddl/omf/RecordCursor.d
r14 r92 24 24 +/ 25 25 module ddl.omf.RecordCursor; 26 27 debug private import std.stdio;28 26 29 27 class RecordCursor{ trunk/utils/ddlinfo.d
r85 r92 42 42 ddlinfo <object file> { -switch } 43 43 44 -r raw output instead of friendly names/symbols. 44 -r raw output instead of friendly names/symbols. 45 -a attributes only 46 -s symbols only 45 47 "; 46 48 … … 64 66 // pick through the options (if any) 65 67 bit rawOutput = false; 68 bit displayAttribs = false; 69 bit displaySymbols = false; 66 70 67 71 // get dash prefixed args … … 72 76 }); 73 77 78 parser.bind("a",delegate void(){ 79 displayAttribs=true; 80 }); 81 82 parser.bind("s",delegate void(){ 83 displaySymbols=true; 84 }); 85 74 86 parser.parse(args[2..$]); 87 88 if(!displaySymbols && !displayAttribs){ 89 displaySymbols = true; 90 displayAttribs = true; 91 } 75 92 76 93 // validate a few things … … 85 102 // (attempt to) load the binary file 86 103 DynamicLibrary lib = regsitry.load(file); 104 105 if(!lib){ 106 Stdout.println("file '%s' is not supported.",file.filename); 107 return 1; 108 } 87 109 88 110 Stdout.println("filename: '%s'",file.filename); 89 111 Stdout.println("type: '%s'",lib.getType); 90 112 91 if(lib.getAttributes.length > 0){ 92 Stdout.println("attributes: "); 93 foreach(char[] name,char[] value; lib.getAttributes){ 94 Stdout.println("%s - %s",name,value); 113 if(displayAttribs){ 114 if(lib.getAttributes.length > 0){ 115 Stdout.println("attributes: "); 116 foreach(char[] name,char[] value; lib.getAttributes){ 117 Stdout.println("%s - %s",name,value); 118 } 95 119 } 96 120 } 97 98 Stdout.println("\nModules (%d):",lib.getModules.length); 99 foreach(DynamicModule mod; lib.getModules()){ 100 Stdout.println("\n%s",mod.getName()); 101 102 Stdout.println("\nDependencies (%d):",mod.getDependencies.length); 103 foreach(char[] dep; mod.getDependencies){ 104 debug Stdout.println("%s",dep); 105 if(rawOutput){ 106 Stdout.println("%s",dep); 121 if(displaySymbols){ 122 Stdout.println("\nModules (%d):",lib.getModules.length); 123 foreach(DynamicModule mod; lib.getModules()){ 124 Stdout.println("\n%s",mod.getName()); 125 126 Stdout.println("\nDependencies (%d):",mod.getDependencies.length); 127 foreach(char[] dep; mod.getDependencies){ 128 debug Stdout.println("%s",dep); 129 if(rawOutput){ 130 Stdout.println("%s",dep); 131 } 132 else{ 133 Stdout.println("%s",demangleSymbol(dep)); 134 } 107 135 } 108 else{ 109 Stdout.println("%s",demangleSymbol(dep)); 110 } 111 } 112 113 Stdout.println("\nExports (%d):",mod.getExports.length); 114 foreach(ExportSymbol sym; mod.getExports()){ 115 debug Stdout.println("%s",sym.name); 116 if(rawOutput){ 117 Stdout.println("%s",sym.name); 118 } 119 else{ 120 Stdout.println("%s",demangleSymbol(sym.name)); 121 } 122 } 123 } 124 136 137 Stdout.println("\nExports (%d):",mod.getExports.length); 138 foreach(ExportSymbol sym; mod.getExports()){ 139 debug Stdout.println("%s",sym.name); 140 if(rawOutput){ 141 Stdout.println("%s",sym.name); 142 } 143 else{ 144 Stdout.println("%s",demangleSymbol(sym.name)); 145 } 146 } 147 } 148 } 149 125 150 return 0; 126 151 }
