|
|
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: m68k.c when running on a COFF system. */
5:
6: #include "m68k/m68k.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: if (MACHOPIC_PURE)
15: machopic_picsymbol_stub_section ();
16: else
17: machopic_symbol_stub_section ();
18:
19: fprintf (file, "%s:\n", stub);
20: fprintf (file, "\t.indirect_symbol %s\n", symb);
21:
22: if (MACHOPIC_PURE)
23: {
24: fprintf (file, "\tmovel pc@(L%s$lazy_ptr-.),a0\n\tjmp a0@\n", symb);
25: }
26: else
27: {
28: fprintf (file, "\tmovel @(L%s$lazy_ptr),a0\n\tjmp a0@\n", symb);
29: }
30:
31: fprintf (file, "%s_binder:\n", stub);
32:
33: if (MACHOPIC_PURE)
34: {
35: fprintf (file, "\tpea pc@(L%s$lazy_ptr-.)\n", symb);
36: }
37: else
38: {
39: fprintf (file, "\tmovel #L%s$lazy_ptr,sp@-\n", symb);
40: }
41:
42: fprintf (file, "\tbra dyld_stub_binding_helper\n");
43:
44: machopic_lazy_symbol_ptr_section ();
45: fprintf (file, "L%s$lazy_ptr:\n", symb);
46: fprintf (file, "\t.indirect_symbol %s\n", symb);
47: fprintf (file, "\t.long %s_binder\n", stub);
48: }
49:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.