Fix null pointer dereference in process_debug_info()
[binutils-gdb.git] / gdb / configure.nat
blob8b98511cef7c653cb3457755695a733d7db58e69
1 # ; -*- mode: sh ; -*-
2 # Copyright (C) 2013-2024 Free Software Foundation, Inc.
4 # This file is part of GDB.
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 # Variables defined here:
21 # NAT_FILE - The header file with definitions for this native target.
23 # NATDEPFILES - Source files required for native debugging on this
24 #               native target.
26 # NAT_CDEPS - Dynamic symbols to be exported for libthread_db.
28 # LOADLIBES - Libraries against which GDB will be linked for this
29 #             native target.
31 # MH_CFLAGS - Additional CFLAGS for this host.
33 # XM_CLIBS - Host-dependent libraries against which GDB will be linked
34 #            for this native target.
36 # HAVE_NATIVE_GCORE_HOST - Whether gcore should be installed on this
37 #                          native target.
39 # nat_makefile_frag - Name of the (optional) Makefile fragment file
40 #                     required to build the native target.  The
41 #                     fragment is incorporated into the Makefile that
42 #                     configure constructs from Makefile.in.
44 # Notes:
46 # - To avoid shell expansion of variables, declare them with single
47 #   quotes.
49 # - nat_makefile_frag must contain the full path of the file.
52 # This first case is useful for filling default values for each
53 # gdb_host.
54 case ${gdb_host} in
55     *linux*)
56         NAT_FILE='config/nm-linux.h'
57         NATDEPFILES='inf-ptrace.o fork-child.o nat/fork-inferior.o \
58                 proc-service.o \
59                 linux-thread-db.o linux-nat.o nat/linux-osdata.o linux-fork.o \
60                 nat/linux-procfs.o nat/linux-ptrace.o nat/linux-waitpid.o \
61                 nat/linux-personality.o nat/linux-namespaces.o'
62         NAT_CDEPS='$(srcdir)/proc-service.list'
63         LOADLIBES='-ldl $(RDYNAMIC)'
64         ;;
65     fbsd*)
66         NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o fbsd-nat.o'
67         HAVE_NATIVE_GCORE_HOST=1
68         LOADLIBES='-lkvm'
69         ;;
70     nbsd*)
71         NATDEPFILES='fork-child.o nat/fork-inferior.o nat/netbsd-nat.o inf-ptrace.o'
72         HAVE_NATIVE_GCORE_HOST=1
73         ;;
74     obsd*)
75         NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o'
76         ;;
77     cygwin*)
78         NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
79         ;;
80     mingw*)
81         NATDEPFILES='x86-nat.o nat/x86-dregs.o windows-nat.o nat/windows-nat.o'
82         ;;
83     aix)
84         NATDEPFILES='nat/fork-inferior.o fork-child.o inf-ptrace.o'
85         ;;
86     darwin)
87         NATDEPFILES='fork-child.o nat/fork-inferior.o darwin-nat.o \
88             darwin-nat-info.o'
89         ;;
90     sol2)
91         NATDEPFILES='fork-child.o nat/fork-inferior.o \
92             procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o \
93             sol-thread.o'
94         HAVE_NATIVE_GCORE_HOST=1
95         ;;
96 esac
98 # This is where we actually filter by host and host CPU.
99 case ${gdb_host} in
100     aix)
101         case ${gdb_host_cpu} in
102             powerpc)
103                 # Host: IBM PowerPC running AIX aix-thread.o is not
104                 # listed in NATDEPFILES as it is pulled in by
105                 # configure.
106                 NATDEPFILES="${NATDEPFILES} rs6000-aix-nat.o"
108                 # When compiled with cc, for debugging, this argument
109                 # should be passed.  We have no idea who our current
110                 # compiler is though, so we skip it.
111                 # MH_CFLAGS='-bnodelcsect'
112                 ;;
113         esac
114         ;;
115     alpha-linux)
116         case ${gdb_host_cpu} in
117             alpha)
118                 # Host: Little-endian Alpha running Linux
119                 NATDEPFILES="${NATDEPFILES} linux-nat-trad.o alpha-linux-nat.o"
120                 # doublest.c currently assumes some properties of FP arithmetic
121                 # on the host which require this.
122                 MH_CFLAGS='-mieee'
123                 ;;
124         esac
125         ;;
126     cygwin)
127         case ${gdb_host_cpu} in
128             i386)
129                 # Native config information for GDB on i386
130                 # systems running Cygwin.
131                 NATDEPFILES="${NATDEPFILES} i386-windows-nat.o"
132                 ;;
133         esac
134         ;;
135     cygwin64)
136         case ${gdb_host_cpu} in
137             i386)
138                 # Native config information for GDB on amd64
139                 # systems running Cygwin.
140                 NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
141                 ;;
142         esac
143         ;;
144     darwin)
145         case ${gdb_host_cpu} in
146             i386)
147                 # Host: IA86 running Darwin
148                 NATDEPFILES="${NATDEPFILES} i386-darwin-nat.o x86-nat.o \
149                     nat/x86-dregs.o amd64-nat.o"
150                 ;;
151         esac
152         ;;
153     fbsd)
154         case ${gdb_host_cpu} in
155             aarch64)
156                 # Host: FreeBSD/aarch64
157                 NATDEPFILES="${NATDEPFILES} aarch64-nat.o \
158                 nat/aarch64-hw-point.o aarch64-fbsd-nat.o"
159                 LOADLIBES=
160                 ;;
161             arm)
162                 # Host: FreeBSD/arm
163                 NATDEPFILES="${NATDEPFILES} arm-fbsd-nat.o"
164                 LOADLIBES=
165                 ;;
166             i386)
167                 # Host: FreeBSD/i386
168                 NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
169                 nat/x86-xstate.o x86-bsd-nat.o x86-fbsd-nat.o i386-fbsd-nat.o \
170                 bsd-kvm.o"
171                 ;;
172             mips)
173                 # Host: FreeBSD/mips
174                 NATDEPFILES="${NATDEPFILES} mips-fbsd-nat.o"
175                 LOADLIBES=
176                 ;;
177             powerpc)
178                 # Native config information for GDB on PowerPC
179                 # systems running FreeBSD.
180                 NATDEPFILES="${NATDEPFILES} ppc-fbsd-nat.o bsd-kvm.o"
181                 ;;
182             riscv*)
183                 # Host: FreeBSD/riscv
184                 NATDEPFILES="${NATDEPFILES} riscv-fbsd-nat.o"
185                 ;;
186             sparc)
187                 # Host: FreeBSD/sparc64
188                 NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \
189                 sparc64-fbsd-nat.o bsd-kvm.o"
190                 ;;
191         esac
192         ;;
193     fbsd64)
194         case ${gdb_host_cpu} in
195             i386)
196                 # Host: FreeBSD/amd64
197                 NATDEPFILES="${NATDEPFILES} amd64-nat.o \
198                 amd64-fbsd-nat.o bsd-kvm.o x86-nat.o nat/x86-dregs.o \
199                 nat/x86-xstate.o x86-bsd-nat.o x86-fbsd-nat.o"
200                 ;;
201         esac
202         ;;
203     go32)
204         case ${gdb_host_cpu} in
205             i386)
206                 # Host: Intel x86 running DJGPP
207                 # We include several header files from config/djgpp
208                 MH_CFLAGS='-I$(srcdir)/config/djgpp'
209                 NATDEPFILES='go32-nat.o x86-nat.o nat/x86-dregs.o'
210                 XM_CLIBS='-ldbg'
211                 ;;
212         esac
213         ;;
214     i386gnu)
215         case ${gdb_host_cpu} in
216             i386)
217                 # Host: Intel 386 running the GNU Hurd
218                 NATDEPFILES='i386-gnu-nat.o gnu-nat.o \
219                      x86-nat.o nat/x86-dregs.o fork-child.o \
220                      nat/fork-inferior.o \
221                      notify_S.o process_reply_S.o msg_reply_S.o \
222                      msg_U.o exc_request_U.o exc_request_S.o'
223                 HAVE_NATIVE_GCORE_HOST=1
225                 NAT_FILE='nm-i386gnu.h'
226                 MH_CFLAGS='-D_GNU_SOURCE'
228                 XM_CLIBS='-lshouldbeinlibc'
230                 nat_makefile_frag="${srcdir}/config/${gdb_host_cpu}/i386gnu.mn"
231                 ;;
232         esac
233         ;;
234     linux)
235         case ${gdb_host_cpu} in
236             aarch64)
237                 #  Host: AArch64 based machine running GNU/Linux
238                 NATDEPFILES="${NATDEPFILES} aarch64-nat.o aarch64-linux-nat.o \
239                 aarch32-linux-nat.o nat/aarch64-hw-point.o \
240                 nat/aarch64-linux-hw-point.o \
241                 nat/aarch64-linux.o \
242                 nat/aarch64-scalable-linux-ptrace.o \
243                 nat/aarch64-mte-linux-ptrace.o"
244                 ;;
245             arc)
246                 # Host: ARC based machine running GNU/Linux
247                 NATDEPFILES="${NATDEPFILES} arc-linux-nat.o"
248                 ;;
249             arm)
250                 # Host: ARM based machine running GNU/Linux
251                 NATDEPFILES="${NATDEPFILES} arm-linux-nat.o \
252                 aarch32-linux-nat.o"
253                 ;;
254             i386)
255                 # Host: Intel 386 running GNU/Linux.
256                 NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
257                 nat/x86-xstate.o \
258                 i386-linux-nat.o x86-linux-nat.o nat/linux-btrace.o \
259                 nat/x86-linux.o nat/x86-linux-dregs.o"
260                 ;;
261             ia64)
262                 # Host: Intel IA-64 running GNU/Linux
263                 NATDEPFILES="${NATDEPFILES} ia64-linux-nat.o"
264                 ;;
265             loongarch)
266                 # Host: LoongArch, running GNU/Linux.
267                 NATDEPFILES="${NATDEPFILES} loongarch-linux-nat.o linux-nat-trad.o"
268                 ;;
269             m32r)
270                 # Host: M32R based machine running GNU/Linux
271                 NATDEPFILES="${NATDEPFILES} m32r-linux-nat.o"
272                 ;;
273             m68k)
274                 # Host: Motorola m68k running GNU/Linux.
275                 NATDEPFILES="${NATDEPFILES} m68k-linux-nat.o"
276                 ;;
277             mips)
278                 # Host: Linux/MIPS
279                 NATDEPFILES="${NATDEPFILES} linux-nat-trad.o \
280                 mips-linux-nat.o nat/mips-linux-watch.o"
281                 ;;
282             or1k)
283                 # Host: Linux/OpenRISC
284                 NATDEPFILES="${NATDEPFILES} or1k-linux-nat.o"
285                 ;;
286             pa)
287                 # Host: Hewlett-Packard PA-RISC machine, running Linux
288                 NATDEPFILES="${NATDEPFILES} hppa-linux-nat.o"
289                 ;;
290             powerpc)
291                 # Host: PowerPC, running Linux
292                 NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o"
293                 ;;
294             riscv*)
295                 # Host: RISC-V, running Linux
296                 NATDEPFILES="${NATDEPFILES} riscv-linux-nat.o \
297                 nat/riscv-linux-tdesc.o"
298                 ;;
299             s390)
300                 # Host: S390, running Linux
301                 NATDEPFILES="${NATDEPFILES} s390-linux-nat.o"
302                 ;;
303             sparc)
304                 # Host: GNU/Linux SPARC
305                 NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-linux-nat.o"
306                 ;;
307             tilegx)
308                 # Host: Tilera TILE-Gx running GNU/Linux.
309                 NATDEPFILES="${NATDEPFILES} tilegx-linux-nat.o"
310                 NAT_CDEPS=
311                 ;;
312             xtensa)
313                 # Host: Xtensa, running GNU/Linux.
314                 NATDEPFILES="${NATDEPFILES} xtensa-linux-nat.o"
315                 ;;
316         esac
317         ;;
318     linux64)
319         case ${gdb_host_cpu} in
320             i386)
321                 # Host: GNU/Linux x86-64
322                 NATDEPFILES="${NATDEPFILES} x86-nat.o nat/x86-dregs.o \
323                 nat/x86-xstate.o amd64-nat.o amd64-linux-nat.o x86-linux-nat.o \
324                 nat/linux-btrace.o \
325                 nat/x86-linux.o nat/x86-linux-dregs.o \
326                 nat/amd64-linux-siginfo.o"
327                 ;;
328             sparc)
329                 # Host: GNU/Linux UltraSPARC
330                 NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc64-nat.o \
331                 sparc64-linux-nat.o"
332                 ;;
333         esac
334         ;;
335     mingw)
336         case ${gdb_host_cpu} in
337             i386)
338                 NATDEPFILES="${NATDEPFILES} i386-windows-nat.o"
339                 ;;
340         esac
341         ;;
342     mingw64)
343         case ${gdb_host_cpu} in
344             i386)
345                 NATDEPFILES="${NATDEPFILES} i386-windows-nat.o amd64-windows-nat.o"
346                 ;;
347         esac
348         ;;
349     nbsd)
350         case ${gdb_host_cpu} in
351             alpha)
352                 # Host: NetBSD/alpha
353                 NATDEPFILES="${NATDEPFILES} alpha-bsd-nat.o bsd-kvm.o"
354                 LOADLIBES='-lkvm'
355                 ;;
356             mips)
357                 # Host: NetBSD/mips
358                 NATDEPFILES="${NATDEPFILES} mips-netbsd-nat.o"
359                 ;;
360             pa)
361                 # Host: NetBSD/hppa
362                 NATDEPFILES="${NATDEPFILES} netbsd-nat.o hppa-netbsd-nat.o"
363                 ;;
364             powerpc)
365                 # Host: NetBSD/powerpc
366                 NATDEPFILES="${NATDEPFILES} ppc-netbsd-nat.o bsd-kvm.o"
367                 LOADLIBES='-lkvm'
368                 ;;
369             sh)
370                 # Host: NetBSD/sh
371                 NATDEPFILES="${NATDEPFILES} sh-netbsd-nat.o"
372                 ;;
374         esac
375         ;;
376     nbsd64)
377         case ${gdb_host_cpu} in
378             i386)
379                 # Host: NetBSD/amd64
380                 NATDEPFILES="${NATDEPFILES} netbsd-nat.o amd64-nat.o x86-nat.o \
381                 nat/x86-dregs.o x86-bsd-nat.o amd64-bsd-nat.o amd64-netbsd-nat.o"
382                 ;;
383             sparc)
384                 # Host: NetBSD/sparc64
385                 NATDEPFILES="${NATDEPFILES} sparc64-netbsd-nat.o sparc-nat.o \
386                 bsd-kvm.o"
387                 LOADLIBES='-lkvm'
388                 ;;
390         esac
391         ;;
392     nbsdelf)
393         case ${gdb_host_cpu} in
394             arm)
395                 # Host: NetBSD/arm
396                 NATDEPFILES="${NATDEPFILES} arm-netbsd-nat.o"
397                 ;;
398             i386)
399                 # Host: NetBSD/i386 ELF
400                 NATDEPFILES="${NATDEPFILES} netbsd-nat.o x86-nat.o \
401                 nat/x86-dregs.o \
402                 x86-bsd-nat.o i386-bsd-nat.o i386-netbsd-nat.o bsd-kvm.o"
403                 LOADLIBES='-lkvm'
404                 ;;
405             m68k)
406                 # Host: NetBSD/m68k ELF
407                 NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o"
408                 LOADLIBES='-lkvm'
409                 ;;
410             sparc)
411                 # Host: NetBSD/sparc ELF
412                 NATDEPFILES="${NATDEPFILES} sparc-nat.o sparc-netbsd-nat.o \
413                 bsd-kvm.o"
414                 LOADLIBES='-lkvm'
415                 ;;
416             vax)
417                 # Host: NetBSD/vax ELF
418                 NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o"
419                 LOADLIBES='-lkvm'
420                 ;;
422         esac
423         ;;
424     nto)
425         case ${gdb_host_cpu} in
426             i386)
427                 # Host: Intel 386 running QNX.
428                 NATDEPFILES='nto-procfs.o'
429                 NAT_FILE='config/nm-nto.h'
430                 ;;
431         esac
432         ;;
433     obsd)
434         case ${gdb_host_cpu} in
435             i386)
436                 # Host: OpenBSD/i386 ELF
437                 NATDEPFILES="${NATDEPFILES} obsd-nat.o x86-bsd-nat.o \
438                 i386-bsd-nat.o i386-obsd-nat.o bsd-kvm.o"
439                 LOADLIBES='-lkvm'
440                 ;;
441             m68k)
442                 # Host: OpenBSD/m68k
443                 NATDEPFILES="${NATDEPFILES} m68k-bsd-nat.o bsd-kvm.o"
444                 LOADLIBES='-lkvm'
445                 ;;
446             pa)
447                 # Host: OpenBSD/hppa
448                 NATDEPFILES="${NATDEPFILES} obsd-nat.o hppa-obsd-nat.o"
449                 ;;
450             powerpc)
451                 # Host: OpenBSD/powerpc
452                 NATDEPFILES="${NATDEPFILES} obsd-nat.o ppc-obsd-nat.o bsd-kvm.o"
453                 LOADLIBES='-lkvm'
454                 ;;
455             vax)
456                 # Host: OpenBSD/vax
457                 NATDEPFILES="${NATDEPFILES} vax-bsd-nat.o bsd-kvm.o"
458                 LOADLIBES='-lkvm'
459                 ;;
460         esac
461         ;;
462     obsd64)
463         case ${gdb_host_cpu} in
464             i386)
465                 # Host: OpenBSD/amd64
466                 NATDEPFILES="${NATDEPFILES} obsd-nat.o amd64-nat.o \
467                 x86-bsd-nat.o amd64-bsd-nat.o amd64-obsd-nat.o bsd-kvm.o"
468                 LOADLIBES='-lkvm'
469                 ;;
470             mips)
471                 # Host: OpenBSD/mips64
472                 NATDEPFILES="${NATDEPFILES} obsd-nat.o mips64-obsd-nat.o"
473                 ;;
474             sparc)
475                 # Host: OpenBSD/sparc64
476                 NATDEPFILES="${NATDEPFILES} obsd-nat.o sparc64-obsd-nat.o \
477                 sparc-nat.o bsd-kvm.o"
478                 LOADLIBES='-lkvm'
479                 ;;
480         esac
481         ;;
482     ppc64-linux)
483         case ${gdb_host_cpu} in
484             powerpc)
485                 # Host: PowerPC64, running Linux
486                 XM_CLIBS=
487                 NATDEPFILES="${NATDEPFILES} ppc-linux-nat.o nat/ppc-linux.o"
488                 ;;
489         esac
490         ;;
491     sol2)
492         case ${gdb_host_cpu} in
493             i386)
494                 # Host: Solaris x86_64
495                 NATDEPFILES="${NATDEPFILES} \
496                 amd64-nat.o i386-sol2-nat.o"
497                 ;;
498             sparc)
499                 # Host: Solaris SPARC & UltraSPARC
500                 NAT_FILE='nm-sol2.h'
501                 NATDEPFILES="${NATDEPFILES} sparc-sol2-nat.o"
502                 ;;
503         esac
504         ;;
505 esac