summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coro.c7
-rw-r--r--coro.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/coro.c b/coro.c
index 79e2ddc..3c157c8 100644
--- a/coro.c
+++ b/coro.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001-2009 Marc Alexander Lehmann <schmorp@schmorp.de>
+ * Copyright (c) 2001-2011 Marc Alexander Lehmann <schmorp@schmorp.de>
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
@@ -88,6 +88,11 @@ coro_init (void)
coro_transfer (new_coro, create_coro);
+#ifdef __linux && __elf
+ /* we blindly assume on any __linux with __elf we have a new enough gas with .cfi_undefined support */
+ asm (".cfi_undefined rip");
+#endif
+
func ((void *)arg);
/* the new coro returned. bad. just abort() for now */
diff --git a/coro.h b/coro.h
index a4c8b0b..2f80ee6 100644
--- a/coro.h
+++ b/coro.h
@@ -71,6 +71,7 @@
* 2009-06-23 tentative win32-backend support for mingw32 (Yasuhiro Matsumoto).
* 2010-12-03 tentative support for uclibc (which lacks all sorts of things).
* 2011-05-30 set initial callee-saved-registers to zero with CORO_ASM.
+ * use .cfi_undefined rip on linux-elf for better backtraces.
*/
#ifndef CORO_H