All pastes #272382 Raw Edit

Something

public text v1 · immutable
·published 2006-12-08 22:55 UTC
rendered paste body
#if 1
extern "C" {
   typedef unsigned int uint32;
   static int
   ForkExec(const char * filePath,
                     char ** argv,
                     char ** envp,
                     int stdinFd,
                     int stdoutFd,
                     int stderrFd,
                     int * pid)
   {
      uint32 rc = 0;
      uint32 linuxrc = 0;
      const struct {
         int arg__stderrFd;
         int * arg__pid;
      } kernel__onStackArgs = {
         stderrFd,
         pid,
      };
      __asm__ volatile (
         "push %%ebp\n"        \
         "movl %%eax, %%ebp\n" \
         "movl %2, %%eax\n"    \
         "int $0x90\n"         \
         "pop %%ebp\n"
         : /*output:*/
         "=a" (rc),
         "=b" (linuxrc)
         : /*input:*/
         "i" (1)
         ,"b" (filePath)
         ,"c" (argv)
         ,"d" (envp)
         ,"S" ((uint32)stdinFd)
         ,"D" ((uint32)stdoutFd)
         ,"0" (&kernel__onStackArgs)
      );
      if (linuxrc != 0) {
         errno = -linuxrc;
      }
      return rc;
   }
}
#endif


error:
/home/total/staf/stafif/unix/STAFProcess.cpp: In function `
   int ForkExec(const char*, char**, char**, int, int, int, int*)':
/home/total/staf/stafif/unix/STAFProcess.cpp:185: error: can't
   find a register in class `BREG' while reloading `asm'