mirror of
https://github.com/corda/corda.git
synced 2025-06-17 06:38:21 +00:00
Initial release of Intel SGX for Linux.
This release is used in conjunction with the linux-sgx-driver Intial release: https://github.com/01org/linux-sgx-driver commit-id: 0e865ce5e6b297a787bcdc12d98bada8174be6d7 Intel-id: 33399 Signed-off-by: Angie Chinchilla <angie.v.chinchilla@intel.com>
This commit is contained in:
97
sdk/cpprt/linux/libunwind/TODO
Normal file
97
sdk/cpprt/linux/libunwind/TODO
Normal file
@ -0,0 +1,97 @@
|
||||
- Update the libunwind man page for the new/fixed cache-flushing behavior.
|
||||
Effectively, that unw_flush_cache() doesn't have to be called by
|
||||
applications except for extraordinary circumstances (e.g., if application
|
||||
implements its own runtime loader).
|
||||
- document split local-only/generic libraries and separate libunwind-ptrace.a
|
||||
convenience-library
|
||||
- document new "tdep" member in unw_proc_info_t structure
|
||||
- for DWARF 2, use a dummy CIE entry with an augmentation that
|
||||
provides the dyn-info-list-address
|
||||
|
||||
=== taken care of:
|
||||
|
||||
Testing:
|
||||
+ ensure that saving r4-r7 in a stacked register properly preserves
|
||||
the NaT bit, even in the face of register-rotation
|
||||
+ ensure that IA64_INSN_MOVE_STACKED works correctly in the face of
|
||||
register rotation
|
||||
+ on Linux, test access to f32-f127 in a signal handler (e.g., verify
|
||||
that fph partition gets initialized properly)
|
||||
+ According to Nicholas S. Wourms <nwourms@netscape.net>, adding this to the
|
||||
Makefile.am:
|
||||
AUTOMAKE_OPTIONS = 1.6 subdir-objects
|
||||
ensures that object-files are build in separate subdirectories and that
|
||||
in turn makes it possible for source files in different directories to
|
||||
have the same filename, thus avoiding the need for those ugly -x86, -ia64,
|
||||
etc., postfixes.
|
||||
+ Switch ia64 (and rest over) to using Debug() instead of debug()
|
||||
+ implement non-local versions of dwarf_readXX()
|
||||
+ consolidate mostly architecture-independent code such as
|
||||
unw_get_accessors() into shared files
|
||||
+ caching is pretty fundamentally broken, what should happen is this:
|
||||
o On unw_init_local()/unw_init_remote(), libunwind should validate
|
||||
that the cached information is still valid and, if not, flush the
|
||||
cache on its own. Rationale: once unw_init_local() has been
|
||||
called, it is clear that the unwind info for the calling thread
|
||||
cannot change (otherwise the program would be buggy anyhow) and
|
||||
hence it is sufficient to validate the cache at this point.
|
||||
Similarly, once unw_init_remote() has been called, the target
|
||||
address space must have been stopped, because the unwinding would
|
||||
otherwise be unreliable anyhow.
|
||||
o glibc currently lacks a feature for dl_iterate_phdr() to support
|
||||
safe caching; I proposed on 12/16/2003 that glibc maintain two
|
||||
atomic counters which get inremented whenever something is added
|
||||
to/removed from the dl_iterate_phdr-list. Once we have such counters,
|
||||
we can use them in libunwind to implement an efficient version of a
|
||||
cache-validation routine.
|
||||
Once this has been fixed, update the libunwind man page accordingly.
|
||||
Effectively, what this means is that unw_flush_cache() doesn't have
|
||||
to be called by applications except for extraordinary circumstances
|
||||
(e.g., if application implements its own runtime loader).
|
||||
+ man-page for unw_is_fpreg()
|
||||
+ man-page for _U_dyn_cancel()
|
||||
+ man-page for _U_dyn_register()
|
||||
+ global data is not protected by a lock; causes problems if two threads
|
||||
call ia64_init() at almost the same time
|
||||
+ cache the value of *cfm_loc; each rotate_FOO() call needs it!
|
||||
+ implement the remote-lookup of the dynamic registration list
|
||||
+ when doing sigreturn, must restore fp regs (and perhaps other regs) the same
|
||||
way as the (user-level) gate.S sigreturn path does!
|
||||
+ unw_resume() must at least restore gp (r1)! consider restoring all
|
||||
scratch regs (but what's the performance impact on exception handling?);
|
||||
alternative: restore scratch regs that may be used during procedure
|
||||
call/return (e.g., r8-r11, f8-f11)
|
||||
+ implement unw_resume() for the case where the current register frame is split
|
||||
across multiple backing stores
|
||||
+ document restricions on using unw_resume():
|
||||
+ implement remote cases of unw_resume()
|
||||
+ test both with UNW_LOCAL_ONLY and without where this makes sense
|
||||
+ allow region-length (insn_count) in unw_dyn_region_info_t to be negative
|
||||
to indicate counting from the end of the procedure (to make it possible
|
||||
for differently-sized procedures to share the same region list if they
|
||||
share the same prologue/epilogue).
|
||||
+ it appears that it is currently not possible to read register UNW_IA64_TP;
|
||||
fix that => no, attempts to access r13 will result in access_reg() callbacks,
|
||||
as desired; for local-case, access to r13 will fail though (since
|
||||
getcontext() doesn't, and shouldn't, capture r13)
|
||||
+ document the special nature of UNW_IA64_GP: read-only, but adjusted
|
||||
automatically if the IP is changed
|
||||
+ use pthread-mutexes where necessary, atomic ops where possible
|
||||
+ man-page for unw_init_local()
|
||||
+ man-page for unw_init_remote()
|
||||
+ man-page for unw_create_addr_space()
|
||||
+ man-page for unw_destroy_addr_space()
|
||||
+ man-page for unw_get_proc_info()
|
||||
+ man-page for unw_get_proc_name()
|
||||
+ man-page for unw_get_accessors()
|
||||
+ man-page for unw_regname()
|
||||
+ man-page for unw_flush_cache()
|
||||
+ man-page for unw_set_caching_policy()
|
||||
+ man-page for unw_getcontext()
|
||||
+ man-page for unw_is_signal_frame()
|
||||
+ man-page for unw_step()
|
||||
+ man-page for unw_get_reg()
|
||||
+ man-page for unw_set_reg()
|
||||
+ man-page for unw_get_fpreg()
|
||||
+ man-page for unw_set_fpreg()
|
||||
+ test with Intel compiler
|
Reference in New Issue
Block a user