Mail Archives: djgpp/2012/11/10/19:52:20
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f
|
Message-Id: | <201211110051.qAB0pdxC026036@delorie.com>
|
Date: | Sun, 11 Nov 2012 00:52:44 +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.23 uploaded.
|
This is a port of GNU binutils 2.23 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.
- 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 2012-11-10):
GNU binutils 2.23 binary and info format documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu223b.zip
GNU binutils 2.23 bfd, liberty and opcode libraries and headers:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu223a.zip
GNU binutils 2.23 dvi, html, ps and pdf format documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu223d.zip
GNU binutils 2.23 source:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu223s.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-11-10):
GNU binutils 2.23 binary and info format documentation:
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu223b.zip
GNU binutils 2.23 bfd, liberty and opcode libraries and headers:
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu223a.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 -