44 lines
		
	
	
	
		
			634 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			634 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <out.h>
 | |
| #include "mach.h"
 | |
| #include "back.h"
 | |
| #include "header.h"
 | |
| 
 | |
| 
 | |
| end_back()
 | |
| {
 | |
| 	finish_tables();                 
 | |
| 	do_local_relocation();
 | |
| }
 | |
| 
 | |
| 
 | |
| finish_tables()
 | |
| 
 | |
| /* Prepare tables for do_local_relocation() and output().
 | |
|  */
 | |
| {
 | |
| 	while ( ( text - text_area) % EM_WSIZE != 0 ) 
 | |
| 		text1( '\0');
 | |
| 	while ( ( data - data_area) % EM_WSIZE != 0 )
 | |
| 		con1( '\0');
 | |
| 	define_segments();  
 | |
| }
 | |
| 
 | |
| 
 | |
| static char *seg_name[] = {
 | |
| 		".text",
 | |
| 		".rom",
 | |
| 		".con",
 | |
| 		".bss"
 | |
| 	};
 | |
| 
 | |
| 
 | |
| define_segments()
 | |
| {
 | |
| 	int i, s;
 | |
| 
 | |
| 	for ( s = SEGTXT; s <= SEGBSS; s++) {
 | |
| 		i = find_sym( seg_name[s], SYMBOL_DEFINITION);
 | |
| 		symbol_table[i].on_type = ( S_MIN + s) | S_SCT;
 | |
| 	}
 | |
| }
 | |
| 
 |