Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
ns32ktoolchain [2020/07/08 00:36] – [GNU as] adminns32ktoolchain [2023/04/12 10:55] – [Standalone binaries] admin
Line 59: Line 59:
 ==== Building binutils ==== ==== Building binutils ====
  
-As it was noted above, the latest binutils still supports **ns32k** target. Early binutils versions (i.e. < ''binutils-2.13'' required for NetBSD compatibility) considered as "mature" and requires **GCC 3** to build. Something is broken in the **ns32k** binutils sources and it can't be built with **GCC 4** and above.+As noted above, the latest binutils still support **ns32k** target. Early binutils versions (i.e. < ''binutils-2.13'' required for NetBSD compatibility) considered as "mature" and requires **GCC 3** to build. Something is broken in the **ns32k** binutils sources and it can't be built with **GCC 4** and above.
  
 Not-so-old (i.e. > ''binutils-2.20'' (correct me)) may be successfully compiled under **GCC 4**. Not-so-old (i.e. > ''binutils-2.20'' (correct me)) may be successfully compiled under **GCC 4**.
  
-Source download: http://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.gz+Binutils 2.27 source download link: http://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.gz
  
-If you have to build early ''binutils-2.13'', you have to use **GCC 3**, but this version deprecated and disappeared from the most of modern systems. You have to find or build a local **GCC 3** for your system (not covered by this document) or use a "compatibility" compiler pre-built for some systems. As an example, Redhat RHEL 5 and CENTOS 5 provide a "compat-gcc-34" package, MinGW provides "mingw32-gcc-v3-core" (correct me). FreeBSD 6 uses GCC 3 as system compiler and FreeBSD 7 provides gcc-3.4 (lang/gcc34) in the port collection. The latest Cygwin with system GCC 3 compiler was a Gygwin-1.5.25 and it may be obtained from the [[http://www.crouchingtigerhiddenfruitbat.org/Cygwin/timemachine.html|Cygwin Time Machine]] (see a cygwin-legacy).+If you need to build early ''binutils-2.13'', you have to use **GCC 3**, but this version deprecated and disappeared from the most of modern systems. You have to find or build a local **GCC 3** for your system (not covered by this document) or use a "compatibility" compiler pre-built for some systems. As an example, Redhat RHEL 5 and CENTOS 5 provide a "compat-gcc-34" package, MinGW provides "mingw32-gcc-v3-core" (correct me). FreeBSD 6 uses GCC 3 as system compiler and FreeBSD 7 provides gcc-3.4 (lang/gcc34) in the port collection. The latest Cygwin with system GCC 3 compiler was a Gygwin-1.5.25 and it may be obtained from the [[http://www.crouchingtigerhiddenfruitbat.org/Cygwin/timemachine.html|Cygwin Time Machine]] (see a cygwin-legacy).
  
-Build results for various platforms: [[toolchain-build]] (not complete).+I've made a test build for various platforms: [[toolchain-build]] (not complete).
  
 Like many other GNU software **GNU Toolchain** uses **GNU Autotools** scripts (./configure) to produce a correct ''Makefile'' for user's platform. Like many other GNU software **GNU Toolchain** uses **GNU Autotools** scripts (./configure) to produce a correct ''Makefile'' for user's platform.
Line 177: Line 177:
 The option ''-ffreestanding'' disables "hosted" environment where ''main()'' is the first "user" function in the programm called by  **crt0.o**. The option ''-ffreestanding'' disables "hosted" environment where ''main()'' is the first "user" function in the programm called by  **crt0.o**.
  
-NOTE! GCC sometimes emits "built-in" functions like ''__udivdi3'' and requres "compiler runtime" library [[https://gcc.gnu.org/onlinedocs/gccint/Libgcc.html|libgcc]] for target processor. Smplify arithmetic expressions.+NOTE! GCC sometimes emits "built-in" functions like ''__udivdi3'' and requres "compiler runtime" library [[https://gcc.gnu.org/onlinedocs/gccint/Libgcc.html|libgcc]] for target processor. Just smplify your arithmetic expressions to avoid this.
  
-Another useful GCC option is ''-fomit-frame-pointer'' - it disables usage of the ''fp'' register (frame pointer) and use ''sp''-related (stack pointer) addressing for local variables like "old" compilers. GCC also supports ''-fpic'' option to compile PIC (Position-Independent Code) with ''sb''-related addressing ''0(_glblvar(sb))''.+Another useful GCC option is''-fomit-frame-pointer'' - it disables usage of the ''fp'' register (frame pointer) and use ''sp''-related (stack pointer) addressing for local variables like "old" compilers. GCC also supports ''-fpic'' option to compile PIC (Position-Independent Code) with ''sb''-related addressing ''0(_glblvar(sb))''.
  
 Test object file with disassembler: Test object file with disassembler:
Line 243: Line 243:
 ns32k-pc532-netbsd-objdump.exe -D -x --target=binary -m ns32k emutest.bin ns32k-pc532-netbsd-objdump.exe -D -x --target=binary -m ns32k emutest.bin
 </code> </code>
-Run ''emul32k'' emulator:+GNU ld [[https://sourceware.org/binutils/docs/ld.pdf|documentation]] . 
 + 
 +Run ''emul32k'' emulator and binary file:
 <code> <code>
  ./emul32k emutest.bin  ./emul32k emutest.bin
Line 261: Line 263:
 ...Work in progress ...Work in progress
  
-Sources: ftp://sourceware.org/pub/gdb/old-releases/\\ +Sources: ftp://sourceware.org/pub/gdb/old-releases/ 
-TODO: Examine NetBSD gdb.+
  
 GDB 2.5.1: no ns32k support. parsing ns32k COFF coffread.c \\ GDB 2.5.1: no ns32k support. parsing ns32k COFF coffread.c \\
Line 270: Line 272:
 ... \\ ... \\
 GDB 4.0.1: uses [[wp>Binary_File_Descriptor_library|BFD]] \\ GDB 4.0.1: uses [[wp>Binary_File_Descriptor_library|BFD]] \\
 +...\\
 +NetBSD 1.5.3 uses GDB 4.17\\
 ... \\ ... \\
 +GDB 5.1: Most ns32k hosts and targets have been marked as obsolete: ns32k-*-mach3* ns32k-umax-* ns32k-utek-sysv* ns32k-utek-*\\
 GDB 6.4 dropped support for ns32k-*-* GDB 6.4 dropped support for ns32k-*-*
  
Navigation