Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ANNOUNCE: DJGPP port of GNU binutils 2.22 uploaded.

19 views
Skip to first unread message

Juan Manuel Guerrero

unread,
Jan 7, 2012, 1:57:04 PM1/7/12
to djgpp-a...@delorie.com
This is a 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 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.
This port handles the overflow of the 16 bit s_nreloc and s_nlnno fields in
the section header in the same way this is done by the PE COFF format used
by Cygwin. No other changes to the way DJGPP deals with COFF have been done.

- 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. My contribution primarily concerns the scripts
needed for configuration and building the products. These are based on the
ones created for the GDB ports.

- 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.6.2 and LFN support.
I have never tried to use the linker with any gcc version previous than 4.6.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.
While I tried to configure using djgpp 2.03, I experienced the same crashes
that I had configuring GDB using djgpp 2.03. The fastes and easiest way to
fix this issue was to replace cat.exe compiled with djgpp 2.03 with the
version 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-01-07):

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

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

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

GNU binutils 2.22 source:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bnu222s.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-01-07):

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

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


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


Enjoy.

Guerrero, Juan Manuel <juan.g...@gmx.de>

Charles Sandmann

unread,
Jan 7, 2012, 3:27:32 PM1/7/12
to
Fantastic! Thanks for working through this.


RayeR

unread,
Jan 8, 2012, 10:08:53 AM1/8/12
to
Yeah, you made it!
I take in mind that it doesn't beak all limits but it's significant
step forward. I tried to recompile FFMPEG package (now with disabled
#pragmas that I had to insert before) and it compiled fine and program
seems to be working.
Thanks.
0 new messages