1 # $NetBSD: README,v 1.6 2023/05/14 16:13:05 phx Exp $ 2 3 BUILD INSTRUCTIONS 4 5 Building LoadBSD isn't easy since several sources from the NetBSD repository 6 are required. Compiling these sources under AmigaOS without clashes with the 7 native GCC headers requires some knowledge. This document tries to describe 8 the steps necessary to rebuild LoadBSD with a modern AmigaOS gcc, or vbcc 9 with PosixLib. 10 These instructions do only apply for LoadBSD versions using the loadfile() 11 interface. Previous version do only require getopt.c and reboot.h. 12 13 Note: It is not possible to build LoadBSD with the native NetBSD compiler! 14 LoadBSD is an *AmigaOS* program and must be built with an AmigaOS 15 compiler. Of course, a properly setup cross-compiler does work. 16 17 Required sources from NetBSD (either HEAD or from a release branch) 18 19 From src/sys/lib/libsa: loadfile.h,loadfile.c,loadfile_elf32.c,loadfile_aout.c 20 21 place these files in the directory where you have loadbsd.c 22 23 From src/sys/arch/m68k/include: aout_machdep.h,elf_machdep.h 24 25 place these files in: <loadbsd directory>/include/m68k 26 27 From src/sys/arch/amiga/include: aout_machdep.h,elf_machdep.h,loadfile_machdep.h 28 29 place these files in: <loadbsd directory>/include/machine 30 31 From src/sys/sys: exec.h,exec_elf.h,exec_aout.h,aout_mids.h,reboot.h 32 33 place these files in: <loadbsd directory>/include/sys 34 35 Additional headers (see below): inttypes.h,namespace.h,lib/libsa/stand.h,lib/libkern/libkern.h 36 37 place these files in: <loadbsd directory>/include 38 39 If all the mentioned files are placed at the correct place, loadfile_machdep.h 40 must be modified. The patch is included below. Another small patch to 41 loadfile_aout.c must be applied to fix an incompatibility for LoadBSD. 42 However, that patch breaks loadfile() for other architectures using a.out! 43 Note: This patch is required to be able to suppress loaded symbols when 44 booting ancient a.out kernels that don't support them. Without the 45 patch symbol suppressing doesn't work! That also means ELF isn't 46 affected and LoadBSD could handle it differently but then it could 47 probably break in other unpredictable ways... 48 49 The headers inttypes.h, namespace.h, include/lib/libsa/stand.h and 50 lib/libkern/libkern.h are listed completely below. 51 52 Then it should be possible to recompile LoadBSD with gcc6 or newer by 53 typing "make" (or "make -f vmakefile" with vbcc). If make fails, fix the 54 problem and try again :-P 55 56 Good luck! 57 58 --- Missing files/patches --- 59 60 include/machine/loadfile_machdep.h modification: 61 --cut-- 62 --- include/machine/loadfile_machdep.h~ Sun Mar 26 15:46:55 2023 63 +++ include/machine/loadfile_machdep.h Sun Mar 26 15:47:17 2023 64 @@ -38,7 +38,7 @@ 65 #define LOAD_KERNEL LOAD_ALL 66 #define COUNT_KERNEL COUNT_ALL 67 68 -#ifdef _STANDALONE 69 +#if 0 70 71 #define LOADADDR(a) ((a) + offset) 72 #define ALIGNENTRY(a) 0 73 --cut-- 74 75 loadfile_aout.c modification: 76 --cut-- 77 --- loadfile_aout.c~ Mon Feb 11 21:25:56 2002 78 +++ loadfile_aout.c Thu Jan 23 10:43:27 2003 79 @@ -217,8 +217,8 @@ loadfile_aout(fd, x, marks, flags) 80 BCOPY(&x->a_syms, maxp, sizeof(x->a_syms)); 81 82 if (flags & (LOAD_SYM|COUNT_SYM)) { 83 - maxp += sizeof(x->a_syms); 84 aoutp = maxp; 85 + maxp += sizeof(x->a_syms); 86 } 87 88 if (x->a_syms > 0) { 89 --cut-- 90 91 include/inttypes.h: 92 --cut-- 93 #ifndef _INTTYPES_H 94 #define _INTTYPES_H 95 96 #include <sys/types.h> 97 #include <sys/cdefs.h> 98 99 #ifndef be32toh 100 #define be32toh(x) (x) 101 #endif 102 103 #ifndef roundup 104 #define roundup(x,y) ((((x)+((y)-1))/(y))*(y)) 105 #endif 106 107 typedef unsigned long vaddr_t; 108 typedef unsigned long paddr_t; 109 110 #endif /* !_INTTYPES_H */ 111 --cut-- 112 113 include/namespace.h 114 --cut-- 115 #define _DIAGASSERT(x) /**/ 116 117 extern char *program_name; 118 #define getprogname() program_name 119 120 #ifndef __UNCONST 121 #define __UNCONST(a) ((void *)(unsigned long)(const void *)(a)) 122 #endif 123 --cut-- 124 125 include/lib/libsa/stand.h 126 --cut-- 127 #include <stdio.h> 128 #include <string.h> 129 #include <errno.h> 130 #include <stdlib.h> 131 #include <unistd.h> 132 #include <fcntl.h> 133 #include "inttypes.h" 134 --cut-- 135 136 include/lib/libkern/libkern.h 137 --cut-- 138 /* nothing, must only exist! */ 139 --cut-- 140