From 28a6c5e3b437502774522604fca99c227e00c723 Mon Sep 17 00:00:00 2001 From: gerald Date: Fri, 26 Nov 2004 21:37:24 +0000 Subject: [PATCH] Changes for k*bsd-gnu support. * config/i386/linux.h: Define REG_NAME to allow overriding of register names in sc structure. * config/i386/linux-unwind.h: Refer to sc->REG_NAME(reg) instead of sc->reg. * config.gcc: Detect x86_64-k*bsd-gnu systems. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91350 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 9 +++++++++ gcc/config.gcc | 6 +++++- gcc/config/i386/linux-unwind.h | 18 +++++++++--------- gcc/config/i386/linux.h | 3 +++ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c3d7358c4fa..8faf51729e0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2004-11-26 Robert Millan + + Changes for k*bsd-gnu support. + * config/i386/linux.h: Define REG_NAME to allow overriding of + register names in sc structure. + * config/i386/linux-unwind.h: Refer to sc->REG_NAME(reg) instead + of sc->reg. + * config.gcc: Detect x86_64-k*bsd-gnu systems. + 2004-11-26 Jeff Law * tree-ssa.c (verify_flow_sensitive_alias_info): Don't diff --git a/gcc/config.gcc b/gcc/config.gcc index 1a972a743e7..e7feac92aa9 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -951,9 +951,13 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu) esac tmake_file="${tmake_file} i386/t-crtstuff" ;; -x86_64-*-linux*) +x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \ i386/x86-64.h i386/linux64.h" + case ${target} in + x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; + x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; + esac tmake_file="${tmake_file} i386/t-linux64" ;; i[34567]86-*-gnu*) diff --git a/gcc/config/i386/linux-unwind.h b/gcc/config/i386/linux-unwind.h index ecbce1d337c..c746f4fcd6b 100644 --- a/gcc/config/i386/linux-unwind.h +++ b/gcc/config/i386/linux-unwind.h @@ -135,28 +135,28 @@ x86_fallback_frame_state (struct _Unwind_Context *context, else return _URC_END_OF_STACK; - new_cfa = sc->esp; + new_cfa = sc->REG_NAME(esp); fs->cfa_how = CFA_REG_OFFSET; fs->cfa_reg = 4; fs->cfa_offset = new_cfa - (long) context->cfa; /* The SVR4 register numbering macros aren't usable in libgcc. */ fs->regs.reg[0].how = REG_SAVED_OFFSET; - fs->regs.reg[0].loc.offset = (long)&sc->eax - new_cfa; + fs->regs.reg[0].loc.offset = (long)&sc->REG_NAME(eax) - new_cfa; fs->regs.reg[3].how = REG_SAVED_OFFSET; - fs->regs.reg[3].loc.offset = (long)&sc->ebx - new_cfa; + fs->regs.reg[3].loc.offset = (long)&sc->REG_NAME(ebx) - new_cfa; fs->regs.reg[1].how = REG_SAVED_OFFSET; - fs->regs.reg[1].loc.offset = (long)&sc->ecx - new_cfa; + fs->regs.reg[1].loc.offset = (long)&sc->REG_NAME(ecx) - new_cfa; fs->regs.reg[2].how = REG_SAVED_OFFSET; - fs->regs.reg[2].loc.offset = (long)&sc->edx - new_cfa; + fs->regs.reg[2].loc.offset = (long)&sc->REG_NAME(edx) - new_cfa; fs->regs.reg[6].how = REG_SAVED_OFFSET; - fs->regs.reg[6].loc.offset = (long)&sc->esi - new_cfa; + fs->regs.reg[6].loc.offset = (long)&sc->REG_NAME(esi) - new_cfa; fs->regs.reg[7].how = REG_SAVED_OFFSET; - fs->regs.reg[7].loc.offset = (long)&sc->edi - new_cfa; + fs->regs.reg[7].loc.offset = (long)&sc->REG_NAME(edi) - new_cfa; fs->regs.reg[5].how = REG_SAVED_OFFSET; - fs->regs.reg[5].loc.offset = (long)&sc->ebp - new_cfa; + fs->regs.reg[5].loc.offset = (long)&sc->REG_NAME(ebp) - new_cfa; fs->regs.reg[8].how = REG_SAVED_OFFSET; - fs->regs.reg[8].loc.offset = (long)&sc->eip - new_cfa; + fs->regs.reg[8].loc.offset = (long)&sc->REG_NAME(eip) - new_cfa; fs->retaddr_column = 8; return _URC_NO_REASON; } diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 22210d05986..b8dee2cb246 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -182,3 +182,6 @@ Boston, MA 02111-1307, USA. */ #define NEED_INDICATE_EXEC_STACK 1 #define MD_UNWIND_SUPPORT "config/i386/linux-unwind.h" + +/* This macro may be overriden in i386/k*bsd-gnu.h */ +#define REG_NAME(reg) reg -- 2.11.4.GIT