]> git.karo-electronics.de Git - karo-tx-redboot.git/blob - packages/services/loader/v2_0/tests/loadfoo.cxx
Initial revision
[karo-tx-redboot.git] / packages / services / loader / v2_0 / tests / loadfoo.cxx
1 //==========================================================================
2 //
3 //        loadfoo.cxx
4 //
5 //        Dynamic library test program
6 //
7 //==========================================================================
8 //####ECOSGPLCOPYRIGHTBEGIN####
9 // -------------------------------------------
10 // This file is part of eCos, the Embedded Configurable Operating System.
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12 //
13 // eCos is free software; you can redistribute it and/or modify it under
14 // the terms of the GNU General Public License as published by the Free
15 // Software Foundation; either version 2 or (at your option) any later version.
16 //
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
20 // for more details.
21 //
22 // You should have received a copy of the GNU General Public License along
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
25 //
26 // As a special exception, if other files instantiate templates or use macros
27 // or inline functions from this file, or you compile this file and link it
28 // with other works to produce a work based on this file, this file does not
29 // by itself cause the resulting work to be covered by the GNU General Public
30 // License. However the source code for this file must still be made available
31 // in accordance with section (3) of the GNU General Public License.
32 //
33 // This exception does not invalidate any other reasons why a work based on
34 // this file might be covered by the GNU General Public License.
35 //
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
37 // at http://sources.redhat.com/ecos/ecos-license/
38 // -------------------------------------------
39 //####ECOSGPLCOPYRIGHTEND####
40 //==========================================================================
41 //#####DESCRIPTIONBEGIN####
42 //
43 // Author(s):     nickg
44 // Contributors:  nickg
45 // Date:          2000-11-20
46 // Description:   Dynamic library test
47 //
48 //####DESCRIPTIONEND####
49 //==========================================================================
50
51 #include <pkgconf/kernel.h>
52 #include <pkgconf/hal.h>
53
54 #include <cyg/infra/testcase.h>
55
56 //#include <cyg/loader/loader.hxx>
57
58 #include <dlfcn.h>
59
60 //==========================================================================
61 // Include a version of the library ELF file converted to a C table
62
63 #include "tests/libfoo.so.c"
64
65 //==========================================================================
66
67 externC void cyg_dl_force(void);
68
69 typedef void vfn();
70
71 int fee_data = 0;
72
73 //int main( int argc, char **argv )
74 externC void cyg_start()
75 {
76     CYG_TEST_INIT();
77
78     CYG_TEST_INFO( "LoadFoo: started" );
79 #if 0    
80     Cyg_LoaderStream_Mem memstream(libfoo, sizeof( libfoo ) );
81
82     Cyg_LoadObject *obj;
83
84 //    cyg_dl_force();
85     
86     Cyg_Loader::loader->load( memstream, 0, &obj );
87
88     vfn *foo = (vfn *)obj->symbol( "foo" );
89
90 #else
91
92     void *fooh = dlopenmem( libfoo, sizeof(libfoo), RTLD_NOW );
93
94     vfn *foo = (vfn *)dlsym( fooh, "foo" );
95     
96 #endif
97
98     
99     if( foo )
100     {
101         CYG_TEST_INFO( "LoadFoo: foo() call" );    
102         foo();
103         CYG_TEST_INFO( "LoadFoo: foo() returned" );            
104     }
105     else
106     {
107         CYG_TEST_FAIL_FINISH( "LoadFoo: foo() NULL!!!" );    
108     }
109
110     CYG_TEST_PASS_FINISH("LoadFoo: OK");
111     
112 }
113
114 //==========================================================================
115
116 externC void fee(int x)
117 {
118     CYG_TEST_INFO( "LoadFoo: fee() called" );    
119     fee_data = x;
120     CYG_TEST_INFO( "LoadFoo: fee() returning" );    
121 }
122
123 //==========================================================================
124 // EOF loadfoo.cxx