[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: crash when calling __builtin_return_address
From: |
Ulrich Lauther |
Subject: |
Re: crash when calling __builtin_return_address |
Date: |
Thu, 15 Jun 2006 05:37:03 +0000 (UTC) |
Paul Pluzhnikov <ppluzhnikov-nsp@charter.net> wrote:
: > I need it to store the program counter at the time
: > when a piece of memory is allocated for reporting later on memory leaks and
: > their origin in my memory manager.
: If it's your own memory manager, just pass the info (e.g. file,
: line) into the allocation routine(s).
that simple solution doesn't help: it would indicate the source line in my
memory manager (always the same), but what I need is that of the *call* to
the allocation routine.
: Alternatively, compile with '-O2 -fno-omit-frame-pointer'
I'll try that. Hopefully it can be done just for the part of the program
involved.
: > Is there another reliable way to access the program counter?
: Yes: don't use __builtin_..._address() with parameter other than 0,
: and use unwind descriptors to find callers. This latter part will
: likely require a couple thousand lines of code (to decode dwarf3
: info). Look in binutils-1.16.x/binutils/readelf.c
: display_debug_frames() to get an idea of what's involved.
If one would write a procedure in assembler, would that have easy access to
the PC?
--
-lauther
[nosave]
----------------------------------------------------------------------------
Ulrich Lauther ph: +49 89 636 48834 fx: ... 636 42284
Siemens CT SE 6 Internet: Ulrich.Lauther@siemens.com