Changes for k*bsd-gnu support.
authorRobert Millan <robertmh@gnu.org>
Fri, 26 Nov 2004 21:37:24 +0000 (21:37 +0000)
committerGerald Pfeifer <gerald@gcc.gnu.org>
Fri, 26 Nov 2004 21:37:24 +0000 (21:37 +0000)
* 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.

From-SVN: r91350

gcc/ChangeLog
gcc/config.gcc
gcc/config/i386/linux-unwind.h
gcc/config/i386/linux.h

index c3d7358c4fa3043dc3077c51624777a8b9dcc78d..8faf51729e0dbe6086167d17684cf8abc5e84fa9 100644 (file)
@@ -1,3 +1,12 @@
+2004-11-26  Robert Millan  <robertmh@gnu.org>
+
+       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  <law@redhat.com>
 
        * tree-ssa.c (verify_flow_sensitive_alias_info): Don't
index 1a972a743e7fd96aa76ff68b05deed1d0c0560df..e7feac92aa9f35ce73c87b182876e907ae05fe74 100644 (file)
@@ -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*)
index ecbce1d337c68050d1f61c253aad78aa638ccb9c..c746f4fcd6b94743e2dcf05148ca8f06f864ca3c 100644 (file)
@@ -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;
 }
index 22210d0598605d420a84e50ff7d37afb670dc201..b8dee2cb246fe71a48530ac04cd798c37863b0db 100644 (file)
@@ -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