annotate packages/services/loader/current/tests/loadfoo.cxx @ 184:022f1e506033

Merge from eCos master repository on 2001-10-02-17:59:22-BST
author jlarmour
date Tue, 02 Oct 2001 18:28:24 +0000
parents
children e0c0827131d1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
1 //==========================================================================
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
2 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
3 // loadfoo.cxx
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
4 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
5 // Dynamic library test program
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
6 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
7 //==========================================================================
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
9 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
10 // -------------------------------------------
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
14 // http://www.redhat.com/
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
15 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
18 // License for the specific language governing rights and limitations under
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
19 // the License.
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
20 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
21 // The Original Code is eCos - Embedded Configurable Operating System,
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
22 // released September 30, 1998.
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
23 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
24 // The Initial Developer of the Original Code is Red Hat.
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
25 // Portions created by Red Hat are
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
27 // All Rights Reserved.
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
28 // -------------------------------------------
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
29 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
31 //==========================================================================
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
33 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
34 // Author(s): nickg
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
35 // Contributors: nickg
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
36 // Date: 2000-11-20
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
37 // Description: Dynamic library test
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
38 //
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
39 //####DESCRIPTIONEND####
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
40 //==========================================================================
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
41
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
42 #include <pkgconf/kernel.h>
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
43 #include <pkgconf/hal.h>
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
44
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
45 #include <cyg/infra/testcase.h>
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
46
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
47 //#include <cyg/loader/loader.hxx>
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
48
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
49 #include <dlfcn.h>
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
50
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
51 //==========================================================================
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
52 // Include a version of the library ELF file converted to a C table
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
53
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
54 #include "tests/libfoo.so.c"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
55
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
56 //==========================================================================
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
57
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
58 externC void cyg_dl_force(void);
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
59
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
60 typedef void vfn();
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
61
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
62 int fee_data = 0;
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
63
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
64 //int main( int argc, char **argv )
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
65 externC void cyg_start()
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
66 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
67 CYG_TEST_INIT();
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
68
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
69 CYG_TEST_INFO( "LoadFoo: started" );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
70 #if 0
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
71 Cyg_LoaderStream_Mem memstream(libfoo, sizeof( libfoo ) );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
72
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
73 Cyg_LoadObject *obj;
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
74
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
75 // cyg_dl_force();
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
76
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
77 Cyg_Loader::loader->load( memstream, 0, &obj );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
78
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
79 vfn *foo = (vfn *)obj->symbol( "foo" );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
80
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
81 #else
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
82
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
83 void *fooh = dlopenmem( libfoo, sizeof(libfoo), RTLD_NOW );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
84
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
85 vfn *foo = (vfn *)dlsym( fooh, "foo" );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
86
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
87 #endif
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
88
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
89
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
90 if( foo )
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
91 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
92 CYG_TEST_INFO( "LoadFoo: foo() call" );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
93 foo();
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
94 CYG_TEST_INFO( "LoadFoo: foo() returned" );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
95 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
96 else
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
97 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
98 CYG_TEST_FAIL_FINISH( "LoadFoo: foo() NULL!!!" );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
99 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
100
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
101 CYG_TEST_PASS_FINISH("LoadFoo: OK");
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
102
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
103 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
104
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
105 //==========================================================================
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
106
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
107 externC void fee(int x)
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
108 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
109 CYG_TEST_INFO( "LoadFoo: fee() called" );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
110 fee_data = x;
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
111 CYG_TEST_INFO( "LoadFoo: fee() returning" );
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
112 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
113
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
114 //==========================================================================
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
diff changeset
115 // EOF loadfoo.cxx