Re: MacOS X question

From: Ian Edwards (ian_at_concerto.demon.co.uk)
Date: Mon Jul 28 2003 - 15:44:30 BST

  • Next message: Stu Lewin: "Support for PPC w/ Yellow Dog Linux"
    On 21-Jul-03 Gaurav Khanna wrote:
    > 
    > Thanks for the tip .. I just tried it .. but now I'm getting stuck even 
    > earlier .. ??
    > 
    > mreg.h:128: field `regs' has incomplete type
    > mreg.h:129: field `fpregs' has incomplete type
    > mreg.h:132: field `dbregs' has incomplete type
    > make[1]: *** [exec.o] Error 1
    > make: *** [ups] Error 2
    > 
    
    Look at the manual page for ptrace(2).  Check it can get the CPU registers,
    usually with a PT_GETREGS request.  If so what follows applies.
    
    Check you have /usr/include/machine/reg.h and HAVE_MACHINE_REG_H is 1 in
    ifdefs.h.  <reg.h> should have 'struct reg {}' and 'struct fpreg {}'
    defined in it.
    
    In ups/mreg.h you will need something like :
    
    #ifdef ARCH_PPC
    #define N_UAREA_GREGS   0       /* number of general registers */
    #define UR_SP           0       /* stack pointer register */
    #define UR_FP           0       /* frame pointer register */
    #define UR_PC           0       /* program counter register */
    #define N_UREGS         0       /* number of registers in u-area */
    #endif
    
    These values should not be being used but are probably required for things
    to compile.  Look in /usr/include/machine/reg.h to find how many registers
    there are.  Use that number for N_UAREA_GREGS and N_UREGS.
    
    In ups/ao_pt_regs.c before #elif (defined ARCH_FREEBSD386) add
    
    #elif (defined ARCH_PPC)
    #define PC_REG(pr)              ((pr)->regs.eip)
    #define SP_REG(pr)              ((pr)->regs.esp)
    #define FRAME_REG(pr)           ((pr)->regs.ebp)
    #define INTEGER_REG(pr, regno)  ((&(pr)->regs.es)[x86_gcc_register(regno)])
    
    Replace eip/esp/ebp/es with appropriate register names from 
    /usr/include/machine/reg.h : program counter, stack pointer, frame pointer,
    first register in 'struct regs {}'.  The call to x86_gcc_register() may
    not be required.
    
    Ian.
    
    
     -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
     Ian Edwards <ian_at_concerto.demon.co.uk>       28-Jul-03  15:44:30
    
     Early Music Record Labels    - http://www.recordlabels.org/
     'ups' debugger for C/C++/f77 - http://ups.sourceforge.net/
     -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    


    This archive was generated by hypermail 2.1.4 : Sat Aug 02 2003 - 11:59:28 BST