115577e82Snathanw#!/bin/sh 2*638de00dSchristos# $NetBSD: mknative-gdb,v 1.19 2024/08/27 21:50:20 christos Exp $ 315577e82Snathanw# 415577e82Snathanw# Shell script for generating all the constants needed for a native 597417a67Schristos# platform build of src/external/gpl3/gdb 615577e82Snathanw# 715577e82Snathanw 815577e82Snathanw# initialise 915577e82Snathanw 1015577e82Snathanw_TMPDIR=$2 1115577e82Snathanw_TOP=$3 1215577e82Snathanw_PLATFORM=$4 134141e03cSmrg_MACHINE_SUBDIR=$5 1415577e82Snathanw_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 1597417a67Schristos_GDB=external/gpl3/gdb 1615577e82Snathanw 1715577e82Snathanw. $_TOP/tools/gcc/mknative.common 1815577e82Snathanw 1997417a67Schristos##### gdb/lib/libbfd ##### 2015577e82Snathanw 2115577e82Snathanwget_gdb_libbfd () { 2297417a67Schristos local _BFD=$_GDB/lib/libbfd 234141e03cSmrg mkdir -p $_TOP/$_BFD/arch/$_MACHINE_SUBDIR 2415577e82Snathanw 2515577e82Snathanw { 2615577e82Snathanw getvars bfd/Makefile \ 2715577e82Snathanw libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \ 2815577e82Snathanw INCLUDES TDEFAULTS 294141e03cSmrg } | write_mk $_BFD/arch/$_MACHINE_SUBDIR/defs.mk 3015577e82Snathanw 319eceabbeSchristos for i in bfd-in3.h config.h bfd.h bfdver.h targmatch.h 3297417a67Schristos do 334141e03cSmrg write_c $_BFD/arch/$_MACHINE_SUBDIR/$i <$_TMPDIR/bfd/$i 3497417a67Schristos done 3515577e82Snathanw} 3615577e82Snathanw 3797417a67Schristos##### gdb/lib/libopcodes ##### 3815577e82Snathanw 3915577e82Snathanwget_gdb_libopcodes () { 4097417a67Schristos local _OPCODES=$_GDB/lib/libopcodes 414141e03cSmrg mkdir -p $_TOP/$_OPCODES/arch/$_MACHINE_SUBDIR 4215577e82Snathanw 4315577e82Snathanw { 4415577e82Snathanw getvars opcodes/Makefile \ 4515577e82Snathanw archdefs BFD_MACHINES libopcodes_la_SOURCES 464141e03cSmrg } | write_mk $_GDB/lib/libopcodes//arch/$_MACHINE_SUBDIR/defs.mk 4715577e82Snathanw 4815577e82Snathanw { 4915577e82Snathanw cat $_TMPDIR/opcodes/config.h 504141e03cSmrg } | write_c $_OPCODES/arch/$_MACHINE_SUBDIR/config.h 5115577e82Snathanw} 5215577e82Snathanw 5397417a67Schristos##### gdb/lib/libiberty ##### 5415577e82Snathanw 5515577e82Snathanwget_gdb_libiberty () { 5697417a67Schristos local _IBERTY=$_GDB/lib/libiberty 574141e03cSmrg mkdir -p $_TOP/$_IBERTY/arch/$_MACHINE_SUBDIR 5815577e82Snathanw 5915577e82Snathanw getvars libiberty/Makefile \ 6015577e82Snathanw ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \ 614141e03cSmrg | write_mk $_IBERTY/arch/$_MACHINE_SUBDIR/defs.mk 6215577e82Snathanw 634141e03cSmrg write_c $_IBERTY/arch/$_MACHINE_SUBDIR/config.h \ 6415577e82Snathanw <$_TMPDIR/libiberty/config.h 6515577e82Snathanw} 6615577e82Snathanw 6797417a67Schristos##### gdb/lib/libreadline ##### 6815577e82Snathanw 6915577e82Snathanwget_gdb_libreadline () { 7097417a67Schristos local _READLINE=$_GDB/lib/libreadline 714141e03cSmrg mkdir -p $_TOP/$_READLINE/arch/$_MACHINE_SUBDIR 7215577e82Snathanw 7315577e82Snathanw { 74d3776013Schristos getvars readline/readline/Makefile \ 7515577e82Snathanw CCFLAGS OBJECTS 764141e03cSmrg } | write_mk $_READLINE/arch/$_MACHINE_SUBDIR/defs.mk 7715577e82Snathanw 784141e03cSmrg write_c $_READLINE/arch/$_MACHINE_SUBDIR/config.h \ 79d3776013Schristos <$_TMPDIR/readline/readline/config.h 8015577e82Snathanw} 8115577e82Snathanw 8297417a67Schristos##### gdb/lib/libdecnumber ##### 8315577e82Snathanw 8497417a67Schristosget_gdb_libdecnumber () { 8597417a67Schristos local _DECNUMBER=$_GDB/lib/libdecnumber 864141e03cSmrg mkdir -p $_TOP/$_DECNUMBER/arch/$_MACHINE_SUBDIR 8797417a67Schristos 88576200d1Schristos getvars libdecnumber/Makefile libdecnumber_a_OBJS | 899eceabbeSchristos sed -e s/libdecnumber_a_//g | 904141e03cSmrg write_mk $_DECNUMBER/arch/$_MACHINE_SUBDIR/defs.mk 9197417a67Schristos 924141e03cSmrg write_c $_DECNUMBER/arch/$_MACHINE_SUBDIR/config.h \ 93d3776013Schristos <$_TMPDIR/readline/readline/config.h 9497417a67Schristos 954141e03cSmrg write_c $_DECNUMBER/arch/$_MACHINE_SUBDIR/gstdint.h \ 9697417a67Schristos < $_TMPDIR/libdecnumber/gstdint.h 9797417a67Schristos} 9897417a67Schristos 99576200d1Schristos##### gdb/lib/libgdbsupport ##### 100576200d1Schristos 101576200d1Schristosget_gdb_libgdbsupport () { 102576200d1Schristos local _GDBSUPPORT=$_GDB/lib/libgdbsupport 103576200d1Schristos mkdir -p $_TOP/$_GDBSUPPORT/arch/$_MACHINE_SUBDIR/gdbsupport 104576200d1Schristos 105576200d1Schristos getvars gdbsupport/Makefile libgdbsupport_a_OBJECTS | 1069eceabbeSchristos sed -e s/libgdbsupport_a_//g | 107576200d1Schristos write_mk $_GDBSUPPORT/arch/$_MACHINE_SUBDIR/defs.mk 108576200d1Schristos 109576200d1Schristos write_c $_GDBSUPPORT/arch/$_MACHINE_SUBDIR/gdbsupport/config.h \ 110576200d1Schristos <$_TMPDIR/gdbsupport/config.h 111576200d1Schristos} 112576200d1Schristos 1139eceabbeSchristos##### gdb/lib/libctf ##### 1149eceabbeSchristos 115576200d1Schristosget_gdb_libctf () { 116576200d1Schristos local _CTF=$_GDB/lib/libctf 117576200d1Schristos mkdir -p $_TOP/$_CTF/arch/$_MACHINE_SUBDIR 118576200d1Schristos 119576200d1Schristos getvars libctf/Makefile libctf_la_OBJECTS | 1209eceabbeSchristos sed -e s/libctf_la_//g -e 's/\.lo/.o/g' -e s/libctf_la-//g | 121576200d1Schristos write_mk $_CTF/arch/$_MACHINE_SUBDIR/defs.mk 122576200d1Schristos 123576200d1Schristos write_c $_CTF/arch/$_MACHINE_SUBDIR/config.h \ 124576200d1Schristos <$_TMPDIR/libctf/config.h 125576200d1Schristos} 126576200d1Schristos 1279eceabbeSchristos##### gdb/lib/libbacktrace ##### 1289eceabbeSchristos 1299eceabbeSchristosget_gdb_libbacktrace () { 1309eceabbeSchristos local _BACKTRACE=$_GDB/lib/libbacktrace 1319eceabbeSchristos mkdir -p $_TOP/$_BACKTRACE/arch/$_MACHINE_SUBDIR 1329eceabbeSchristos 1339eceabbeSchristos getvars libbacktrace/Makefile libbacktrace_la_OBJECTS \ 1349eceabbeSchristos libbacktrace_la_LIBADD | 1359eceabbeSchristos sed -e s/libbacktrace_la_//g -e 's/\.lo/.o/g' -e s/libbacktrace_la-//g | 1369eceabbeSchristos write_mk $_BACKTRACE/arch/$_MACHINE_SUBDIR/defs.mk 1379eceabbeSchristos 1389eceabbeSchristos write_c $_BACKTRACE/arch/$_MACHINE_SUBDIR/config.h \ 1399eceabbeSchristos <$_TMPDIR/libbacktrace/config.h 1409eceabbeSchristos write_c $_BACKTRACE/arch/$_MACHINE_SUBDIR/backtrace-supported.h \ 1419eceabbeSchristos <$_TMPDIR/libbacktrace/backtrace-supported.h 1429eceabbeSchristos} 1439eceabbeSchristos 1449eceabbeSchristos##### gdb/lib/libsframe ##### 1459eceabbeSchristos 1469eceabbeSchristosget_gdb_libsframe () { 1479eceabbeSchristos local _SFRAME=$_GDB/lib/libsframe 1489eceabbeSchristos mkdir -p $_TOP/$_SFRAME/arch/$_MACHINE_SUBDIR 1499eceabbeSchristos 1509eceabbeSchristos getvars libsframe/Makefile libsframe_la_OBJECTS | 1519eceabbeSchristos sed -e s/libsframe_la_//g -e 's/\.lo/.o/g' -e s/libsframe_la-//g | 1529eceabbeSchristos write_mk $_SFRAME/arch/$_MACHINE_SUBDIR/defs.mk 1539eceabbeSchristos} 1549eceabbeSchristos 155576200d1Schristos##### gdb/lib/libgnulib ##### 156576200d1Schristos 157576200d1Schristosget_gdb_libgnulib () { 158576200d1Schristos local _GNULIB=$_GDB/lib/libgnulib 1599eceabbeSchristos mkdir -p $_TOP/$_GNULIB/arch/$_MACHINE_SUBDIR/gnulib/import/malloc 160576200d1Schristos 161576200d1Schristos (getvars gnulib/Makefile gl_LIBOBJS | 1629eceabbeSchristos sed -e s/gl_LIB//g && 163576200d1Schristos getvars gnulib/import/Makefile libgnu_a_OBJECTS | 1649eceabbeSchristos sed -e s/libgnu_a-//g -e s@glthread/@@g -e s@malloc/@@g) | 165576200d1Schristos write_mk $_GNULIB/arch/$_MACHINE_SUBDIR/defs.mk 166576200d1Schristos 167576200d1Schristos for i in config.h \ 168576200d1Schristos import/alloca.h import/ctype.h \ 169576200d1Schristos import/dirent.h import/fcntl.h \ 170576200d1Schristos import/fnmatch.h import/glob.h \ 1719eceabbeSchristos import/glob-libc.gl.h \ 172576200d1Schristos import/inttypes.h import/limits.h \ 173576200d1Schristos import/locale.h import/math.h \ 1749eceabbeSchristos import/malloc/scratch_buffer.gl.h \ 175576200d1Schristos import/signal.h import/stdint.h \ 176576200d1Schristos import/stdio.h import/stdlib.h \ 177576200d1Schristos import/string.h import/time.h \ 178576200d1Schristos import/unistd.h import/wchar.h \ 179576200d1Schristos import/wctype.h 180576200d1Schristos do 181cfd59bbcSchristos write_c $_GNULIB/arch/$_MACHINE_SUBDIR/gnulib/$i \ 182576200d1Schristos < $_TMPDIR/gnulib/$i 183576200d1Schristos done 184576200d1Schristos} 18597417a67Schristos 186833251feSchristos##### gdb/lib/libgdb ##### 187833251feSchristos 18897417a67Schristosget_gdb_libgdb () { 18997417a67Schristos local _GDBP=$_GDB/lib/libgdb 19015577e82Snathanw 19115577e82Snathanw { 19215577e82Snathanw getvars gdb/Makefile \ 19315577e82Snathanw INTERNAL_CFLAGS LIBGDB_OBS SIM_OBS 194dad3d2d1Schristos } | sed -e s@arch/@@g -e s@cli/@@g -e s@common/agent@common-agent@ \ 195dad3d2d1Schristos -e s@common/@@g -e s@compile/@@g -e s@guile/@@g -e s@mi/@@g \ 196dad3d2d1Schristos -e s@nat/@@g -e s@python/@@g -e s@target/@@g \ 197d3776013Schristos -e s@dwarf2/@@g -e s@unittests/@@g \ 198dad3d2d1Schristos -e s@tui/@@g | write_mk $_GDBP/arch/$_MACHINE_SUBDIR/defs.mk 19915577e82Snathanw 20015577e82Snathanw# getvars gdb/gdbserver/Makefile \ 20115577e82Snathanw# INTERNAL_CFLAGS OBS \ 2024141e03cSmrg# | write_mk $_GDB/bin/gdb/arch/$_MACHINE_SUBDIR/gdbserver.mk 20315577e82Snathanw 204dad3d2d1Schristos for i in config.h version.c init.c \ 205d3776013Schristos xml-builtin.c jit-reader.h 20697417a67Schristos do 2074141e03cSmrg write_c $_GDBP/arch/$_MACHINE_SUBDIR/$i \ 20897417a67Schristos < $_TMPDIR/gdb/$i 20915577e82Snathanw done 21015577e82Snathanw 211d3776013Schristos 21215577e82Snathanw for f in nm tm xm; do 213d3776013Schristos if [ ! -f $_TMPDIR/gdb/$f.h ]; then 214d3776013Schristos continue 21515577e82Snathanw fi 216d3776013Schristos ls -l $_TMPDIR/gdb/$f.h | \ 217d3776013Schristos sed 's,^.*->.*/gdb/,,;s,^,#include <,;s,$,>,' | \ 218d3776013Schristos write_c $_GDBP/arch/$_MACHINE_SUBDIR/$f.h 21915577e82Snathanw done 22015577e82Snathanw 22197417a67Schristos local _LIBSIM=$_GDB/lib/libsim 2224141e03cSmrg case $_MACHINE_SUBDIR in 223*638de00dSchristos xxpowerpc*) 2244141e03cSmrg mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR 225*638de00dSchristos write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \ 226*638de00dSchristos <$_TMPDIR/sim/config.h 227baa3270aSchristos #write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/build-config.h \ 228baa3270aSchristos # <$_TMPDIR/sim/ppc/build-config.h 2294141e03cSmrg #write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/cconfig.h \ 2304141e03cSmrg # <$_TMPDIR/sim/common/cconfig.h 23115577e82Snathanw ;; 23296f71ed6Schristos xxmips*) # Disabled for now 2334141e03cSmrg mkdir -p $_TOP/$_LIBSIM/arch/$_MACHINE_SUBDIR 2344141e03cSmrg write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/config.h \ 23515577e82Snathanw <$_TMPDIR/sim/mips/config.h 2364141e03cSmrg #write_c $_LIBSIM/arch/$_MACHINE_SUBDIR/cconfig.h \ 2374141e03cSmrg # <$_TMPDIR/sim/common/cconfig.h 23815577e82Snathanw { 23915577e82Snathanw getvars sim/mips/Makefile \ 24015577e82Snathanw LIB_OBJS CONFIG_CFLAGS \ 24115577e82Snathanw BUILT_SRC_FROM_IGEN IGEN_OBJS 2424141e03cSmrg } | write_mk $_LIBSIM/arch/$_MACHINE_SUBDIR/defs.mk 24315577e82Snathanw ;; 24415577e82Snathanw *) 24515577e82Snathanw ;; 24615577e82Snathanw esac 24715577e82Snathanw} 24815577e82Snathanw 249833251feSchristos# gdb/bin/gdbserver` 250833251feSchristos 251833251feSchristosget_gdb_bingdbserver () { 252833251feSchristos local _CTF=$_GDB/bin/gdbserver 253575adc54Schristos 254575adc54Schristos if [ ! -f $_CTF/arch/$_MACHINE_SUBDIR/config.h ]; then 255575adc54Schristos return 256575adc54Schristos fi 257833251feSchristos mkdir -p $_TOP/$_CTF/arch/$_MACHINE_SUBDIR 258833251feSchristos 259833251feSchristos write_c $_CTF/arch/$_MACHINE_SUBDIR/config.h \ 260833251feSchristos <$_TMPDIR/gdbserver/config.h 261254454c5Schristos write_c $_CTF/arch/$_MACHINE_SUBDIR/version.cc \ 262254454c5Schristos <$_TMPDIR/gdbserver/version-generated.cc 263833251feSchristos} 264833251feSchristos 2656c4905d1Srin# info 2666c4905d1Srin 2676c4905d1Sringet_gdb_info () { 2686c4905d1Srin local _INFO=$_GDB/info 2696c4905d1Srin local _SRC=$_TMPDIR/gdb/doc 2706c4905d1Srin 2716c4905d1Srin mkdir -p $_TOP/$_INFO 2726c4905d1Srin 2736c4905d1Srin for i in $_SRC/*.info; do 2746c4905d1Srin j=`basename $i` 2756c4905d1Srin writefile $_INFO/$j < $i 2766c4905d1Srin done 2776c4905d1Srin} 2786c4905d1Srin 27915577e82Snathanw##### main ##### 28015577e82Snathanw 28115577e82Snathanwcase $1 in 28215577e82Snathanwall|gdb) # everything (uses "canadian cross" temp environment) 28397417a67Schristos get_gdb_libgdb 284576200d1Schristos get_gdb_libgdbsupport 285576200d1Schristos get_gdb_libctf 2869eceabbeSchristos get_gdb_libbacktrace 2879eceabbeSchristos get_gdb_libsframe 288576200d1Schristos get_gdb_libgnulib 28915577e82Snathanw get_gdb_libbfd 29015577e82Snathanw get_gdb_libopcodes 29115577e82Snathanw get_gdb_libiberty 29215577e82Snathanw get_gdb_libreadline 29397417a67Schristos get_gdb_libdecnumber 294833251feSchristos get_gdb_bingdbserver 2956c4905d1Srin get_gdb_info 29615577e82Snathanw exit 0 29715577e82Snathanw ;; 29815577e82Snathanw 29915577e82Snathanw*) echo invalid arguments; exit 1;; 30015577e82Snathanwesac 301