Annotation of GNUtools/cc/config/i386/next.c, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.