Message-Id: <201304061704.r36H4k48018021@delorie.com> Date: Sat, 06 Apr 2013 17:23:19 +0200 From: Juan Manuel Guerrero To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: DJGPP port of GNU binutils 2.23.2 uploaded. Content-Type: text/plain; charset=ISO-8859-15; format=flowed Reply-To: djgpp AT delorie DOT com This is a port of GNU binutils 2.23.2 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 both. Please note, that due to limitations inherent to DOS and memory resources 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 specif 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 libttool 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.2 and LFN support. I have never tried to use the linker with any gcc version previous than 4.7.2. I even do not know if this would ever work. 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-03-31): GNU binutils 2.23.2 binary and info format documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu2232b.zip GNU binutils 2.23.2 bfd, liberty and opcode libraries and headers: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu2232a.zip GNU binutils 2.23.2 dvi, html, ps and pdf format documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu2232d.zip GNU binutils 2.23.2 source: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu2232s.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 (timestamp 2013-03-31): GNU binutils 2.23.2 binary and info format documentation: ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu2232b.zip GNU binutils 2.23.2 bfd, liberty and opcode libraries and headers: ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu2232a.zip Send binutils specific bug reports to . Send suggestions and bug reports concerning the DJGPP port to comp.os.msdos.djgpp or . Enjoy. Guerrero, Juan Manuel