This is rel_sun3.c in view mode; [Download] [Up]
/* Copyright William Schelter. All rights reserved. This file does the low level relocation which tends to be very system dependent. It is included by the file sfasl.c */ relocate() { char *where; {unsigned int new_value; where = the_start + relocation_info.r_address; if(relocation_info.r_extern) { if (relocation_info.r_pcrel) new_value= - (int)start_address + symbol_table[relocation_info.r_symbolnum].n_value; else { new_value= symbol_table[relocation_info.r_symbolnum].n_value;}} else { switch(relocation_info.r_symbolnum){ case N_DATA: case N_BSS: case N_TEXT: new_value= (int)start_address; break; default: dprintf(relocation_info.r_extern = %d, relocation_info.r_extern); printf("\nrelocation_info {r_symbolnum= %d, r_address = %d, r_extern=0 Ignored:",relocation_info.r_address, relocation_info.r_symbolnum);fflush(stdout); goto DONT;} }; switch(relocation_info.r_length){ case 0: *( char *)where = new_value + *( char *) where; break; case 1: *( short *)where = new_value + *( short *) where; break; case 2: *( long *)where = new_value + *( long *) where; break; } DONT:; } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.