blob: 8b2e0262b00103abfc201899a2a642964ce4b87a [file] [log] [blame]
hp.com!davidma7aaf012004-01-20 01:51:17 +00001- Update the libunwind man page for the new/fixed cache-flushing behavior.
2 Effectively, that unw_flush_cache() doesn't have to be called by
3 applications except for extraordinary circumstances (e.g., if application
4 implements its own runtime loader).
5- document split local-only/generic libraries and separate libunwind-ptrace.a
6 convenience-library
hp.com!davidm70be1292003-12-20 11:50:00 +00007- document new "tdep" member in unw_proc_info_t structure
8- for DWARF 2, use a dummy CIE entry with an augmentation that
9 provides the dyn-info-list-address
10
mostang.com!davidm1cabc102003-04-21 18:38:48 +000011=== taken care of:
12
mostang.com!davidm81570a92004-03-20 09:54:28 +000013Testing:
14 + ensure that saving r4-r7 in a stacked register properly preserves
15 the NaT bit, even in the face of register-rotation
16 + ensure that IA64_INSN_MOVE_STACKED works correctly in the face of
17 register rotation
18 + on Linux, test access to f32-f127 in a signal handler (e.g., verify
19 that fph partition gets initialized properly)
homeip.net!davidmbc22c6e2004-08-17 15:34:28 +000020+ According to Nicholas S. Wourms <nwourms@netscape.net>, adding this to the
21 Makefile.am:
22 AUTOMAKE_OPTIONS = 1.6 subdir-objects
23 ensures that object-files are build in separate subdirectories and that
24 in turn makes it possible for source files in different directories to
25 have the same filename, thus avoiding the need for those ugly -x86, -ia64,
26 etc., postfixes.
hp.com!davidmfcd8dad2004-01-30 00:01:24 +000027+ Switch ia64 (and rest over) to using Debug() instead of debug()
28+ implement non-local versions of dwarf_readXX()
29+ consolidate mostly architecture-independent code such as
30 unw_get_accessors() into shared files
hp.com!davidma7aaf012004-01-20 01:51:17 +000031+ caching is pretty fundamentally broken, what should happen is this:
32 o On unw_init_local()/unw_init_remote(), libunwind should validate
33 that the cached information is still valid and, if not, flush the
34 cache on its own. Rationale: once unw_init_local() has been
35 called, it is clear that the unwind info for the calling thread
36 cannot change (otherwise the program would be buggy anyhow) and
37 hence it is sufficient to validate the cache at this point.
38 Similarly, once unw_init_remote() has been called, the target
39 address space must have been stopped, because the unwinding would
40 otherwise be unreliable anyhow.
41 o glibc currently lacks a feature for dl_iterate_phdr() to support
42 safe caching; I proposed on 12/16/2003 that glibc maintain two
43 atomic counters which get inremented whenever something is added
44 to/removed from the dl_iterate_phdr-list. Once we have such counters,
45 we can use them in libunwind to implement an efficient version of a
46 cache-validation routine.
47 Once this has been fixed, update the libunwind man page accordingly.
48 Effectively, what this means is that unw_flush_cache() doesn't have
49 to be called by applications except for extraordinary circumstances
50 (e.g., if application implements its own runtime loader).
mostang.com!davidm9240efe2003-12-10 07:14:38 +000051+ man-page for unw_is_fpreg()
52+ man-page for _U_dyn_cancel()
53+ man-page for _U_dyn_register()
hp.com!davidm2f5a4b52003-11-19 03:11:25 +000054+ global data is not protected by a lock; causes problems if two threads
55 call ia64_init() at almost the same time
mostang.com!davidm1cabc102003-04-21 18:38:48 +000056+ cache the value of *cfm_loc; each rotate_FOO() call needs it!
57+ implement the remote-lookup of the dynamic registration list
58+ when doing sigreturn, must restore fp regs (and perhaps other regs) the same
59 way as the (user-level) gate.S sigreturn path does!
60+ unw_resume() must at least restore gp (r1)! consider restoring all
61 scratch regs (but what's the performance impact on exception handling?);
62 alternative: restore scratch regs that may be used during procedure
63 call/return (e.g., r8-r11, f8-f11)
64+ implement unw_resume() for the case where the current register frame is split
65 across multiple backing stores
66+ document restricions on using unw_resume():
67+ implement remote cases of unw_resume()
68+ test both with UNW_LOCAL_ONLY and without where this makes sense
69+ allow region-length (insn_count) in unw_dyn_region_info_t to be negative
70 to indicate counting from the end of the procedure (to make it possible
71 for differently-sized procedures to share the same region list if they
72 share the same prologue/epilogue).
73+ it appears that it is currently not possible to read register UNW_IA64_TP;
74 fix that => no, attempts to access r13 will result in access_reg() callbacks,
75 as desired; for local-case, access to r13 will fail though (since
76 getcontext() doesn't, and shouldn't, capture r13)
77+ document the special nature of UNW_IA64_GP: read-only, but adjusted
78 automatically if the IP is changed
79+ use pthread-mutexes where necessary, atomic ops where possible
80+ man-page for unw_init_local()
81+ man-page for unw_init_remote()
82+ man-page for unw_create_addr_space()
83+ man-page for unw_destroy_addr_space()
84+ man-page for unw_get_proc_info()
85+ man-page for unw_get_proc_name()
86+ man-page for unw_get_accessors()
87+ man-page for unw_regname()
88+ man-page for unw_flush_cache()
89+ man-page for unw_set_caching_policy()
90+ man-page for unw_getcontext()
91+ man-page for unw_is_signal_frame()
92+ man-page for unw_step()
93+ man-page for unw_get_reg()
94+ man-page for unw_set_reg()
95+ man-page for unw_get_fpreg()
96+ man-page for unw_set_fpreg()
mostang.com!davidm98251972003-04-23 19:22:42 +000097+ test with Intel compiler