This preserves the name and value of every symbol. The type and other info of a symbol might be lost. In gdb, one can now "disas main" or "disas '.ret'" to disassemble functions by name. Most symbols are in sections, so I also teach cvmach to emit the Mach section headers. The entry point in plat/osx*/descr moves down to make room for the section headers and LC_SYMTAB. I fix some bugs in calculations of cvmach. They were wrong if ROM had a greater alignment than TEXT, or if DATA did not start on a page boundary. I introduce machseg[] to simplify the mess of variables in main(). I declare most functions as static. Also, cvmach becomes the first program to #include <object.h>.
		
			
				
	
	
		
			15 lines
		
	
	
	
		
			196 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			15 lines
		
	
	
	
		
			196 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
| cprogram {
 | |
| 	name = "cvmach",
 | |
| 	srcs = { "./cvmach.c" },
 | |
| 	deps = {
 | |
| 		"h+emheaders",
 | |
| 		"modules/src/object+lib",
 | |
| 	}
 | |
| }
 | |
| 
 | |
| installable {
 | |
| 	name = "pkg",
 | |
| 	map = {
 | |
| 		["$(PLATDEP)/cvmach"] = "+cvmach",
 | |
| 	}
 | |
| }
 |