author | sandman <sandman> | 2002-12-01 22:20:11 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-12-01 22:20:11 (UTC) |
commit | 5a550802680d32ccb0ea0d596f514de7e13c45dc (patch) (unidiff) | |
tree | ec5d1d11630ea94cde1547c8525b522d743e871d /core/launcher/libpreload/preload.cpp | |
parent | 90e100450625fc121523e67413b2da7f57f6d650 (diff) | |
download | opie-5a550802680d32ccb0ea0d596f514de7e13c45dc.zip opie-5a550802680d32ccb0ea0d596f514de7e13c45dc.tar.gz opie-5a550802680d32ccb0ea0d596f514de7e13c45dc.tar.bz2 |
Added a fix for programs that have been compiled with old toolchains and
are used together with shared libs produced by newer toolchains .. they
might not have the __gmon_start__ symbol defined (e.g. neocal or hancom on
a glibc 2.3.1 iPAQ with the latest libjpeg62)
Diffstat (limited to 'core/launcher/libpreload/preload.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/launcher/libpreload/preload.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/core/launcher/libpreload/preload.cpp b/core/launcher/libpreload/preload.cpp index 10d8313..cc1baac 100644 --- a/core/launcher/libpreload/preload.cpp +++ b/core/launcher/libpreload/preload.cpp | |||
@@ -20,24 +20,30 @@ class QFont; | |||
20 | #include <stdlib.h> | 20 | #include <stdlib.h> |
21 | 21 | ||
22 | 22 | ||
23 | typedef void ( *qapp_setstyle_t ) ( QStyle * ); | 23 | typedef void ( *qapp_setstyle_t ) ( QStyle * ); |
24 | typedef void ( *qapp_setdeco_t ) ( QWSDecoration * ); | 24 | typedef void ( *qapp_setdeco_t ) ( QWSDecoration * ); |
25 | typedef void ( *qapp_setfont_t ) ( const QFont &, bool, const char * ); | 25 | typedef void ( *qapp_setfont_t ) ( const QFont &, bool, const char * ); |
26 | 26 | ||
27 | 27 | ||
28 | static int *opie_block_style_p = 0; | 28 | static int *opie_block_style_p = 0; |
29 | 29 | ||
30 | extern "C" { | 30 | extern "C" { |
31 | 31 | ||
32 | extern void __gmon_start ( ) __attribute(( weak )); | ||
33 | |||
34 | extern void __gmon_start__ ( ) | ||
35 | { | ||
36 | } | ||
37 | |||
32 | static void *resolve_symbol ( const char *sym ) | 38 | static void *resolve_symbol ( const char *sym ) |
33 | { | 39 | { |
34 | void *adr = ::dlsym ( RTLD_NEXT, sym ); | 40 | void *adr = ::dlsym ( RTLD_NEXT, sym ); |
35 | 41 | ||
36 | if ( !adr ) | 42 | if ( !adr ) |
37 | ::fprintf ( stderr, "PANIC: Could not resolve symbol \"%s\"\n", sym ); | 43 | ::fprintf ( stderr, "PANIC: Could not resolve symbol \"%s\"\n", sym ); |
38 | 44 | ||
39 | return adr; | 45 | return adr; |
40 | } | 46 | } |
41 | 47 | ||
42 | extern void setStyle__12QApplicationP6QStyle ( QStyle *style ) | 48 | extern void setStyle__12QApplicationP6QStyle ( QStyle *style ) |
43 | { | 49 | { |