|
|
1.1 ! root 1: /* next.c: Functions for NeXT as target machine for GNU C compiler. */ ! 2: ! 3: /* Note that the include below means that we can't debug routines in ! 4: i386.c when running on a COFF system. */ ! 5: ! 6: #include "i386/i386.c" ! 7: #include "nextstep.c" ! 8: ! 9: void ! 10: machopic_output_stub (file, symb, stub) ! 11: FILE *file; ! 12: const char *symb, *stub; ! 13: { ! 14: static int label = 0; ! 15: label += 1; ! 16: ! 17: if (MACHOPIC_PURE) ! 18: machopic_picsymbol_stub_section (); ! 19: else ! 20: machopic_symbol_stub_section (); ! 21: ! 22: fprintf (file, "%s:\n", stub); ! 23: fprintf (file, "\t.indirect_symbol %s\n", symb); ! 24: ! 25: if (MACHOPIC_PURE) ! 26: { ! 27: fprintf (file, "\tcall LPC$%d\nLPC$%d:\tpopl %%eax\n", label, label); ! 28: fprintf (file, "\tmovl L%s$lazy_ptr-LPC$%d(%%eax),%%edx\n", symb, label); ! 29: fprintf (file, "\tjmp %%edx\n"); ! 30: } ! 31: else ! 32: { ! 33: fprintf (file, "\tjmp *L%s$lazy_ptr\n", symb); ! 34: } ! 35: ! 36: fprintf (file, "%s_binder:\n", stub); ! 37: ! 38: if (MACHOPIC_PURE) ! 39: { ! 40: fprintf (file, "\tlea L%s$lazy_ptr-LPC$%d(%%eax),%%eax\n", symb, label); ! 41: fprintf (file, "\tpushl %%eax\n"); ! 42: } ! 43: else ! 44: { ! 45: fprintf (file, "\t pushl $L%s$lazy_ptr\n", symb); ! 46: } ! 47: ! 48: fprintf (file, "\tjmp dyld_stub_binding_helper\n"); ! 49: ! 50: machopic_lazy_symbol_ptr_section (); ! 51: fprintf (file, "L%s$lazy_ptr:\n", symb); ! 52: fprintf (file, "\t.indirect_symbol %s\n", symb); ! 53: fprintf (file, "\t.long %s_binder\n", stub); ! 54: } ! 55:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.