summaryrefslogtreecommitdiff
authorsandman <sandman>2002-12-01 22:20:11 (UTC)
committer sandman <sandman>2002-12-01 22:20:11 (UTC)
commit5a550802680d32ccb0ea0d596f514de7e13c45dc (patch) (side-by-side diff)
treeec5d1d11630ea94cde1547c8525b522d743e871d
parent90e100450625fc121523e67413b2da7f57f6d650 (diff)
downloadopie-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 (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/libpreload/preload.cpp6
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
@@ -16,32 +16,38 @@ class QFont;
#include <dlfcn.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
typedef void ( *qapp_setstyle_t ) ( QStyle * );
typedef void ( *qapp_setdeco_t ) ( QWSDecoration * );
typedef void ( *qapp_setfont_t ) ( const QFont &, bool, const char * );
static int *opie_block_style_p = 0;
extern "C" {
+extern void __gmon_start ( ) __attribute(( weak ));
+
+extern void __gmon_start__ ( )
+{
+}
+
static void *resolve_symbol ( const char *sym )
{
void *adr = ::dlsym ( RTLD_NEXT, sym );
if ( !adr )
::fprintf ( stderr, "PANIC: Could not resolve symbol \"%s\"\n", sym );
return adr;
}
extern void setStyle__12QApplicationP6QStyle ( QStyle *style )
{
static qapp_setstyle_t qsetstyle = 0;
if ( !qsetstyle )
qsetstyle = (qapp_setstyle_t) resolve_symbol ( "setStyle__12QApplicationP6QStyle" );