/* frame.c */ /* * Provides the missing symbols __(de)register_frame_info * which might be missing due to egcs binary/library incompatibilities * by defining _weak_ symbols with this name. * A warning is printed to the syslog, if these routines get called */ /* (w) by Kurt Garloff , 98/08 */ /* Copyright: GNU GPL */ #include #include #include #include #include char printbuf[64]; char* get_proc_name () { pid_t pid = getpid (); char nm[64]; int file; sprintf (nm, "/proc/%i/cmdline", pid); file = open (nm, O_RDONLY); memset (printbuf, 0, 64); read (file, printbuf, 64); return printbuf; } #pragma weak __register_frame_info void __register_frame_info () { register int adr; openlog (get_proc_name(), LOG_PID, LOG_LOCAL0); asm ("movl 4(%%ebp),%0 \n" : "=r" (adr) ); syslog (LOG_WARNING, "__register_frame_info called: %08x !\n", adr); } #pragma weak __deregister_frame_info void __deregister_frame_info () { register int adr; asm ("movl 4(%%ebp),%0 \n" : "=r" (adr) ); syslog (LOG_WARNING, "__deregister_frame_info called: %08x !\n", adr); closelog (); }