37 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * archive.h
 | 
						|
 *
 | 
						|
 *  Created on: 2018-11-18
 | 
						|
 *      Author: carl
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __ARCHIVE_H_INCLUDED__
 | 
						|
#define __ARCHIVE_H_INCLUDED__
 | 
						|
 | 
						|
/*
 | 
						|
 * Process archive with table of contents. The table of contents tells
 | 
						|
 * of symbols in which module they are defined. We scan the table for
 | 
						|
 * symbols that are known but not yet defined. Then we extract all necessary
 | 
						|
 * information from the corresponding module. This module may need symbols that
 | 
						|
 * were defined in modules located before this one in the archive, so we
 | 
						|
 * scan the table again. We perform these actions as long as new symbols
 | 
						|
 * are defined.
 | 
						|
 */
 | 
						|
void arch(void);
 | 
						|
 | 
						|
/*
 | 
						|
 * An archive member that will be loaded is remembered by storing its position
 | 
						|
 * in the archive into the table of positions.
 | 
						|
 */
 | 
						|
void notelib(long pos);
 | 
						|
 | 
						|
/*
 | 
						|
 * Process the archive in pass 2.
 | 
						|
 * We walk through the table of positions telling at what byte offset the
 | 
						|
 * archive header + module is located, until this position is ENDLIB, meaning
 | 
						|
 * that we've processed all needed modules in this archive. Each group of
 | 
						|
 * positions of an archive is terminated with ENDLIB.
 | 
						|
 */
 | 
						|
void arch2(void);
 | 
						|
 | 
						|
#endif /* __ARCHIVE_H_INCLUDED__ */
 |