Re: Accessing program counter registers from within C or Assembler.

From: A M
Date: Thu Nov 18 2004 - 11:45:11 EST


Thank you for your reply, please see my answers
embedded below:
--- Valdis.Kletnieks@xxxxxx wrote:

> On Tue, 16 Nov 2004 13:20:15 PST, A M said:
>
> > Does anybody know how to access the address of the
> > current executing instruction in C while the
> program
> > is executing?
>
> For what processor? x86, itanium, sparc, s390 all
> do it differently.
I am targeting an x86 machines.
>
> Also, the answer to "this *very* instruction" is
> different from
> "where this instruction was when we
> trapped/kdbg/interrupt/whatever
> it so we could look at the current
> process/thread/worker state".
>
> In other words, are you trying to answer "Where in
> memory am *I*?"
> or "Where in memory is <that very recent code I want
> to look at>?"
it is close to the second scenario ("Where in memory
is...") the basic idea is to come up with a
passive-software based data bus analyzer that can be
used to monitor/sample instructions of a process (a
section of a process) or a thread while executing.
>
> (Hint - for the former, you can probably get very
> good approximations
> by just looking at the entry point address for the
> function:
>
> (void *) where = &__FUNCTION__;
>
> > Also, is there a method to load a program image
> from
> > memory not a file (an exec that works with a
> memory
> > address)? Mainly I am looking for a method that
> brings
> > a program image into memory modify parts of it and
> > start the in-memory modified version.
>
> In user space, you probably want either mmap() or
> dlopen(), depending what it
> is you're trying to do, most likely...
>
> In kernel space, you'll have to be more specific as
> to what you're
> trying to do, but you're always welcome to write a
> replacement for
> fs/binfmt_elf.c :)
>
> > Can anybody think of a method to replace a thread
> > image without replacing the whole process image?
>
> What are you trying to achieve here? It's unclear
> what you're
> hoping will happen....
The ability to create threads and replace the
functionality of one of the threads with a previously
compiled program (a complete process).
>

> ATTACHMENT part 2 application/pgp-signature





__________________________________
Do you Yahoo!?
The all-new My Yahoo! - Get yours free!
http://my.yahoo.com


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/