Message-Id: <201204232337.q3NNbRfP021787@delorie.com> From: Juan Manuel Guerrero To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: release 3 of DJGPP port of GNU binutils 2.22 uploaded. Date: Tue, 24 Apr 2012 01:33:40 +0200 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline This is release 3 of the port of GNU binutils 2.22 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 release fixes a bug concerning the creation of the internal section header from the COFF section header when an object file is read by the linker. The bug is related to the use of COFF debug info (-gcoff). AFAIK, the support of COFF debug info is brocken in gcc 4.6.N and later and it use is not recommended, neitherless the bug had to be fixed. 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. As a lot of threads during the last months have shown, the COFF debug info support is brocken in gcc so its usage is discoraged. 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 2012-04-22): GNU binutils 2.22 binary and info format documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu222br3.zip GNU binutils 2.22 bfd, liberty and opcode libraries and headers: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu222ar3.zip GNU binutils 2.22 dvi, html, ps and pdf format documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu222dr3.zip GNU binutils 2.22 source: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu222sr3.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 2012-04-22): GNU binutils 2.22 binary and info format documentation: ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu222br3.zip GNU binutils 2.22 bfd, liberty and opcode libraries and headers: ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu222ar3.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 PS: I have tried to test this port by compiling it together with the gcc 4.7.0 sources available at Andris homepage. For the first round I used a stock DJGPP 2.04 installation, especially gcc 4.6.2 and binutils 2.21.1. I build and installed this release of binutils 2.22 on WinXP Pro SP3. Then I build gcc 4.7.0. Then the gcc and binutils binaries were installed in a stock DJGPP 2.04 installtion on a Win98SE maschine. First binutils were build and installed then gcc was build. The produced binutils and gcc binaries were then installed in a stock DJGPP 2.04 installation on a Win2K SP5 maschine. The same procedure was then repeated and the resulting binaries were installed on the WinXP Pro SP3 maschine. Here a last time the procedure was repeated. The second round of the test was to repeat the hole procedure sequence but this time using a stock DJGPP 2.03 installation. Due to serious difficulties during the configuration stage of gcc on Win2K, the building of gcc on a Win2K maschine had to be skipped. These difficulties may be solvable by replacing fileutils and some other utilities by those versions compiled with DJGPP 2.04.