Thread View: comp.sys.sequent
1 messages
1 total messages
Started by Zdzislaw Meglicki
Thu, 07 Mar 1991 00:08
Several GNU problems (some fixes)
Author: Zdzislaw Meglicki
Date: Thu, 07 Mar 1991 00:08
Date: Thu, 07 Mar 1991 00:08
203 lines
6776 bytes
6776 bytes
Hi,
I have a problem trying to compile and test libg++-1.39.0 on the
Sequent Symmetry S27 running DYNIX 3.0.17.9. Here is the problem:
When I compile it with
#XTRAFLAGS = -DNO_LIBGXX_MALLOC
i.e., with NO_LIBGXX_MALLOC commented out, then when running the tests
the following programs work:
tBag tBitString tComplex tCurses tDeque tFix tGetOpt tMap tPQ
tQueue tRational tSet tStack tString
and the following dump the core:
tBitSet tFile tFix16 tFix24 tInteger tLList tObstack tPlex
tRandom tVec
When the library is compiled with NO_LIBGXX_MALLOC activated, i.e.:
XTRAFLAGS = -DNO_LIBGXX_MALLOC
then exactly the opposite happens, i.e., programs that worked previously
dump the core and those that dumped the core previously work.
My gcc is _not_ using the supplied malloc relying instead on DYNIX
malloc, i.e., it's been compiled with:
# ALLOCA = alloca.o
# MALLOC = malloc.o
commented out. I am using GNU's assembler and loader, there do not
seem to be any problems with these during the compilation stage.
I have compiled g++ and libg++ twice, the first time with
MALLOC = malloc.o
uncommented, and the second time with MALLOC commented out, but the test
behaviour described above was unchanged. (I have not remade gcc itself
though to use the supplied malloc and alloca).
I would be most grateful for your advice.
=======================================================================
Some simple libg++ bugs report:
=======================================================================
1)
During installation I have found the following problems in g++ source
and libg++ source itself: DYNIX does not provide a header file
string.h
Many files in g++-1.39.0 source tried to include that file regardless.
There is an elegant #ifdef in cplus-dem.c which fixes this problem,
but which does not appear in other files:
#ifdef USG
#include <memory.h>
#include <string.h>
#else
#include <strings.h>
#define memcpy(s1, s2, n) bcopy ((s2), (s1), (n))
#define memcmp(s1, s2, n) bcmp ((s2), (s1), (n))
#define strchr index
#define strrchr rindex
#endif
I have copied and pasted that part of code in place of bare
#include <string.h>
in cplus-lex.c, which is using strchr. As to other files I solved the
problem by making a symbolic link: string.h -> strings.h in my /usr/include.
2)
In libg++-1.39.0/Makefile the line defining "all" was:
all: src tests genclass etc gperf
Yet, genclass is needed during the tests. I have changed that to:
all: src genclass tests # etc gperf
(since I can't get through tests, I didn't bother about etc, and gperf)
=========================================================================
Bug reports about gas-1.38 -> please pass it to the concerned
=========================================================================
1)
The Makefile recommends using for the Sequent:
G0 = -g -I. -DUSE_SYSTEM_HDR -DEXEC_VERSION=1
The option EXEC_VERSION is used _only_ in write.c:
#ifdef EXEC_VERSION
md_number_to_chars((char *)&the_exec.a_version,EXEC_VERSION,sizeof(the_exec.a_
version));
#endif
where (in the same file, i.e., write.c)
static struct exec the_exec;
But in a.out.gnu.h struct exec is defined as follows:
struct exec
{
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, i
n
bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes
*/
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes
*
/
unsigned a_drsize; /* length of relocation info for data, in bytes
*
/
};
In other words, there is no member a_version. The word "a_version" is only
used in write.c in the context specified above.
Inspection of the source revealed that the option USE_SYSTEM_HDR is not
used anywhere (sic!) instead the definition of structure exec is flanked
by #ifdef __STRUCT_EXEC_OVERRIDE__. However, that part of the code does
not include appropriate <exec.h> if __STRUCT_EXEC_OVERRIDE__ is activated.
I have replaced the above definition of exec with the following:
---------------------
#ifndef __STRUCT_EXEC_OVERRIDE__
struct exec
{
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, i
n bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes
*/
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes
*/
unsigned a_drsize; /* length of relocation info for data, in bytes
*/
};
#else
#include <exec.h>
#define a_info a_magic
#endif /* __STRUCT_EXEC_OVERRIDE__ */
------------------------
Then a couple of lines below:
------------------------
#ifndef __STRUCT_EXEC_OVERRIDE__
#define OMAGIC 0407
#endif
/* Code indicating pure executable. */
#define NMAGIC 0410
/* Code indicating demand-paged executable. */
#ifndef __STRUCT_EXEC_OVERRIDE__
#define ZMAGIC 0413
#endif
-----------------------
and in the Makefile itself:
G0 = -g -I. -DUSE_SYSTEM_HDR -DEXEC_VERSION=1 -D__STRUCT_EXEC_OVERRIDE__
I have then copied a.out.gnu.h modified in this way from the gas directory
to the loader directory, and remade both ld and gas.
==========================================================================
--
Gustav Meglicki, gustav@arp.anu.edu.au,
Automated Reasoning Project, RSSS, and Plasma Theory Group, RSPhysS,
The Australian National University, G.P.O. Box 4, Canberra, A.C.T., 2601,
Australia, fax: (Australia)-6-249-0747, tel: (Australia)-6-249-0158
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads