Skip to content

Commit dbf79e6

Browse files
authored
Merge pull request #419 from k-okada/test_arm_load
add test to check load-module-object-file of LOAD-MODULE class
2 parents e1dcea3 + 27c08e8 commit dbf79e6

File tree

2 files changed

+57
-4
lines changed

2 files changed

+57
-4
lines changed

lisp/c/eus.c

+21-4
Original file line numberDiff line numberDiff line change
@@ -756,14 +756,31 @@ static void initclasses()
756756
C_FCODE=speval(FCODE);
757757
/*15*/
758758
#if (WORD_SIZE == 64)
759-
CLOSURE=basicclass("CLOSURE",C_CODE,&closurecp,3,"ENV0","ENV1","ENV2");
759+
CLOSURE=basicclass("CLOSURE",C_CODE,&closurecp,
760+
#if ARM // ARM uses entry2 in struct closure in eus.h
761+
4,"ENTRY2",
760762
#else
761-
CLOSURE=basicclass("CLOSURE",C_CODE,&closurecp,2,"ENV1","ENV2");
763+
3,
764+
#endif
765+
"ENV0","ENV1","ENV2");
766+
#else
767+
CLOSURE=basicclass("CLOSURE",C_CODE,&closurecp,
768+
#if ARM // ARM uses entry2 in struct closure in eus.h
769+
3,"ENTRY2",
770+
#else
771+
2,
772+
#endif
773+
"ENV1","ENV2");
762774
#endif
763775
C_CLOSURE=speval(CLOSURE);
764776
/* 16 ---new for Solaris */
765-
LDMODULE=basicclass("LOAD-MODULE",C_CODE, &ldmodulecp, 3,
766-
"SYMBOL-TABLE","OBJECT-FILE", "HANDLE");
777+
LDMODULE=basicclass("LOAD-MODULE",C_CODE, &ldmodulecp,
778+
#if ARM // ARM uses entry2 in struct ldmodule in eus.h
779+
4,"ENTRY2",
780+
#else
781+
3,
782+
#endif
783+
"SYMBOL-TABLE","OBJECT-FILE", "HANDLE");
767784
C_LDMOD=speval(LDMODULE);
768785
/*17*/
769786
LABREF=basicclass("LABEL-REFERENCE",C_OBJECT,&labrefcp,4,

test/loader.l

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
(require :unittest "lib/llib/unittest.l")
2+
3+
(init-unit-test)
4+
5+
;; check because ldmodule have #if ARM for objname, handle
6+
(deftest test-load
7+
(let ((libpath (format nil "~A/~A/lib/libeusgeo.so" *eusdir*
8+
(cond ((member :solaris2 *features*) "SunOS5")
9+
((member :irix *features*) "IRIX")
10+
((member :irix6 *features*) "IRIX6")
11+
((member :darwin *features*) "Darwin")
12+
((member :sh4 *features*) "LinuxSH4")
13+
((member :linux *features*)
14+
(cond
15+
((member :x86_64 *features*)
16+
"Linux64")
17+
((member :arm *features*)
18+
"LinuxARM")
19+
(t "Linux")))
20+
((member :SunOS4.1 *features*) "SunOS4")
21+
((member :Windows *features*) "Windows")
22+
((member :Windows95 *features*) "Win95")
23+
((member :WindowsNT *features*) "WinNT")
24+
((member :alpha *features*) "Alpha")
25+
((member :cygwin *features*) "Cygwin"))))
26+
libmod)
27+
(format *error-output* "loading ~A~%" libpath)
28+
(setq libmod (load libpath :entry nil))
29+
(format *error-output* "loaded ~A, object-file ~A~%" libmod (load-module-object-file libmod))
30+
(assert (equal (pathname (load-module-object-file libmod)) (pathname libpath)) (format nil "object-file path ~A ~A" (load-module-object-file libmod) libpath))
31+
))
32+
33+
;; cehck because closure have #if ARM for euv0, euv1, euv2
34+
(eval-when (load eval)
35+
(run-all-tests)
36+
(exit))

0 commit comments

Comments
 (0)