delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2013/12/10/12:22:35

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
Message-Id: <201312101721.rBAHLuVA008073@delorie.com>
Date: Tue, 10 Dec 2013 18:01:28 +0100
From: Juan Manuel Guerrero <juan DOT guerrero AT gmx DOT de>
To: djgpp-announce AT delorie DOT com
Subject: ANNOUNCE: DJGPP port of GNU binutils 2.24 uploaded.
Reply-To: djgpp AT delorie DOT com

This is a port of GNU binutils 2.24 to MSDOS/DJGPP.

   The GNU binutils are utilities of use when dealing with binary files, either
   object files or executables.  These tools consist of the linker (ld), the
   assembler (gas), and the profiler (gprof).  There is also a collection of
   other binary tools, including the disassembler (objdump).  These tools make
   use of a pair of libraries (bfd and opcodes) and a common set of header files.



   DJGPP specific changes.
   =======================
   - This port allows a maximal number of 4294967296 relocations per object file
     and a maximal number of 4294967296 of lines per executable file.
     The previous limits were the classical COFF limitations of 65536 for boths.
     Please note, that due to limitations inherent to DOS and memory ressources
     not every file can be compiled.  E.g.: to be able to compile a single file
     containing up to 3 * 65536 relocations I had to increment stack space of
     cc1.exe from 2MB to 10MB.  If the file contains 4 * 65536 relocations then
     cc1.exe aborts because memory has become exhausted.  Neither as.exe nor
     ld.exe have shown memory issues.  Both have the standard stack space of
     512KB.  In other words, even if 32 bit values for relocation and line
     counters are now supported by DJGPP port of as.exe and ld.exe it does not
     imply that large files can be successfully compiled and linked. There are
     memory limitations that may not be solvable.
     OFYI how the DJGPP specifc support for number of relocations greater than
     64K works:
      - If the number of relocations of an object file exceeds 65534 then
        s_nreloc in the section header is set to 65535 to signal the overflow
        and the real number of relocations is stored in an extra COFF relocation
        directive.  This is always the first relocation directive in the sequence
        of relocation directives of this object file.  The 32 bit field r_vaddr
        is used to store the real number of relocations.  This extra relocation
        directive is later removed.  To signal this overflow also the
        STYP_NRELOC_OVFL bit (0x01000000) is set in the s_flags field of the
        section header.
      - If the number of lines of an object file exceeds 65535 then the assembler
        will abort with an error message.  This can only happen if COFF debug info
        is used.  There is no work around for this issue.
      - When the linker creates an executable file from the objects files and
        the total number of lines exceeds 65535 the lower 16 bit of that value
        will be stored in the s_nlnno field and the higher 16 bit in the s_nreloc
        field of the section header of the executable file.  This can only happen
        if COFF debug info is used.

   - The linker script changes, are based on the diff files taken from Andris
     Pavenis' bnu219s2.zip and djcross-binutils-2.19.1-10ap.src.rpm. Both are
     available at ftp.delorie.com and mirrors.
     I have only made those adjustments necessaries to get those patches fit with
     the current source files.

   - The diffs file that contains all changes I have done is stored in the /djgpp
     directory.  Also in this directory is stored the small build.sh script that
     I have used to adjust all configure and libtool scripts of the package.  The
     well known issues that must been fixed are that:
     1) the gawk test for setting the CR coding to be used does not work at all.
     2) inhibit that gawk prepends a leading slash to DOS style path names.
     3) a libtool function needs to be adjusted to get the install target
        working.
     4) the target alias is removed from the tooldir and scriptdir path to get
        the programs and linker scripts installed in the canonical places of a
        DJGPP installation.
     That script is very simple and will only work to configure and compile the
     sources in the /djgpp directory.  If you want to make changes or pass more
     or other options to configure, you will have to edit it or write your own
     script.  build.sh shall not be smart, it shall only DTRT.

   - The port has been compiled on WinXP Pro SP3 using GCC 4.7.3 and LFN support.
     I have never tried to use the linker with any gcc version previous than 4.7.3.
     I even do not know if this would ever work.

   - The linker script has been adapted to discard LTO sections created by the
     compiler if the -flto flag is passed to the compiler.  This is due to LTO
     specific file names that are not 8.3 clean especially if the -save-temps
     option is used.  This may change in the future when the djgpp port of the
     compiler fully supports LTO.



   To compile the sources you will need LFN support.  I have compiled on
   WinXP Prof SP3.  I have not tried to compile the sources using any other
   Windows version.  Especially I have not tried to compile it on plain DOS.
   To be able to configure and compile using djgpp 2.03 it will be necessary
   to replace cat.exe and sort.exe with the versions compiled with djgpp 2.04.


   As usual, all djgpp specific files (build.sh, diffs, README files, etc.)
   are located in the /djgpp directory.  The sources have not been configured
   so you must change into the /djgpp directory and start build.sh. This will
   configure the sources and start make.

   For further information about Binutils please read the info docs and NEWS file.




   The port consists of the usual four packages that have been compiled
   using stock djdev203 and that can be downloaded from ftp.delorie.com
   and mirrors as (time stamp 2013-12-09):

     GNU binutils 2.24 binary and info format documentation:
     ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu224b.zip

     GNU binutils 2.24 bfd, liberty and opcode libraries and headers:
     ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu224a.zip

     GNU binutils 2.24 dvi, html, ps and pdf format documentation:
     ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu224d.zip

     GNU binutils 2.24 source:
     ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu224s.zip


   The binaries have been produced a second time using the stock version of
   djdev204 beta library.  This package is available at ftp.delorie.com and
   mirrors as (time stamp 2013-12-09):

     GNU binutils 2.24 binary and info format documentation:
     ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu224b.zip

     GNU binutils 2.24 bfd, liberty and opcode libraries and headers:
     ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu224a.zip


   Send binutils specific bug reports to <bug-binutils AT gnu DOT org>.
   Send suggestions and bug reports concerning the DJGPP port to
   comp.os.msdos.djgpp or <djgpp AT delorie DOT com>.


Enjoy.

         Guerrero, Juan Manuel <juan DOT guerrero AT gmx DOT de>

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019