mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2025-02-16 18:21:41 +01:00
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 <arun.sharma@google.com>
This commit is contained in:
parent
31440e9796
commit
497b987043
3 changed files with 30 additions and 59 deletions
|
@ -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)
|
||||
|
|
|
@ -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("#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%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%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%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%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%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_%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%d\n" , offsetof(struct ucontext, uc_mcontext.fpregs));
|
||||
printf("#define FPREG_OFFSET_MXCR\t%d\n" , offsetof(struct _libc_fpstate, mxcsr));
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue