Any Copyright?

This document describes known bugs in software integrated into the ADE.

How you can help
****************

There is an incredible amount of programmer talent available in the Amiga community, with an incalculable amount of hours going into producing demos, freely distributable software, shareware, and other such goodies.  If only 1% of that effort could be harnessed to improve the ADE, we could easily have a standard set of freely available tools that would rival any commercially available tools for the Amiga.

You do not have to be an expert AmigaOS programmer to help.  Neither do you have to be an expert in compiler or other software tools technology.  All you have to do is be willing to learn and be willing to work in a community effort.

As you read the bug list, look for things that you think are within your capabilities to work on.  If you think of something interesting that either needs doing by yourself or someone else, send that suggestion to the maintainer of this list.  Tackle as big or as small of a bug as your skills and available time permits.  Think of it as "adopting a program".

Another option is to choose a project among the ADE-PROJECTS list.  Another option is to pick something not in the PROJECTS list but that you are either familar with, having ported it to other systems, or that you think would be useful, and tackle that.

When you submit a bug report, please do it in a form that eases the integration in this list, by

  providing a short keyword-like description,

  providing a longer description reporting your environment, how to reproduce the bug, and what ADE snapshot you are using,

  giving your name and e-mail address (in case people can't reproduce the bug and need more information about your environment).

Send bug reports about ixemul.library to ade-ixemul@ninemoons.com.

Send bug reports about gcc and associated tools to ade-gcc@ninemoons.com.

Send bug reports about other ADE tools to ade@ninemoons.com.

Tell others that you are interested in working on a program or a project by sending e-mail to ade-projects@ninemoons.com and see if anyone else is already working on it or wants to help in some way.

Rewards
*******

Be assured that everybody will be happy if you write a good bug-report and even more if you kill any bug in this list!

List of Known Bugs
******************

GNU C (C++, ObjC) Compiler
==========================

GCC output is  affected by bugs in the assembler and linker. See as-ld.

Bug
     Poor code is generated when using new inlines for varargs functions

Description
     Using libamiga.a is not that bad it's told so often. It's much better to use the varargs stubs from libamiga.a. The defines from the inlines result in very poor code. Actually your program becomes bigger and slower because of the array filling.

Reported
     by Gunther Nikl <gnikl@informatik.uni-rostock.de> (16-Jul-96)

Work-around
     Use the stack-based functions found in libamiga.a: #undef concerned inline defines so that libamiga.a gets linked in.

Status

gcc --- C front end
-------------------

Bug
     make GCC accept absolute Amiga-style pathnames.  GCC cannot be used without ixprefs "translate /" settings on.

Description
     The old GCC-2.3.3 could deal with gcc Source:foo.c or gcc /foo.c (parent directory) while now, you must use gcc /Source/foo.c or gcc ../foo.c.  These UNIXish references will be put in preprocessor #line directives and GDB debugging information, causing other programs (GNUEmacs among them) not to be able to load/edit the source files.

Reported
     by <Joerg.Hoehle@gmd.de> (9-Jul-96)

Volunteers

Difficulty
     The difficult part is to integrate the changes in such a way that one can still use configure; make, not the actual change.

g++ --- C++ front end
---------------------

cpp --- preprocessor
--------------------

cc1 --- actual C compiler
-------------------------

Bug
     fixed or forbidden register was spilled

Description
     Some inline functions/macros use lots of registers, especially BltBitMap(). RawDoFmt() has also been reported to be involved in such a situation.

Reported
     by various

Work-around
     Work-around by using stack-based function calls instead of inlines.  Use libamiga.a/sprintf() instead of RawDoFmt().

Volunteers
     Kamil Iskra <kiskra@ernie.icslab.agh.edu.pl> is the maintainer of the "new" inlines but knowing this won't help you.

Difficulty
     Rewrite your code differently.

Status

GNU Assembler and Linker
========================

The programs as and ld are used by gcc.  They are not found in the GCC package but in binutils, Packages.

Bug
     Executables crash with 8000000x gurus when using -fbaserel or -resident. Kamil Iskra reports fd2inline produces MungWall hits on DH1 when using -resident.

Description
     Probably a bug in just ld, not as

Reported
     Kamil Iskra <kiskra@ernie.icslab.agh.edu.pl> says -resident is broken on 10-Jul-96.

Volunteers
     Daniel Verité <daniel@brainstorm.eu.org> as far as ld is concerned

Difficulty
     Hard to locate possible bug location in linker source code

Status
     -resident still broken as of ADE 960714 release

as --- GNU assembler
--------------------

ld --- GNU linker
-----------------

Daniel Verité <daniel@brainstorm.eu.org> is the current maintainer.

Switching from the old binutils linker to the binutils-2.x series has been causing lots of crashes, for reasons as various as non-68000 code generation, failure to execute autoinit sections (affecting Libnix, see Libnix), bad loadfile hunk structure and more.

Bug
     Executables crash with 8000000x gurus when using -s together with -resident option.

Status
     -s works now, but -resident is still broken.

Work-around
     Don't use -s, use the separate strip utility instead. Better: update to at least version 960530 of ld.

ixemul.library
==============

Hans Verkuil <hans@wyst.hobby.nl> is the current maintainer.

The pdksh shell stresses the UNIX-compatibility of ixemul.library. See sh.

Bug
     fcntl(,, O_NONBLOCK) doesn't work

Description
     From RPM file: build/pack.c

           fcntl(fromCpio[0], F_SETFL, O_NONBLOCK);
           bytes = read(fromCpio[0], buf, sizeof(buf));

     When read() can't read anything from the file (in this case a pipe) it returns -1. But read() waits, so the program is blocked.

Reported
     by Kristof Depraetere <Kristof.Depraetere@rug.ac.be> (6-Jul-96)

Work-around
     ioctl(fh, FIONBIO, 1);

Status
     Fixed in the yet unreleased ixemul-44.0.

sh/ksh --- pdksh
================

The shell ADE:bin/sh is a link to ADE:bin/ksh, which is a port of the pdksh package, a reimplementation of the Korn shell. It is freely distribuable and reasonably compatible with the Bourne shell and is therefore used as the basic UNIX shell within the ADE.

Bug
     ^C doesn't work for non ixemul-programs when run inside pdksh.

Description
     a mixed pdksh/ixemul bug?

Reported
     by <Joerg.Hoehle@gmd.de> (3-Jul-1996)

Volunteers

Difficulty
     Tough

Status
     ^C is disabled as of ixemul V43.1

Bug
     really not a gcc bug?

Description
     After updating locally to ixemul 44.0, the rcs conf.sh script stopped working correctly at the fread test.  This failure was reduced to the test case included below.  If the compile + run does not succeed on the first combination of types, then the test fails to deduce the right types.  With ixemul 43.2, it just happened that for conf.sh the first combination was the right one, but the return type of fread changed in 44.0, triggering this bug.

     To make the below test succeed, edit a.c to change the hardwired types of foo() to be int foo (int arg); and do sh a.sh. When run on a Unix system, the test works no matter what combination of types foo() has.

          /* a.c --- Change these types to test */
          long foo (long arg);

          type foo (argtype arg) {}

          main () { exit (0); }

     -------- a.sh

          #! /bin/sh
          for type in int long
          do
          	for argtype in int long
          	do
          		echo trying type=$type, argtype=$argtype
          		(gcc -Dargtype=$argtype -Dtype=$type a.c && a.out) && echo "FOUND IT" && break
          	done && break
          done || {
          	echo $0: cannot deduce types
          	exit 1
          }
          echo $0: deduced types $type, $argtype

Reported
     on Sun, 18 Aug 1996, by fnf@ninemoons.com (Fred Fish)

Work-around

Status
     bug triggered by fread() return type changing in ixemul-44.0

Libnix --- Using the -noixemul option
=====================================

Maintainers: Gunther Nikl <gnikl@informatik.uni-rostock.de> and Matthias Fleischer <fleischr@izfm.uni-stuttgart.de>

Bug
     stdio buffer size is 1KB by default

Description
     The default should be somewhere between 8KB and 32KB. DiskSpeed shows extremely poor results for buffers below 4KB.

Reported
     by <Joerg.Hoehle@gmd.de> (12-Jun-1996)

Work-around
     setvbuf(), but you don't want to modify foreign code for that

Difficulty
     probably easy

Bug
     -noixemul compiled binaries guru.

Description
     Caused since Libnix1.1 by the use of linker features (autoinit sections) which were broken in the binutils-2 linker.

Work-around
     Update to at least version 960530 of ld.

tar --- Tape Archives
=====================

Bug
     tar does not accept Amiga filenames containing a colon, thus tar -tfv Archive:gcc-2.7.2.tar does not work.

Description
     new "feature" makes tar interpret the name before the colon as a remote host name, which is bad on the Amiga.  Either drop the remote option completely or change the syntax in a portable way.

     The easiest way to circumvent the additional cmd line option is to add flag_force_local = 1 at the top of tar.c/decode_options(). This is ok as long as no one wants to use tar remotely (which doesn't work anyway, I [Lars Hecking] am told. This feature needs the second fork() in buffer.c/child_open().  And rexec(3), methinks.)

Reported
     by <Joerg.Hoehle@gmd.de> (4-Jul-1996)

Work-around
     Use --force-local

Volunteers
     Joerg.Hoehle@gmd.de is working on it, Hans Verkuil <hans@wyst.hobby.nl> has supplied a patch adding a new --force-remote switch.

Difficulty
     Seems easy

Status
     A report about the "colon is used in pathnames of several OS" problem has been posted to gnu.utils.bugs and been "filed" by Francois Pinard <pinard@iro.umontreal.ca>, the GNU-tar maintainer.

Bug
     tar xvMf /fd0 does not work with FD0: RawDiskHandler.

Description
     On a UNIX box, prepare a disk with tar cvMf /dev/fd0 Verzeichnis.  Back on the Amiga, all I get is a requester saying Free: corrupted segment after the first fileheader.  It does work with an old tar of mine.

     Lars Hecking <lhecking@nmrc.ucc.ie> adds: I have tried to find this bug and failed. AFAIR, the GNU tar port on Aminet was compiled with SAS/C and should be less functional than the ADE version wrt stubbed-out Unix functions/syscalls. I think even compiling the SAS'd sources with gcc doesn't make -M work. Which leads me to the conclusion that hhere is either a bug in tar which doesn't show with SAS, or a bug in ixemul.library, or a bug in ade-gcc.

Reported
     by Ingo Saitz <ingo@r1.iqo.uni-hannover.de>

Volunteers

Difficulty

Status
     Untested

Bug
     tar -tzvf foo.tgz and gzcat foo.tgz | tar -tvf - do not work.

Work-around
     Update to at least ADE version 960530 of tar.

ls, cp, mv (fileutils)
======================

Package: fileutils (see fileutils).

Bug
     ls, cp, mv etc. (fileutils) do not correctly handle Amiga-style pathnames

Description
     ls -l ade: did not work, while ls -l /ade did. To concatenate pathnames, UNIX programs either always insert an extra slash in between the parts or insert a slash only if a directory name is not already terminated by one.  Both behaviours are incorrect on the Amiga, where foo//bar is different from foo/bar and no slash must be appended to device or volume names like RAM:.  The rule is to only append a slash if a directory name is terminated by neither slash nor colon.

          RAM:            RAM:foo
          DEVS:DOSdrivers
          SYS:Classes/    SYS:Classes/gadget
          DEVS:/          DEVS:/Storage

Reported
     by various (May 96)

Work-around
     supply UNIX-style pathnames (/RAM/, /dev/PC0) and have ixprefs' "translate /" settings on.

Volunteers
     you?

Difficulty
     not difficult, just find all the places in all the sources

Status
     still broken as of ADE release 970714

Bug
     mv foo ram: (mv across partitions) deletes foo but nothing is in RAM:

Description
     mv: cannot move `foo' to `ram:/foo': No such file or directory.

     mv foo /ram/ didn't complain, but no file was found in /ram/ either.

          5> list foo
          foo                            5 ----rwed Today     21:56:53
          1 file - 2 blocks
          5> mv foo /workIII/
          mv: cannot move `foo' to `/workIII//foo': File exists
          5> ls /workIII/
            (no foo)
          5> move foo text/
          5> list text/foo
          Directory "text" on Tuesday 09-Jul-96
          foo                            5 ----rwed Today
          5> list workIII:info
          Directory "workIII:info" on Tuesday 09-Jul-96
          (..)
          5> mv foo /workIII/info/
          mv: cannot move `foo' to `/workIII/info//foo': Device not configured

Reported
     by Lynn Winebarger <owinebar@nickel.ucs.indiana.edu> and Greg Jung <JUNG@ossen.nrl.navy.mil> (9-Jul-1996)

Volunteers
     None

Difficulty

Status

GDB --- GNU Debugger
====================

Bug
     some info commands do not work

Description
     info dcache gives Enforcer hits.

     info float gives No floating point info available for this processor. on my A4000/40, but info all-registers correctly shows FPU registers.

Reported
     by Joerg.Hoehle@gmd.de (25-Aug-96)

Work-around

Volunteers

Difficulty

Status

CVS --- Concurrent Versions System
==================================

Bug
     cvs commit gives cvs [commit aborted]: cannot commit files as 'root'

Description
     checkout, update, remove, add are all possible, but not commit.

     Should CVS be compiled without the CVS_BADROOT option, which refuses to allow root to commit, (see commit.c in CVS source for details) to get it to work for non-networked users?

     On the current Amiga, essentially everyone has root priviledges regardless of what user the networking support sets you up as, so I [Fred Fish] see no problem with disable the cvs feature that blocks root from doing some operations.

     Furthermore, cvs commit invokes an external editor to create a log message. However, it passes it a UNIX style path name, which isn't grok'ed by my favorite editor.

Reported
     by  Diab Jerius <djerius@cfa.harvard.edu> 12-July-96

Work-around
     Start up INet225 and turn on network support in ixemul.library, which sets you up as non-root.  But then it's said to cause tons of Enforcer hits.

Volunteers

Difficulty
     looks like recompile

Status
     on Fred Fish's very long TODO list, so ...

man --- Read Manual Pages
=========================

Bug
     man man doesn't work, it says cannot create.

Description

          please wait, formatting manual page `man'
          /ade/man/cat1/man.0: cannot create

     [Steve Kaye:] What it is trying to do is create /ade/man/cat1/man.0 from /ade/man/man1/man.1 (I think that is its name).  This is then future access to the manual page man will use the pre-formatted file. [Fred Fish:] I'm not sure why it is necessary, but it seems to be sufficient to assign MAN: to ADE:man for now.  This needs to be looked into and fixed. [Rask I. Lambertsen:] It would also be nice if man could figure out how to create the necessary cat? directories if they don't exist already. [Jörg Höhle:] But only if man.conf switch says so.

Reported
     by Lynn Winebarger <owinebar@nickel.ucs.indiana.edu> (10-Jul-96)

Work-around
     Create cat? directories or Assign man: ADE:man/ may help.

Volunteers

Difficulty

Status
     on David Zaroski's <cz253@cleveland.freenet.edu> TODO list

Bug
     How to use Less or MultiView as man's pager?

Description
     If you get WARNING: terminal cannot clear to end of line and others such messages, $TERMCAP must be set to the location of your termcap file (usually ADE:etc/termcap) for a UNIX-ported pager (more, less) to work.

     If you get sh: less: not found, then $PAGER is not set correctly. Set the local variable, not the global (ENV:PAGER) one.  Using Set PAGER `Which MultiView` in the Amiga shell, before starting sh, should work.

Work-around

Reported
     by Martin Steigerwald <steigerw@stud.uni-frankfurt.de> (26-Jul-96)

How programs are packaged
*************************

binutils
     ld (see ld), as (see as).

CVS
     cvs (see CVS), commit, update etc. are switches to the cvs program.

fileutils
     ls, cp, mv (see fileutils).

GCC
     See gcc driver, g++, cpp, cc1.

tar
     tar.

pdksh
     sh, ksh (see sh).

man
     man.

Libnix
     Libnix.

Testref:  binutils2.

Testxref: see binutils2.

Testpxref: (see binutils2)