aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Novoa III <mjn3@codepoet.org>2003-12-04 15:02:57 +0000
committerManuel Novoa III <mjn3@codepoet.org>2003-12-04 15:02:57 +0000
commit22e1ca382be38c2f4566925de25f3c749dd44232 (patch)
tree58a22836097dce8096099a0fcf11e43e160abf12
parentc83e3a6406b4e3cc2d9499c1f21a5b369b972867 (diff)
downloadbusybox-w32-22e1ca382be38c2f4566925de25f3c749dd44232.tar.gz
busybox-w32-22e1ca382be38c2f4566925de25f3c749dd44232.tar.bz2
busybox-w32-22e1ca382be38c2f4566925de25f3c749dd44232.zip
Add (untested) support for cris, based on the (old) busybox insmod
that axis distributes.
-rw-r--r--modutils/insmod.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/modutils/insmod.c b/modutils/insmod.c
index a30aed9e7..e2ca64169 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -219,6 +219,19 @@
219#define SYMBOL_PREFIX "_" 219#define SYMBOL_PREFIX "_"
220#endif 220#endif
221 221
222#if defined(__cris__)
223#ifndef EM_CRIS
224#define EM_CRIS 76
225#define R_CRIS_NONE 0
226#define R_CRIS_32 3
227#endif
228
229#define MATCH_MACHINE(x) (x == EM_CRIS)
230#define SHT_RELM SHT_RELA
231#define Elf32_RelM Elf32_Rela
232#define ELFCLASSM ELFCLASS32
233#endif
234
222#ifndef SHT_RELM 235#ifndef SHT_RELM
223#error Sorry, but insmod.c does not yet support this architecture... 236#error Sorry, but insmod.c does not yet support this architecture...
224#endif 237#endif
@@ -253,7 +266,7 @@
253#ifndef MODUTILS_MODULE_H 266#ifndef MODUTILS_MODULE_H
254static const int MODUTILS_MODULE_H = 1; 267static const int MODUTILS_MODULE_H = 1;
255 268
256#ident "$Id: insmod.c,v 1.105 2003/10/21 06:45:29 andersen Exp $" 269#ident "$Id: insmod.c,v 1.106 2003/12/04 15:02:57 mjn3 Exp $"
257 270
258/* This file contains the structures used by the 2.0 and 2.1 kernels. 271/* This file contains the structures used by the 2.0 and 2.1 kernels.
259 We do not use the kernel headers directly because we do not wish 272 We do not use the kernel headers directly because we do not wish
@@ -474,7 +487,7 @@ int delete_module(const char *);
474#ifndef MODUTILS_OBJ_H 487#ifndef MODUTILS_OBJ_H
475static const int MODUTILS_OBJ_H = 1; 488static const int MODUTILS_OBJ_H = 1;
476 489
477#ident "$Id: insmod.c,v 1.105 2003/10/21 06:45:29 andersen Exp $" 490#ident "$Id: insmod.c,v 1.106 2003/12/04 15:02:57 mjn3 Exp $"
478 491
479/* The relocatable object is manipulated using elfin types. */ 492/* The relocatable object is manipulated using elfin types. */
480 493
@@ -1280,6 +1293,18 @@ arch_apply_relocation(struct obj_file *f,
1280 goto bb_use_plt; 1293 goto bb_use_plt;
1281#endif 1294#endif
1282 1295
1296#if defined (__cris__)
1297 case R_CRIS_NONE:
1298 break;
1299
1300 case R_CRIS_32:
1301 /* CRIS keeps the relocation value in the r_addend field and
1302 * should not use whats in *loc at all
1303 */
1304 *loc = v;
1305 break;
1306#endif
1307
1283#if defined(CONFIG_USE_PLT_ENTRIES) 1308#if defined(CONFIG_USE_PLT_ENTRIES)
1284 1309
1285 bb_use_plt: 1310 bb_use_plt: