* Re: Patch for linuxthreads_db/td_thr_getgregs.c
@ 2000-01-11 19:42 Ulrich Drepper
2000-01-12 4:40 ` Andreas Schwab
0 siblings, 1 reply; 7+ messages in thread
From: Ulrich Drepper @ 2000-01-11 19:42 UTC (permalink / raw)
To: libc-hacker
Andreas Jaeger <aj@suse.de> writes:
> Uli, if those function declarations are indeed correct (which I
> doubt), you need to change td_thr_getgregs.c accordingly (memset
> (&greg,...)).
Well, the form I have in the moment is acutally what Solaris has. It
was strange when I saw it but I haven't really spend time looking at
it. But you are right, it cannot be correct.
--
---------------. drepper at gnu.org ,-. 1325 Chesapeake Terrace
Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA
Cygnus Solutions `--' drepper at cygnus.com `------------------------
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Patch for linuxthreads_db/td_thr_getgregs.c 2000-01-11 19:42 Patch for linuxthreads_db/td_thr_getgregs.c Ulrich Drepper @ 2000-01-12 4:40 ` Andreas Schwab 2000-01-12 23:50 ` Andreas Jaeger ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Andreas Schwab @ 2000-01-12 4:40 UTC (permalink / raw) To: Ulrich Drepper; +Cc: libc-hacker [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain, Size: 938 bytes --] Ulrich Drepper <drepper@cygnus.com> writes: |> Andreas Jaeger <aj@suse.de> writes: |> |> > Uli, if those function declarations are indeed correct (which I |> > doubt), you need to change td_thr_getgregs.c accordingly (memset |> > (&greg,...)). |> |> Well, the form I have in the moment is acutally what Solaris has. It |> was strange when I saw it but I haven't really spend time looking at |> it. But you are right, it cannot be correct. The problem is that gregset_t is sometimes an array (i386), sometimes a struct (mips). The array decays to a pointer, so you won't see the different types, but the sizeof in td_thr_getregs will return the wrong value (size of a pointer instead of the whole array). Andreas. -- Andreas Schwab "And now for something SuSE Labs completely different." schwab@suse.de SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Patch for linuxthreads_db/td_thr_getgregs.c 2000-01-12 4:40 ` Andreas Schwab @ 2000-01-12 23:50 ` Andreas Jaeger [not found] ` <m3g0w2n3pw.fsf@localhost.localnet> 2000-01-25 14:28 ` Ralf Baechle 2 siblings, 0 replies; 7+ messages in thread From: Andreas Jaeger @ 2000-01-12 23:50 UTC (permalink / raw) To: libc-hacker >>>>> Andreas Schwab writes: > Ulrich Drepper <drepper@cygnus.com> writes: > |> Andreas Jaeger <aj@suse.de> writes: > |> > |> > Uli, if those function declarations are indeed correct (which I > |> > doubt), you need to change td_thr_getgregs.c accordingly (memset > |> > (&greg,...)). > |> > |> Well, the form I have in the moment is acutally what Solaris has. It > |> was strange when I saw it but I haven't really spend time looking at > |> it. But you are right, it cannot be correct. > The problem is that gregset_t is sometimes an array (i386), sometimes a > struct (mips). The array decays to a pointer, so you won't see the > different types, but the sizeof in td_thr_getregs will return the wrong > value (size of a pointer instead of the whole array). Uli, you reverted my patch - without fixing the problem. Why? Could you tell me how to fix the problem? The interface itself seems to be broken - at least if gregset_t is a struct! Here's the compiler error again I get on MIPS: td_thr_getgregs.c: In function `td_thr_getgregs': td_thr_getgregs.c:38: incompatible types in initialization td_thr_getgregs.c:38: incompatible type for argument 1 of `memset' Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.rhein-neckar.de ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <m3g0w2n3pw.fsf@localhost.localnet>]
* Re: Patch for linuxthreads_db/td_thr_getgregs.c [not found] ` <m3g0w2n3pw.fsf@localhost.localnet> @ 2000-01-13 4:28 ` Andreas Schwab 0 siblings, 0 replies; 7+ messages in thread From: Andreas Schwab @ 2000-01-13 4:28 UTC (permalink / raw) To: Ulrich Drepper; +Cc: libc-hacker [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain, Size: 760 bytes --] Ulrich Drepper <drepper@cygnus.com> writes: |> Andreas Schwab <schwab@suse.de> writes: |> |> > The problem is that gregset_t is sometimes an array (i386), sometimes a |> > struct (mips). The array decays to a pointer, so you won't see the |> > different types, but the sizeof in td_thr_getregs will return the wrong |> > value (size of a pointer instead of the whole array). |> |> Then declare it as an array on MIPS as well. No! The interface must change, otherwise the memset will be wrong (and there is no way to fix that). Andreas. -- Andreas Schwab "And now for something SuSE Labs completely different." schwab@suse.de SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Patch for linuxthreads_db/td_thr_getgregs.c 2000-01-12 4:40 ` Andreas Schwab 2000-01-12 23:50 ` Andreas Jaeger [not found] ` <m3g0w2n3pw.fsf@localhost.localnet> @ 2000-01-25 14:28 ` Ralf Baechle 2 siblings, 0 replies; 7+ messages in thread From: Ralf Baechle @ 2000-01-25 14:28 UTC (permalink / raw) To: Andreas Schwab; +Cc: Ulrich Drepper, libc-hacker On Wed, Jan 12, 2000 at 01:40:38PM +0100, Andreas Schwab wrote: > |> > Uli, if those function declarations are indeed correct (which I > |> > doubt), you need to change td_thr_getgregs.c accordingly (memset > |> > (&greg,...)). > |> > |> Well, the form I have in the moment is acutally what Solaris has. It > |> was strange when I saw it but I haven't really spend time looking at > |> it. But you are right, it cannot be correct. > > The problem is that gregset_t is sometimes an array (i386), sometimes a > struct (mips). The array decays to a pointer, so you won't see the > different types, but the sizeof in td_thr_getregs will return the wrong > value (size of a pointer instead of the whole array). I've taken care that on gpregset_t can also be accessed using one of the indices defined in <asm/reg.h>. So if it makes things easier it's ok to define a userland gpregset_t that is an array. Ralf ^ permalink raw reply [flat|nested] 7+ messages in thread
* Patch for linuxthreads_db/td_thr_getgregs.c @ 2000-01-11 11:28 Andreas Jaeger 2000-01-11 12:07 ` Andreas Jaeger 0 siblings, 1 reply; 7+ messages in thread From: Andreas Jaeger @ 2000-01-11 11:28 UTC (permalink / raw) To: GNU libc hacker I received the following error message while compiling glibc 2.2 for Linux/MIPS: td_thr_getgregs.c: In function `td_thr_getgregs': td_thr_getgregs.c:38: incompatible types in initialization td_thr_getgregs.c:38: incompatible type for argument 1 of `memset' The function declaration is wrong. A patch is appended. The patch is against glibc 2.2 but also needed for glibc 2.1.3. Andreas 2000-01-11 Andreas Jaeger <aj@suse.de> * thread_db.h: Fix second argument of td_thr_getgregs. * td_thr_getgregs.c (td_thr_getgregs): Likewise. ============================================================ Index: linuxthreads_db/td_thr_getgregs.c --- linuxthreads_db/td_thr_getgregs.c 1999/11/02 23:40:25 1.2 +++ linuxthreads_db/td_thr_getgregs.c 2000/01/11 19:17:31 @@ -1,5 +1,5 @@ /* Get a thread's general register set. - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999. @@ -22,7 +22,7 @@ td_err_e -td_thr_getgregs (const td_thrhandle_t *th, prgregset_t gregs) +td_thr_getgregs (const td_thrhandle_t *th, prgregset_t *gregs) { struct _pthread_descr_struct pds; ============================================================ Index: linuxthreads_db/thread_db.h --- linuxthreads_db/thread_db.h 1999/11/03 05:33:23 1.6 +++ linuxthreads_db/thread_db.h 2000/01/11 19:17:32 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -372,7 +372,7 @@ /* Retrieve general register contents of process running thread TH. */ extern td_err_e td_thr_getgregs (const td_thrhandle_t *__th, - prgregset_t __gregs); + prgregset_t *__gregs); /* Retrieve extended register contents of process running thread TH. */ extern td_err_e td_thr_getxregs (const td_thrhandle_t *__th, void *__xregs); -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.rhein-neckar.de ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Patch for linuxthreads_db/td_thr_getgregs.c 2000-01-11 11:28 Andreas Jaeger @ 2000-01-11 12:07 ` Andreas Jaeger 0 siblings, 0 replies; 7+ messages in thread From: Andreas Jaeger @ 2000-01-11 12:07 UTC (permalink / raw) To: GNU libc hacker The patch wasn't complete - here's a complete one which also work ;-). Uli, if those function declarations are indeed correct (which I doubt), you need to change td_thr_getgregs.c accordingly (memset (&greg,...)). Andreas 2000-01-11 Andreas Jaeger <aj@suse.de> * proc_service.h: Correct last arguments of ps_lsetregs and ps_lgetregs. * thread_db.h: Fix second argument of td_thr_getgregs and td_thrsetregs. * td_thr_getgregs.c (td_thr_getgregs): Likewise. * td_thr_setgregs.c (td_thr_getgregs): Likewise. ============================================================ Index: linuxthreads_db/td_thr_getgregs.c --- linuxthreads_db/td_thr_getgregs.c 1999/11/02 23:40:25 1.2 +++ linuxthreads_db/td_thr_getgregs.c 2000/01/11 20:03:05 @@ -1,5 +1,5 @@ /* Get a thread's general register set. - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999. @@ -22,7 +22,7 @@ td_err_e -td_thr_getgregs (const td_thrhandle_t *th, prgregset_t gregs) +td_thr_getgregs (const td_thrhandle_t *th, prgregset_t *gregs) { struct _pthread_descr_struct pds; ============================================================ Index: linuxthreads_db/thread_db.h --- linuxthreads_db/thread_db.h 1999/11/03 05:33:23 1.6 +++ linuxthreads_db/thread_db.h 2000/01/11 20:03:06 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -372,7 +372,7 @@ /* Retrieve general register contents of process running thread TH. */ extern td_err_e td_thr_getgregs (const td_thrhandle_t *__th, - prgregset_t __gregs); + prgregset_t *__gregs); /* Retrieve extended register contents of process running thread TH. */ extern td_err_e td_thr_getxregs (const td_thrhandle_t *__th, void *__xregs); @@ -386,7 +386,7 @@ /* Set general register contents of process running thread TH. */ extern td_err_e td_thr_setgregs (const td_thrhandle_t *__th, - prgregset_t __gregs); + const prgregset_t *__gregs); /* Set extended register contents of process running thread TH. */ extern td_err_e td_thr_setxregs (const td_thrhandle_t *__th, ============================================================ Index: linuxthreads_db/proc_service.h --- linuxthreads_db/proc_service.h 1999/12/02 08:07:10 1.6 +++ linuxthreads_db/proc_service.h 2000/01/11 20:03:06 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -52,9 +52,9 @@ extern ps_err_e ps_lgetregs(struct ps_prochandle *, - lwpid_t, prgregset_t); + lwpid_t, prgregset_t *); extern ps_err_e ps_lsetregs(struct ps_prochandle *, - lwpid_t, const prgregset_t); + lwpid_t, const prgregset_t *); extern ps_err_e ps_lgetfpregs(struct ps_prochandle *, lwpid_t, prfpregset_t *); extern ps_err_e ps_lsetfpregs(struct ps_prochandle *, ============================================================ Index: linuxthreads_db/td_thr_setgregs.c --- linuxthreads_db/td_thr_setgregs.c 1999/11/02 23:40:25 1.2 +++ linuxthreads_db/td_thr_setgregs.c 2000/01/11 20:03:06 @@ -1,5 +1,5 @@ /* Set a thread's general register set. - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999. @@ -22,7 +22,7 @@ td_err_e -td_thr_setgregs (const td_thrhandle_t *th, prgregset_t gregs) +td_thr_setgregs (const td_thrhandle_t *th, const prgregset_t *gregs) { struct _pthread_descr_struct pds; -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.rhein-neckar.de ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2000-01-25 14:28 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2000-01-11 19:42 Patch for linuxthreads_db/td_thr_getgregs.c Ulrich Drepper 2000-01-12 4:40 ` Andreas Schwab 2000-01-12 23:50 ` Andreas Jaeger [not found] ` <m3g0w2n3pw.fsf@localhost.localnet> 2000-01-13 4:28 ` Andreas Schwab 2000-01-25 14:28 ` Ralf Baechle -- strict thread matches above, loose matches on Subject: below -- 2000-01-11 11:28 Andreas Jaeger 2000-01-11 12:07 ` Andreas Jaeger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).