diff --git a/src/mred/gc2/Makefile.in b/src/mred/gc2/Makefile.in index fa1ef5b076..617557830a 100644 --- a/src/mred/gc2/Makefile.in +++ b/src/mred/gc2/Makefile.in @@ -1348,7 +1348,7 @@ FOREIGN_USED_OBJSLIB = $(FOREIGN_OBJSLIB) FOREIGN_NOT_USED_LIB = FOREIGN_NOT_USED_OBJSLIB = -EXTRA_MZ_OBJS = ../../mzscheme/src/gmp.@LTO@ $(@FOREIGN_IF_USED@_OBJSLIB) +EXTRA_MZ_OBJS = ../../mzscheme/src/gmp.@LTO@ ../../mzscheme/src/unwind.@LTO@ $(@FOREIGN_IF_USED@_OBJSLIB) LIBMREDLIBS_a = LIBMREDLIBS_la = $(LDFLAGS) $(LDLIBS) $(@WXVARIANT@_LIBS) diff --git a/src/mzscheme/gc2/Makefile.in b/src/mzscheme/gc2/Makefile.in index 96d4ad9aac..dc7854ce39 100644 --- a/src/mzscheme/gc2/Makefile.in +++ b/src/mzscheme/gc2/Makefile.in @@ -351,8 +351,8 @@ FOREIGN_USED_OBJSLIB = $(FOREIGN_OBJSLIB) FOREIGN_NOT_USED_LIB = FOREIGN_NOT_USED_OBJSLIB = -EXTRA_OBJS_T = ../src/gmp.@LTO@ $(@FOREIGN_IF_USED@_LIB) -EXTRA_OBJS_L = ../src/gmp.@LTO@ $(@FOREIGN_IF_USED@_OBJSLIB) +EXTRA_OBJS_T = ../src/gmp.@LTO@ ../src/unwind.@LTO@ $(@FOREIGN_IF_USED@_LIB) +EXTRA_OBJS_L = ../src/gmp.@LTO@ ../src/unwind.@LTO@ $(@FOREIGN_IF_USED@_OBJSLIB) ../libmzscheme3m.@LIBSFX@: $(OBJS) $(EXTRA_OBJS_T) jit.@LTO@ gc2.@LTO@ $(AR) $(ARFLAGS) ../libmzscheme3m.@LIBSFX@ $(OBJS) $(EXTRA_OBJS_L) jit.@LTO@ gc2.@LTO@ diff --git a/src/mzscheme/src/Makefile.in b/src/mzscheme/src/Makefile.in index 2bf1127832..536da8af2e 100644 --- a/src/mzscheme/src/Makefile.in +++ b/src/mzscheme/src/Makefile.in @@ -51,6 +51,7 @@ OBJS = salloc.@LTO@ \ syntax.@LTO@ \ thread.@LTO@ \ type.@LTO@ \ + unwind.@LTO@ \ vector.@LTO@ @EXTRA_GMP_OBJ@ SRCS = $(srcdir)/salloc.c \ @@ -92,6 +93,7 @@ SRCS = $(srcdir)/salloc.c \ $(srcdir)/syntax.c \ $(srcdir)/thread.c \ $(srcdir)/type.c \ + $(srcdir)/unwind/libunwind.c \ $(srcdir)/vector.c wrong: @@ -222,6 +224,8 @@ thread.@LTO@: $(srcdir)/thread.c $(CC) $(CFLAGS) -c $(srcdir)/thread.c -o thread.@LTO@ type.@LTO@: $(srcdir)/type.c $(CC) $(CFLAGS) -c $(srcdir)/type.c -o type.@LTO@ +unwind.@LTO@: $(srcdir)/unwind/libunwind.c $(srcdir)/unwind/libunwind.h $(srcdir)/unwind/libunwind_i.h + $(CC) $(CFLAGS) -c $(srcdir)/unwind/libunwind.c -o unwind.@LTO@ vector.@LTO@: $(srcdir)/vector.c $(CC) $(CFLAGS) -c $(srcdir)/vector.c -o vector.@LTO@ diff --git a/src/mzscheme/src/unwind/libunwind.c b/src/mzscheme/src/unwind/libunwind.c index d149a1ff39..2c9add6544 100644 --- a/src/mzscheme/src/unwind/libunwind.c +++ b/src/mzscheme/src/unwind/libunwind.c @@ -23,6 +23,10 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include "../../sconfig.h" + +#ifdef USE_DWARF_LIBUNWIND + #include #include "libunwind_i.h" @@ -2467,3 +2471,5 @@ unw_word_t unw_get_ip(unw_cursor_t *c) { return tdep_get_ip(((struct cursor *)c)); } + +#endif diff --git a/src/mzscheme/src/unwind/libunwind_i.h b/src/mzscheme/src/unwind/libunwind_i.h index 58e4aaa47f..d7d98ac651 100644 --- a/src/mzscheme/src/unwind/libunwind_i.h +++ b/src/mzscheme/src/unwind/libunwind_i.h @@ -87,6 +87,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ # define unlikely(x) (x) #endif +#undef HIDDEN +#define HIDDEN static + #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) /* Make it easy to write thread-safe code which may or may not be @@ -618,37 +621,37 @@ struct dwarf_rs_cache #define dwarf_read_encoded_pointer UNW_OBJ (dwarf_read_encoded_pointer) #define dwarf_step UNW_OBJ (dwarf_step) -extern int dwarf_init (void); -extern int dwarf_find_proc_info (unw_addr_space_t as, unw_word_t ip, +HIDDEN int dwarf_init (void); +HIDDEN int dwarf_find_proc_info (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi, int need_unwind_info, void *arg); -extern int dwarf_search_unwind_table (unw_addr_space_t as, +HIDDEN int dwarf_search_unwind_table (unw_addr_space_t as, unw_word_t ip, unw_dyn_info_t *di, unw_proc_info_t *pi, int need_unwind_info, void *arg); -extern void dwarf_put_unwind_info (unw_addr_space_t as, +HIDDEN void dwarf_put_unwind_info (unw_addr_space_t as, unw_proc_info_t *pi, void *arg); -extern int dwarf_eval_expr (struct dwarf_cursor *c, unw_word_t *addr, +HIDDEN int dwarf_eval_expr (struct dwarf_cursor *c, unw_word_t *addr, unw_word_t len, unw_word_t *valp, int *is_register); -extern int dwarf_extract_proc_info_from_fde (unw_addr_space_t as, +HIDDEN int dwarf_extract_proc_info_from_fde (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *fde_addr, unw_proc_info_t *pi, int need_unwind_info, void *arg); -extern int dwarf_find_save_locs (struct dwarf_cursor *c); -extern int dwarf_create_state_record (struct dwarf_cursor *c, +HIDDEN int dwarf_find_save_locs (struct dwarf_cursor *c); +HIDDEN int dwarf_create_state_record (struct dwarf_cursor *c, dwarf_state_record_t *sr); -extern int dwarf_make_proc_info (struct dwarf_cursor *c); -extern int dwarf_read_encoded_pointer (unw_addr_space_t as, +HIDDEN int dwarf_make_proc_info (struct dwarf_cursor *c); +HIDDEN int dwarf_read_encoded_pointer (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, unsigned char encoding, const unw_proc_info_t *pi, unw_word_t *valp, void *arg); -extern int dwarf_step (struct dwarf_cursor *c); +HIDDEN int dwarf_step (struct dwarf_cursor *c); /*XXXXXXXXXXXXXXXXXXXXXXXXX End dwarf.h XXXXXXXXXXXXXXXXXXXXXXXXXX*/ @@ -768,7 +771,7 @@ extern int tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, #define dwarf_to_unw_regnum_map UNW_OBJ (dwarf_to_unw_regnum_map) -int dwarf_to_unw_regnum(int reg); +HIDDEN int dwarf_to_unw_regnum(int reg); /* In the local-only case, we can let the compiler directly access memory and don't need to worry about differing byte-order. */