*** empty log message ***
[platform/upstream/binutils.git] / ld / ld-emul.c
1 /* Copyright (C) 1991 Free Software Foundation, Inc.
2
3 This file is part of GLD, the Gnu Linker.
4
5 GLD is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 1, or (at your option)
8 any later version.
9
10 GLD is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GLD; see the file COPYING.  If not, write to
17 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
18
19 /*
20  * $Id$ 
21  */
22
23 /*
24  * clearing house for ld emulation states 
25  */
26
27 #include "sysdep.h"
28 #include "bfd.h"
29
30 #include "config.h"
31 #include "ld.h"
32 #include "ld-emul.h"
33 #include "ldmisc.h"
34
35 extern ld_emulation_xfer_type ld_lnk960_emulation;
36 extern ld_emulation_xfer_type ld_gldm88kbcs_emulation;
37 extern ld_emulation_xfer_type ld_gld_emulation;
38 extern ld_emulation_xfer_type ld_vanilla_emulation;
39 extern ld_emulation_xfer_type ld_gld68k_emulation;
40 extern ld_emulation_xfer_type ld_gld960_emulation;
41
42
43
44 ld_emulation_xfer_type *ld_emulation;
45
46 void
47 ldemul_hll(name)
48 char *name;
49 {
50   ld_emulation->hll(name);
51 }
52
53
54 void ldemul_syslib(name)
55 char *name;
56 {
57   ld_emulation->syslib(name);
58 }
59
60 void
61 ldemul_after_parse()
62 {
63   ld_emulation->after_parse();
64 }
65
66 void
67 ldemul_before_parse()
68 {
69   ld_emulation->before_parse();
70 }
71
72 void 
73 ldemul_after_allocation()
74 {
75   ld_emulation->after_allocation();
76 }
77
78 void 
79 ldemul_before_allocation()
80 {
81   if (ld_emulation->before_allocation) {
82     ld_emulation->before_allocation();
83   }
84 }
85
86
87 void
88 ldemul_set_output_arch()
89 {
90   ld_emulation->set_output_arch();
91 }
92
93 char *
94 ldemul_choose_target()
95 {
96   return ld_emulation->choose_target();
97 }
98
99 char *
100 ldemul_get_script()
101 {
102   return ld_emulation->get_script();
103 }
104
105 void
106 ldemul_choose_mode(target)
107 char *target;
108 {
109   if (strcmp(target,LNK960_EMULATION_NAME)==0) {
110     ld_emulation = &ld_lnk960_emulation;
111   }
112   else if (strcmp(target,GLD960_EMULATION_NAME)==0) {
113     ld_emulation = &ld_gld960_emulation;
114   }
115 else if (strcmp(target,GLDM88KBCS_EMULATION_NAME)==0) {
116   ld_emulation = &ld_gldm88kbcs_emulation;
117 }
118 #ifndef GNU960
119   else if (strcmp(target,GLD_EMULATION_NAME)==0) {
120     ld_emulation = &ld_gld_emulation;
121   }
122   else if (strcmp(target,VANILLA_EMULATION_NAME)==0) {
123     ld_emulation = &ld_vanilla_emulation;
124   }
125   else if (strcmp(target,GLD68K_EMULATION_NAME)==0) {
126     ld_emulation = &ld_gld68k_emulation;
127   }
128 #endif
129   else {
130     info("%P%F unrecognised emulation mode: %s\n",target);
131   }
132 }
133
134
135