libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libunwind-devel] [PATCH] Add gen-offsets to the Makefile


From: Arun Sharma
Subject: [Libunwind-devel] [PATCH] Add gen-offsets to the Makefile
Date: Mon, 9 Apr 2007 22:45:05 -0700
User-agent: Mutt/1.5.11

Add gen-offsets to the Makefile

This is so that the source file gets distributed and _ucontext_i.h is 
generated properly on the target machine.

Signed-off-by: Arun Sharma <address@hidden>

--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -269,6 +269,11 @@ endif
                                  $(libunwind_setjmp_la_SOURCES_x86)
 else
 if ARCH_X86_64
+ x86_64_gen_offsets_SOURCES = x86_64/gen-offsets.c
+ noinst_PROGRAMS = x86_64/gen-offsets
+ BUILT_SOURCES = _ucontext_i.h
+_ucontext_i.h: x86_64/gen-offsets
+       x86_64/gen-offsets > $@
  lib_LTLIBRARIES_arch = libunwind-x86_64.la
  libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86_64)
  libunwind_x86_64_la_SOURCES = $(libunwind_x86_64_la_SOURCES_x86_64)
diff --git a/src/x86_64/gen-offsets.c b/src/x86_64/gen-offsets.c
index 343716d..72383b6 100644
--- a/src/x86_64/gen-offsets.c
+++ b/src/x86_64/gen-offsets.c
@@ -4,23 +4,6 @@
 
 #define REG_OFFSET(reg) (offsetof(struct ucontext, 
uc_mcontext.gregs[REG_##reg]))
 
-# define REG_R8                0
-# define REG_R9                1
-# define REG_R10       2
-# define REG_R11       3
-# define REG_R12       4
-# define REG_R13       5
-# define REG_R14       6
-# define REG_R15       7
-# define REG_RDI       8
-# define REG_RSI       9
-# define REG_RBP       10
-# define REG_RBX       11
-# define REG_RDX       12
-# define REG_RAX       13
-# define REG_RCX       14
-# define REG_RSP       15
-# define REG_RIP       16
 
 char *regs[] = { "RAX",
        "RBX",
@@ -43,31 +26,34 @@ char *regs[] = { "RAX",
 
 main()
 {
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[0], REG_OFFSET(RAX));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[1], REG_OFFSET(RBX));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[2], REG_OFFSET(RCX));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[3], REG_OFFSET(RDX));
-
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[4], REG_OFFSET(RDI));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[5], REG_OFFSET(RSI));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[6], REG_OFFSET(RSP));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[7], REG_OFFSET(RBP));
-
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[8], REG_OFFSET(R8));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[9], REG_OFFSET(R9));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[10], REG_OFFSET(R10));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[11], REG_OFFSET(R11));
-
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[12], REG_OFFSET(R12));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[13], REG_OFFSET(R13));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[14], REG_OFFSET(R14));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[15], REG_OFFSET(R15));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[15], REG_OFFSET(R15));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[15], REG_OFFSET(R15));
-       printf("#define REG_OFFSET_%s\t%d\n" , regs[16], REG_OFFSET(RIP));
-
-       printf("#define REG_OFFSET_FPREGS_PTR\t%d\n" , offsetof(struct 
ucontext, uc_mcontext.fpregs));
-       printf("#define FPREG_OFFSET_MXCR\t%d\n" , offsetof(struct 
_libc_fpstate, mxcsr));
+       printf("#ifndef UCONTEXT_I_H\n#define UCONTEXT_I_H\n");
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[0], REG_OFFSET(RAX));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[1], REG_OFFSET(RBX));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[2], REG_OFFSET(RCX));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[3], REG_OFFSET(RDX));
+
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[4], REG_OFFSET(RDI));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[5], REG_OFFSET(RSI));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[6], REG_OFFSET(RSP));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[7], REG_OFFSET(RBP));
+
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[8], REG_OFFSET(R8));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[9], REG_OFFSET(R9));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[10], REG_OFFSET(R10));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[11], REG_OFFSET(R11));
+
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[12], REG_OFFSET(R12));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[13], REG_OFFSET(R13));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[14], REG_OFFSET(R14));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[15], REG_OFFSET(R15));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[15], REG_OFFSET(R15));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[15], REG_OFFSET(R15));
+       printf("#define REG_OFFSET_%s\t%ld\n" , regs[16], REG_OFFSET(RIP));
+
+       printf("#define REG_OFFSET_FPREGS_PTR\t%ld\n" , offsetof(struct 
ucontext, uc_mcontext.fpregs));
+       printf("#define FPREG_OFFSET_MXCR\t%ld\n" , offsetof(struct 
_libc_fpstate, mxcsr));
+       printf("#endif /* UCONTEXT_I_H */\n");
+       return 0;
 }
 
 
diff --git a/src/x86_64/setcontext.S b/src/x86_64/setcontext.S
index d1578e1..f5fd552 100644
--- a/src/x86_64/setcontext.S
+++ b/src/x86_64/setcontext.S
@@ -23,27 +23,7 @@ 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.  */
 
-#define REG_OFFSET_RAX  144
-#define REG_OFFSET_RBX  128
-#define REG_OFFSET_RCX  152
-#define REG_OFFSET_RDX  136
-#define REG_OFFSET_RDI  104
-#define REG_OFFSET_RSI  112
-#define REG_OFFSET_RSP  160
-#define REG_OFFSET_RBP  120
-#define REG_OFFSET_R8   40
-#define REG_OFFSET_R9   48
-#define REG_OFFSET_R10  56
-#define REG_OFFSET_R11  64
-#define REG_OFFSET_R12  72
-#define REG_OFFSET_R13  80
-#define REG_OFFSET_R14  88
-#define REG_OFFSET_R15  96
-#define REG_OFFSET_R15  96
-#define REG_OFFSET_R15  96
-#define REG_OFFSET_RIP  168
-#define REG_OFFSET_FPREGS_PTR   224
-#define FPREG_OFFSET_MXCR       24
+#include "_ucontext_i.h"
 
        .global _x86_64_setcontext
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]