Mail Archives: djgpp/2016/02/19/12:13:10
This is a port of GNU binutils 2.26 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 is a DJGPP specific bug fix release.
The assembler has been brocken due to the DJGPP specific elf support code
added in bnu2251br3. It has been removed completely and will never be
added again. It is not clear to me why that code snippet has triggered
the behaviour reported at:
<http://www.delorie.com/archives/browse.cgi?p=djgpp/2016/02/15/08:30:06>
but I have never seen an intel syntax like:
rep/movsl
where the blank between the prefix and the following instruction had been
replaced by a non-blank character like a slash. IMO the instruction line
looks syntacticaly wrong and should have fixed by the code maintainers.
Because both ports, bnu2251[a|b|d|s]r3.zip and bnu226[a|b|d|s].zip are
brocken concerned the syntax issue described above, I have deleted them.
They have not been moved to the /deleted directory but definitively deleted
to avoid any future issue like that.
- New entries have been added to libnames.tab to support future PCRE2 library
names that are not SFN clean. This shall ease porting and compiling
applications on plain DOS like grep or other ones that require those libraries.
- The port has been configured and compiled on WinXP SP3 and on Win98SE.
There is no guarantee that this may be possible with any other DOS-like OS.
Due to the massive use of long file names it will not be possible to configure
and compile without LFN support. The port has been compiled using gcc530
and bnu226br2.
- The port has been tested by using it. I have used them only on WinXP.
It has worked flawlessly. I do not konw if this will ever be the case on
FreeDOS. I have never used/tested them in that environment.
As usual, all djgpp specific files (build.sh, diffs, README files, etc.)
are stored 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 djdev205 and that can be downloaded from ftp.delorie.com and
mirrors as (time stamp 2016-02-18):
Binutils 2.26 binary and info format documentation:
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu226br2.zip
Binutils 2.26 bfd, liberty and opcode libraries and headers:
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu226ar2.zip
Binutils 2.26 dvi, html, ps and pdf format documentation:
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu226dr2.zip
Binutils 2.26 source:
ftp://ftp.delorie.com/pub/djgpp/beta/v2gnu/bnu226sr2.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>
P.S.: As a check that the port is OK again I have compiled d_copy.s as described
in some mail. Here is the output of the command gcc -x assembler-with-cpp -v -c d_copy.s:
GNU ld (GNU Binutils) 2.26.20160125
Using built-in specs.
COLLECT_GCC=c:/djgpp-2.05/bin/gcc.exe
Target: djgpp
Configured with: /gcc-5.30/configure djgpp --prefix=/dev/env/DJDIR --disable-werror --enable-languages=c,c++,fortran,objc,obj-c++ --enable-libquadmath-support --enable-lto
Thread model: single
gcc version 5.3.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-c' '-mtune=pentium' '-march=pentium'
c:/djgpp-2.05/bin/../libexec/gcc/djgpp/5.30/cc1.exe -E -lang-asm -quiet -v -iprefix c:/djgpp-2.05/bin/../lib/gcc/djgpp/5.30/ -remap d_copy.s -mtune=pentium -march=pentium -fno-directives-only -o c:/TMP/cc4mQpEg.s
ignoring nonexistent directory "c:/djgpp-2.05/bin/../lib/gcc/djgpp/5.30/../../../../djgpp/include"
ignoring duplicate directory "c:/djgpp-2.05/lib/gcc/../../lib/gcc/djgpp/5.30/include"
ignoring duplicate directory "c:/djgpp-2.05/lib/gcc/../../lib/gcc/djgpp/5.30/include-fixed"
ignoring nonexistent directory "c:/djgpp-2.05/lib/gcc/../../lib/gcc/djgpp/5.30/../../../../djgpp/include"
#include "..." search starts here:
#include <...> search starts here:
c:/djgpp-2.05/bin/../lib/gcc/djgpp/5.30/include
c:/djgpp-2.05/bin/../lib/gcc/djgpp/5.30/include-fixed
c:/djgpp-2.05/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-c' '-mtune=pentium' '-march=pentium'
c:/djgpp-2.05/bin/as.exe -v -o d_copy.o c:/TMP/cc4mQpEg.s
GNU assembler version 2.26 (djgpp) using BFD version (GNU Binutils) 2.26.20160125
COMPILER_PATH=c:/djgpp-2.05/bin/../libexec/gcc/djgpp/5.30/;c:/djgpp-2.05/bin/../libexec/gcc/;c:/djgpp-2.05/bin/
LIBRARY_PATH=c:/djgpp-2.05/bin/../lib/gcc/djgpp/5.30/;c:/djgpp-2.05/bin/../lib/gcc/;c:/djgpp-2.05/lib/;./;c:/djgpp-2.05/lib/;c:/djgpp-2.05/bin/../lib/gcc/djgpp/5.30/../../../
COLLECT_GCC_OPTIONS='-v' '-c' '-mtune=pentium' '-march=pentium'
d_copy.o: file format coff-go32
Disassembly of section .text:
00000000 <_VGA_UpdatePlanarScreen>:
0: 55 push %ebp
1: 57 push %edi
2: 56 push %esi
3: 53 push %ebx
4: a1 00 00 00 00 mov 0x0,%eax
9: d1 e0 shl %eax
b: a3 04 00 00 00 mov %eax,0x4
10: a1 00 00 00 00 mov 0x0,%eax
15: d1 e0 shl %eax
17: a3 08 00 00 00 mov %eax,0x8
1c: ba c4 03 00 00 mov $0x3c4,%edx
21: b0 02 mov $0x2,%al
23: ee out %al,(%dx)
24: 42 inc %edx
25: 8b 74 24 14 mov 0x14(%esp),%esi
29: 8b 3d 00 00 00 00 mov 0x0,%edi
2f: 8b 2d 00 00 00 00 mov 0x0,%ebp
35: d1 ed shr %ebp
37: 8b 0d 00 00 00 00 mov 0x0,%ecx
3d: a1 00 00 00 00 mov 0x0,%eax
42: 29 c8 sub %ecx,%eax
44: a3 0c 00 00 00 mov %eax,0xc
49: a1 00 00 00 00 mov 0x0,%eax
4e: c1 e0 02 shl $0x2,%eax
51: 29 c8 sub %ecx,%eax
53: a3 10 00 00 00 mov %eax,0x10
58: c1 e9 04 shr $0x4,%ecx
5b: 89 0d 00 00 00 00 mov %ecx,0x0
61: b0 01 mov $0x1,%al
63: ee out %al,(%dx)
64: b4 02 mov $0x2,%ah
66: 56 push %esi
67: 57 push %edi
68: 8b 0d 00 00 00 00 mov 0x0,%ecx
6e: 8a 7e 0c mov 0xc(%esi),%bh
71: 8a 5e 08 mov 0x8(%esi),%bl
74: c1 e3 10 shl $0x10,%ebx
77: 8a 7e 04 mov 0x4(%esi),%bh
7a: 8a 1e mov (%esi),%bl
7c: 89 1f mov %ebx,(%edi)
7e: 83 c6 10 add $0x10,%esi
81: 83 c7 04 add $0x4,%edi
84: 49 dec %ecx
85: 75 e7 jne 6e <_VGA_UpdatePlanarScreen+0x6e>
87: 03 3d 10 00 00 00 add 0x10,%edi
8d: 03 35 0c 00 00 00 add 0xc,%esi
93: fe cc dec %ah
95: 75 d1 jne 68 <_VGA_UpdatePlanarScreen+0x68>
97: 5f pop %edi
98: 5e pop %esi
99: 46 inc %esi
9a: d0 e0 shl %al
9c: 3c 10 cmp $0x10,%al
9e: 75 c3 jne 63 <_VGA_UpdatePlanarScreen+0x63>
a0: 83 ee 04 sub $0x4,%esi
a3: 03 35 04 00 00 00 add 0x4,%esi
a9: 03 3d 08 00 00 00 add 0x8,%edi
af: 4d dec %ebp
b0: 75 af jne 61 <_VGA_UpdatePlanarScreen+0x61>
b2: 5b pop %ebx
b3: 5e pop %esi
b4: 5f pop %edi
b5: 5d pop %ebp
b6: c3 ret
000000b7 <_VGA_UpdateLinearScreen>:
b7: 55 push %ebp
b8: 57 push %edi
b9: 56 push %esi
ba: 53 push %ebx
bb: fc cld
bc: 8b 74 24 14 mov 0x14(%esp),%esi
c0: 8b 7c 24 18 mov 0x18(%esp),%edi
c4: 8b 5c 24 1c mov 0x1c(%esp),%ebx
c8: 8b 44 24 24 mov 0x24(%esp),%eax
cc: 29 d8 sub %ebx,%eax
ce: 8b 54 24 28 mov 0x28(%esp),%edx
d2: 29 da sub %ebx,%edx
d4: c1 eb 02 shr $0x2,%ebx
d7: 8b 6c 24 20 mov 0x20(%esp),%ebp
db: 89 d9 mov %ebx,%ecx
dd: f3 a5 rep movsl %ds:(%esi),%es:(%edi) <-- the line of interest!!!
df: 01 c6 add %eax,%esi
e1: 01 d7 add %edx,%edi
e3: 4d dec %ebp
e4: 75 f5 jne db <_VGA_UpdateLinearScreen+0x24>
e6: 5b pop %ebx
e7: 5e pop %esi
e8: 5f pop %edi
e9: 5d pop %ebp
ea: c3 ret
eb: 90 nop
ec: 90 nop
ed: 90 nop
ee: 90 nop
ef: 90 nop
- Raw text -