On Fri, Dec 11, 2009 at 6:22 AM, Garrett Cooper <[email protected]> wrote:
> On Dec 10, 2009, at 5:56 PM, Caspar Zhang wrote:
>
>>
>> ----- "Subrata Modak" <[email protected]> wrote:
>>
>>> Hi Caspar,
>>>
>>> I just have 1 question below:
>>>
>>> On Wed, 2009-12-09 at 21:12 -0500, Caspar Zhang wrote:
>>>> Hi all,
>>>>
>>>> When I compile ltp-full-20091130 on ppc64 machine which system is
>>>> RHEL5(kernel 2.6.18), I met compile error as follows:
>>>>
>>>> [...]
>>>> ptrace04.c: In function ‘compare_registers’:
>>>> ptrace04.c:59: error: ‘PTRACE_GETREGS’ undeclared (first use in
>>> this
>>>> function)
>>>> ptrace04.c:59: error: (Each undeclared identifier is reported only
>>>> once
>>>> ptrace04.c:59: error: for each function it appears in.)
>>>> make[5]: *** [ptrace04] Error 1
>>>> [...]
>>>>
>>>> It seems like there's no PTRACE_GETREGS in
>>> /usr/include/asm/ptrace.h
>>>> in old kernels, so I copy the definitions from new version of the
>>>> head file and my ltp on ppc64, RHEL5 works.
>>>
>>> Are these nos. similar across all archs ? If they are specific only
>>> to
>>> PPC, you can then add the following 2 more lines to your patch:
>>>
>>>>
>>>> Thanks,
>>>> Caspar
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> differences
>>>> between files
>>>> attachment
>>>> (rhel5-ppc-PTRACE_GETREGS-compile-err.patch)
>>>>
>>>> diff --git a/testcases/kernel/syscalls/ptrace/ptrace.h
>>>> b/testcases/kernel/syscalls/ptrace/ptrace.h
>>>> index a0d2708..e3fcbb2 100644
>>>> --- a/testcases/kernel/syscalls/ptrace/ptrace.h
>>>> +++ b/testcases/kernel/syscalls/ptrace/ptrace.h
>>>> @@ -37,4 +37,27 @@ typedef struct user_regs_struct ptrace_regs;
>>>> #undef HAVE_STRUCT_PTRACE_REGS
>>>> #endif
>>>>
>>>> +/* old kernel doesn't have PTRACE_GETREGS on ppc64 */
>>>> +/* (new) PTRACE requests using the same numbers as x86 and the
>>> same
>>>> + * argument ordering. Additionally, they support more registers
>>> too
>>>> + */
>>>
>>> #if defined(powerpc) || defined(__powerpc__) || defined(__ppc__) ||
>>> defined (__PPC__)
>>
>> Ah, yes. That sounds reasonable, thant you!
>
> For whatever reason someone decided to be special on ppc64.. not sure why
> (maybe because ppc and ppc64 diverged in older kernels and converged in later
> ones?):
>
> [r...@localhost /]# egrep 'PTRACE_[GS]ETREGS'
> /scratch/fc4/kernel/include/asm-ppc64/ptrace.h
> #define PPC_PTRACE_GETREGS 0x99 /* Get GPRs 0 - 31 */
> #define PPC_PTRACE_SETREGS 0x98 /* Set GPRs 0 - 31 */
>
> [r...@localhost /]# egrep 'PTRACE_[GS]ETREGS'
> /scratch/fc7/kernel/include/asm-powerpc/ptrace.h
> #define PPC_PTRACE_GETREGS 0x99 /* Get GPRs 0 - 31 */
> #define PPC_PTRACE_SETREGS 0x98 /* Set GPRs 0 - 31 */
>
> A similar issue may exist for sparc64, but I doubt it:
>
> [r...@localhost /]# egrep 'PTRACE_[GS]ETREGS'
> /scratch/fc4/kernel/include/asm-sparc*/ptrace.h
> /scratch/fc4/kernel/include/asm-sparc64/ptrace.h:#define PTRACE_GETREGS
> 12
> /scratch/fc4/kernel/include/asm-sparc64/ptrace.h:#define PTRACE_SETREGS
> 13
> /scratch/fc4/kernel/include/asm-sparc64/ptrace.h:#define PTRACE_GETREGS64
> 22
> /scratch/fc4/kernel/include/asm-sparc64/ptrace.h:#define PTRACE_SETREGS64
> 23
> /scratch/fc4/kernel/include/asm-sparc/ptrace.h:#define PTRACE_GETREGS
> 12
> /scratch/fc4/kernel/include/asm-sparc/ptrace.h:#define PTRACE_SETREGS
> 13
>
> What kernel version are you using again?
If the new version from CVS doesn't compile, your build tree or
compile options are most likely not properly setup:
[garrc...@sjc-lds-265 /nobackup/garrcoop/main]$ file
contrib/ltp/obj-ppc64/testcases/kernel/syscalls/ptrace/ptrace0*
contrib/ltp/obj-ppc64/testcases/kernel/syscalls/ptrace/ptrace01: ELF
64-bit MSB executable, cisco 7500, version 1 (SYSV), for GNU/Linux
2.6.4, dynamically linked (uses shared libs), not stripped
contrib/ltp/obj-ppc64/testcases/kernel/syscalls/ptrace/ptrace02: ELF
64-bit MSB executable, cisco 7500, version 1 (SYSV), for GNU/Linux
2.6.4, dynamically linked (uses shared libs), not stripped
contrib/ltp/obj-ppc64/testcases/kernel/syscalls/ptrace/ptrace03: ELF
64-bit MSB executable, cisco 7500, version 1 (SYSV), for GNU/Linux
2.6.4, dynamically linked (uses shared libs), not stripped
contrib/ltp/obj-ppc64/testcases/kernel/syscalls/ptrace/ptrace04: ELF
64-bit MSB executable, cisco 7500, version 1 (SYSV), for GNU/Linux
2.6.4, dynamically linked (uses shared libs), not stripped
contrib/ltp/obj-ppc64/testcases/kernel/syscalls/ptrace/ptrace05: ELF
64-bit MSB executable, cisco 7500, version 1 (SYSV), for GNU/Linux
2.6.4, dynamically linked (uses shared libs), not stripped
This is glibc 2.3.4 with kernel version 2.6.24. This was done with
a cross-compile toolchain from work.
Thanks,
-Garrett
------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list