Hi folks.  Sorry for the long silence.  I have been working on the utrace
rebase/new upstream integration, but as usual other work got in the way.
This week I took a break from the slow and steady hacking towards clean
integration, to hack and slash a rebase that works again.

I have stopped maintaining the old GIT repository, though it did get a few
fixes just before I switched development over to the rebase.
http://people.redhat.com/roland/utrace/2.6.24/ has what was in 2.6-current/
until recently.  That matches the old GIT repository, which is still
accessible as before.

The new code is relative to upstream shortly after v2.6.25-rc6,
precisely GIT commit 264e3e889d86e552b4191d69bb60f4f3b383135a.
(Maybe rebased again by the time you read this.)

For the moment, I have not set up a pretty patch series like before.
There is the unceremonious one big patch at:

  http://people.redhat.com/roland/utrace/2.6-current/linux-2.6-utrace.patch

The way to track my hacking up to the minute is to use the new GIT repository.

  git remote add utrace 
git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-utrace.git
  git remote update 

Browse at:

  http://git.kernel.org/?p=linux/kernel/git/frob/linux-2.6-utrace.git;a=summary

I have not really figured out yet how I will organize the GIT branches or
patch series.  I am still often updating the new repository with "git rebase"
rather than "git pull".  So if you fork your own GIT branches off my branches,
you won't be able to use git merging to track (but you can use git rebase).
If this is a royal pain for you, let me know.

>From that repository you will now have the following branches.  I am
maintaining these as patch sets prepared for submission rather than as
normal GIT branches.  So the each commit in a branch will be a polished
patch to submit upstream, rather than incremental fixes for the branch.

* utrace/cleanup

  These are patches I've already posted upstream, or will very soon.
  I expect them to be noncontroversial, but they are probably too late
  for 2.6.25 already.  These are all harmless and safe cleanups and
  fixes that should not break or perturb the vanilla kernel at all.
  They are prerequisites for utrace, but not specific to utrace.

* utrace/tracehook

  These are patches in roughly the form I expect to submit upstream.
  They do not have proper log entries yet.  I will probably change
  their contents around some more.  This series won't be submitted
  until all the later series to complete the integration are ready.
  But, these are "clean" patches that are ready for review feedback
  from anyone who wants to look.  

  These patches leave the old ptrace working as it is, and should be a
  compiled away no-op change to the vanilla kernel.  They do not do
  very much of what was in the old 2.6.24/utrace-tracehook.patch.
  
* utrace/utrace-tracehook

  These are unfinished pieces somewhere in between the old code and
  being ready for the "clean" utrace/tracehook branch.  I still need to
  work out the clean integration for these tracehook entry points.
  These ones fill out what utrace needs to work as it did before.

* utrace/die-ptrace-die

  This branch is just one patch, actually.  It's a quick and dirty job
  of ripping out the old ptrace code.  This does much of what was in
  the old 2.6.24/utrace-tracehook.patch, like removing task_struct.parent.
  I punted the renaming of real_parent to parent.  This leaves a kernel
  that should work fine but has a ptrace syscall that always gets ENOSYS.

* utrace/utrace-core

  This too is just one patch.  It's the same as the old utrace-core.patch,
  the heart of the utrace code.  Nothing really changed.  With this, you
  can use utrace modules (I tested crash-suspend.c).

* utrace/utrace-ptrace

  The utrace/master branch is another name for this.  If you got the
  repository with git clone, you should be tracking this branch.

  This adds ptrace-on-utrace, much the same as the old
  2.6.24/utrace-ptrace-compat.patch did.  
  Not much has changed here either.


The current status is that things seem to work on x86 (no regressions
in the gdb test suite).  I have only just started testing powerpc and
it looks a little broken, probably ironed out soon.  I expect to put
the new code into the Fedora 9 development kernel this week.


If you were used to the old patch series/GIT branches, here are the
things will notice:

Firstly, there is no utrace-regset.patch any more.  The upstream
user_regset (linux/regset.h) code takes its place.  There is now
(almost) no arch code in the tracehook or utrace-ptrace branches either.
The upstream arch_has_single_step et al and various ptrace cleanups
cover the rest of the machine-dependencies.  As of 2.6.25-rcN the arch
support is now an upstream responsibility.  There are some necessary
arch patches in the utrace/cleanup branch, but hopefully those will go
in soon.  I think the only machines with necessary support included in
2.6.25-rc6 are x86, powerpc, and sparc64.  If you need pointers on
getting an arch in shape, please ask here.

The utrace interface is unchanged except that struct user_regset
replaces struct utrace_regset.  The regset accessor functions don't take
the engine as an argument any more, but are otherwise the same.

The task_struct.real_parent field is back.  I decided not to bother with
renaming it to parent, since it's just unnecessary churn in the patches
for a divergence from upstream that's purely cosmetic.  Change your
utrace module code to use ->real_parent instead of ->parent.


I will be working on more cleanup in the coming days.  Before it's all
ready for submission, I think there may be substantial changes.  I'll
write more here as it develops.


Thanks,
Roland

Reply via email to