# ; -*- mode: sh ; -*- # Copyright (C) 2013-2024 Free Software Foundation, Inc. # # This file is part of GDB. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Variables defined here: # # NAT_FILE - The header file with definitions for this native target. # # NATDEPFILES - Source files required for native debugging on this # native target. # # NAT_CDEPS - Dynamic symbols to be exported for libthread_db. # # LOADLIBES - Libraries against which GDB will be linked for this # native target. # # MH_CFLAGS - Additional CFLAGS for this host. # # XM_CLIBS - Host-dependent libraries against which GDB will be linked # for this native target. # # HAVE_NATIVE_GCORE_HOST - Whether gcore should be installed on this # native target. # # nat_makefile_frag - Name of the (optional) Makefile fragment file # required to build the native target. The # fragment is incorporated into the Makefile that # configure constructs from Makefile.in. # # Notes: # # - To avoid shell expansion of variables, declare them with single # quotes. # # - nat_makefile_frag must contain the full path of the file. # This first case is useful for filling default values for each # gdb_host. case ${gdb_host} in *linux*) NAT_FILE='config/nm-linux.h' NATDEPFILES='inf-ptrace.o fork-child.o nat/fork-inferior.o \ proc-service.o \ linux-thread-db.o linux-nat.o nat/linux-osdata.o linux-fork.o \ nat/linux-procfs.o nat/linux-ptrace.o nat/linux-waitpid.o \ nat/linux-personality.o nat/linux-namespaces.o' NAT_CDEPS='$(srcdir)/proc-service.list' LOADLIBES='-ldl $(RDYNAMIC)' ;; fbsd*) NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o fbsd-nat.o' HAVE_NATIVE_GCORE_HOST=1 LOADLIBES='-lkvm' ;; nbsd*) NATDEPFILES='fork-child.o nat/fork-inferior.o nat/netbsd-nat.o inf-ptrace.o' HAVE_NATIVE_GCORE_HOST=1 ;; obsd*) NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o' ;; cygwin*) NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o' ;; mingw*) NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o' ;; aix) NATDEPFILES='nat/fork-inferior.o fork-child.o inf-ptrace.o' ;; darwin) NATDEPFILES='fork-child.o nat/fork-inferior.o darwin-nat.o \ darwin-nat-info.o' ;; sol2) NATDEPFILES='fork-child.o nat/fork-inferior.o \ procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o \ sol-thread.o' HAVE_NATIVE_GCORE_HOST=1 ;; esac # This is where we actually filter by host and host CPU. case ${gdb_host} in aix) case ${gdb_host_cpu} in powerpc) # Host: IBM PowerPC running AIX aix-thread.o is not # listed in NATDEPFILES as it is pulled in by # configure. NATDEPFILES="${NATDEPFILES} rs6000-aix-nat.o" # When compiled with cc, for debugging, this argument # should be passed. We have no idea who our current # compiler is though, so we skip it. # MH_CFLAGS='-bnodelcsect' ;; esac ;; alpha-linux) case ${gdb_host_cpu} in alpha) # Host: Little-endian Alpha running Linux NATDEPFILES="${NATDEPFILES} linux-nat-trad.o alpha-linux-nat.o" # doublest.c currently assumes some properties of FP arithmetic # on the host which require this. MH_CFLAGS='-mieee' ;; esac ;; cygwin) case ${gdb_host_cpu} in i386) # Native config information for GDB on i386 # systems running Cygwin. NATDEPFILES="${NATDEPFILES} i386-windows-nat.o" ;; esac ;; cygwin64) case ${gdb_host_cpu} in i386) # Native config information for GDB on amd64 # systems running Cygwin. NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o" ;; esac ;; darwin) case ${gdb_host_cpu} in i386) # Host: IA86 running Darwin NATDEPFILES="${NATDEPFILES} i386-darwin-nat.o x86-nat.o \ nat/x86-dregs.o amd64-nat.o" ;; esac ;; fbsd) case ${gdb_host_cpu} in aarch64) # Host: FreeBSD/aarch64 NATDEPFILES="${NATDEPFILES} aarch64-nat.o \ nat/aarch64-hw-point.o aarch64-fbsd-nat.o" LOADLIBES= ;; arm) # Host: FreeBSD/arm NATDEPFILES="${NATDEPFILES} arm-fbsd-nat.o" LOADLIBES= ;; i386) # Host: FreeBSD/i386 NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \ nat/x86-xstate.o x86-bsd-nat.o x86-fbsd-nat.o i386-fbsd-nat.o \ bsd-kvm.o" ;; mips) # Host: FreeBSD/mips NATDEPFILES="${NATDEPFILES} mips-fbsd-nat.o" LOADLIBES= ;; powerpc) # Native config information for GDB on PowerPC # systems running FreeBSD. NATDEPFILES="${NATDEPFILES} ppc-fbsd-nat.o bsd-kvm.o" ;; riscv*) # Host: FreeBSD/riscv NATDEPFILES="${NATDEPFILES} riscv-fbsd-nat.o" ;; sparc) # Host: FreeBSD/sparc64 NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \ sparc64-fbsd-nat.o bsd-kvm.o" ;; esac ;; fbsd64) case ${gdb_host_cpu} in i386) # Host: FreeBSD/amd64 NATDEPFILES="${NATDEPFILES} amd64-nat.o \ amd64-fbsd-nat.o bsd-kvm.o x86-nat.o nat/x86-dregs.o \ nat/x86-xstate.o x86-bsd-nat.o x86-fbsd-nat.o" ;; esac ;; go32) case ${gdb_host_cpu} in i386) # Host: Intel x86 running DJGPP # We include several header files from config/djgpp MH_CFLAGS='-I$(srcdir)/config/djgpp' NATDEPFILES='go32-nat.o x86-nat.o nat/x86-dregs.o' XM_CLIBS='-ldbg' ;; esac ;; i386gnu) case ${gdb_host_cpu} in i386) # Host: Intel 386 running the GNU Hurd NATDEPFILES='i386-gnu-nat.o gnu-nat.o \ x86-nat.o nat/x86-dregs.o fork-child.o \ nat/fork-inferior.o \ notify_S.o process_reply_S.o msg_reply_S.o \ msg_U.o exc_request_U.o exc_request_S.o' HAVE_NATIVE_GCORE_HOST=1 NAT_FILE='nm-i386gnu.h' MH_CFLAGS='-D_GNU_SOURCE' XM_CLIBS='-lshouldbeinlibc' nat_makefile_frag="${srcdir}/config/${gdb_host_cpu}/i386gnu.mn" ;; esac ;; linux) case ${gdb_host_cpu} in aarch64) # Host: AArch64 based machine running GNU/Linux NATDEPFILES="${NATDEPFILES} aarch64-nat.o aarch64-linux-nat.o \ aarch32-linux-nat.o nat/aarch64-hw-point.o \ nat/aarch64-linux-hw-point.o \ nat/aarch64-linux.o \ nat/aarch64-scalable-linux-ptrace.o \ nat/aarch64-mte-linux-ptrace.o" ;; arc) # Host: ARC based machine running GNU/Linux NATDEPFILES="${NATDEPFILES} arc-linux-nat.o" ;; arm) # Host: ARM based machine running GNU/Linux NATDEPFILES="${NATDEPFILES} arm-linux-nat.o \ aarch32-linux-nat.o" ;; i386) # Host: Intel 386 running GNU/Linux. NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \ nat/x86-xstate.o \ i386-linux-nat.o x86-linux-nat.o nat/linux-btrace.o \ nat/x86-linux.o nat/x86-linux-dregs.o nat/i386-linux.o \ nat/x86-linux-tdesc.o arch/i386-linux-tdesc.o \ arch/x86-linux-tdesc-features.o" ;; ia64) # Host: Intel IA-64 running GNU/Linux NATDEPFILES="${NATDEPFILES} ia64-linux-nat.o" ;; loongarch) # Host: LoongArch, running GNU/Linux. NATDEPFILES="${NATDEPFILES} loongarch-linux-nat.o linux-nat-trad.o \ nat/loongarch-hw-point.o nat/loongarch-linux.o \ nat/loongarch-linux-hw-point.o" ;; m32r) # Host: M32R based machine running GNU/Linux NATDEPFILES="${NATDEPFILES} m32r-linux-nat.o" ;; m68k) # Host: Motorola m68k running GNU/Linux. NATDEPFILES="${NATDEPFILES} m68k-linux-nat.o" ;; mips) # Host: Linux/MIPS NATDEPFILES="${NATDEPFILES} linux-nat-trad.o \ mips-linux-nat.o nat/mips-linux-watch.o" ;; or1k) # Host: Linux/OpenRISC NATDEPFILES="${NATDEPFILES} or1k-linux-nat.o" ;; pa) # Host: Hewlett-Packard PA-RISC machine, running Linux NATDEPFILES="${NATDEPFILES} hppa-linux-nat.o" ;; powerpc) # Host: PowerPC, running Linux NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o" ;; riscv*) # Host: RISC-V, running Linux NATDEPFILES="${NATDEPFILES} riscv-linux-nat.o \ nat/riscv-linux-tdesc.o" ;; s390) # Host: S390, running Linux NATDEPFILES="${NATDEPFILES} s390-linux-nat.o" ;; sparc) # Host: GNU/Linux SPARC NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-linux-nat.o" ;; tilegx) # Host: Tilera TILE-Gx running GNU/Linux. NATDEPFILES="${NATDEPFILES} tilegx-linux-nat.o" NAT_CDEPS= ;; xtensa) # Host: Xtensa, running GNU/Linux. NATDEPFILES="${NATDEPFILES} xtensa-linux-nat.o" ;; esac ;; linux64) case ${gdb_host_cpu} in i386) # Host: GNU/Linux x86-64 NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \ nat/x86-xstate.o amd64-nat.o amd64-linux-nat.o x86-linux-nat.o \ nat/linux-btrace.o \ nat/x86-linux.o nat/x86-linux-dregs.o nat/x86-linux-tdesc.o \ nat/amd64-linux-siginfo.o arch/x86-linux-tdesc-features.o \ arch/i386-linux-tdesc.o arch/amd64-linux-tdesc.o" ;; sparc) # Host: GNU/Linux UltraSPARC NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \ sparc64-linux-nat.o" ;; esac ;; mingw) case ${gdb_host_cpu} in i386) NATDEPFILES="${NATDEPFILES} i386-windows-nat.o" ;; esac ;; mingw64) case ${gdb_host_cpu} in i386) NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o" ;; esac ;; nbsd) case ${gdb_host_cpu} in alpha) # Host: NetBSD/alpha NATDEPFILES="${NATDEPFILES} alpha-bsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; mips) # Host: NetBSD/mips NATDEPFILES="${NATDEPFILES} mips-netbsd-nat.o" ;; pa) # Host: NetBSD/hppa NATDEPFILES="${NATDEPFILES} netbsd-nat.o hppa-netbsd-nat.o" ;; powerpc) # Host: NetBSD/powerpc NATDEPFILES="${NATDEPFILES} ppc-netbsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; sh) # Host: NetBSD/sh NATDEPFILES="${NATDEPFILES} sh-netbsd-nat.o" ;; esac ;; nbsd64) case ${gdb_host_cpu} in i386) # Host: NetBSD/amd64 NATDEPFILES="${NATDEPFILES} netbsd-nat.o amd64-nat.o x86-nat.o \ nat/x86-dregs.o x86-bsd-nat.o amd64-bsd-nat.o amd64-netbsd-nat.o" ;; sparc) # Host: NetBSD/sparc64 NATDEPFILES="${NATDEPFILES} sparc64-netbsd-nat.o sparc-nat.o \ bsd-kvm.o" LOADLIBES='-lkvm' ;; esac ;; nbsdelf) case ${gdb_host_cpu} in arm) # Host: NetBSD/arm NATDEPFILES="${NATDEPFILES} arm-netbsd-nat.o" ;; i386) # Host: NetBSD/i386 ELF NATDEPFILES="${NATDEPFILES} netbsd-nat.o x86-nat.o \ nat/x86-dregs.o \ x86-bsd-nat.o i386-bsd-nat.o i386-netbsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; m68k) # Host: NetBSD/m68k ELF NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; sparc) # Host: NetBSD/sparc ELF NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-netbsd-nat.o \ bsd-kvm.o" LOADLIBES='-lkvm' ;; vax) # Host: NetBSD/vax ELF NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; esac ;; obsd) case ${gdb_host_cpu} in i386) # Host: OpenBSD/i386 ELF NATDEPFILES="${NATDEPFILES} obsd-nat.o x86-bsd-nat.o \ i386-bsd-nat.o i386-obsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; m68k) # Host: OpenBSD/m68k NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; pa) # Host: OpenBSD/hppa NATDEPFILES="${NATDEPFILES} obsd-nat.o hppa-obsd-nat.o" ;; powerpc) # Host: OpenBSD/powerpc NATDEPFILES="${NATDEPFILES} obsd-nat.o ppc-obsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; vax) # Host: OpenBSD/vax NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; esac ;; obsd64) case ${gdb_host_cpu} in i386) # Host: OpenBSD/amd64 NATDEPFILES="${NATDEPFILES} obsd-nat.o amd64-nat.o \ x86-bsd-nat.o amd64-bsd-nat.o amd64-obsd-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; mips) # Host: OpenBSD/mips64 NATDEPFILES="${NATDEPFILES} obsd-nat.o mips64-obsd-nat.o" ;; sparc) # Host: OpenBSD/sparc64 NATDEPFILES="${NATDEPFILES} obsd-nat.o sparc64-obsd-nat.o \ sparc-nat.o bsd-kvm.o" LOADLIBES='-lkvm' ;; esac ;; ppc64-linux) case ${gdb_host_cpu} in powerpc) # Host: PowerPC64, running Linux XM_CLIBS= NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o" ;; esac ;; sol2) case ${gdb_host_cpu} in i386) # Host: Solaris x86_64 NATDEPFILES="${NATDEPFILES} \ amd64-nat.o i386-sol2-nat.o" ;; sparc) # Host: Solaris SPARC & UltraSPARC NAT_FILE='nm-sol2.h' NATDEPFILES="${NATDEPFILES} sparc-sol2-nat.o" ;; esac ;; esac