Subject: [clisp-list] Re: *** - No more room for LISP objects

From: Bruno Haible <[email-masked]>
Date: Mon May 10 03:51:05 2004

Sam wrote:
> I am loading some data from a huge file and I am getting this error:
> *** - No more room for LISP objects
> top:
>
> Memory: 4096M real, 1749M free, 8192M swap free
>
>   PID USERNAME THR PRI NICE  SIZE   RES STATE   TIME    CPU COMMAND
> 11755 sds        1   0    0 1239M 1235M run   111:15 49.67% lisp.run
>
> I.e., there is enough physical RAM. there are 2 CPUs, so the above
> means that CLISP is running full speed.
> This is a sparc solaris 2.8.

So you have a process that uses 1.2 GB of RAM on a machine with 4 GB address
space? Given that both the OS and CLISP allocate their stuff at arbitrary
address, this is likely to give problems.

> so: what do I do?
> can CLISP allocate more memory?
> what does this message mean?!

I'd try:
1) A clisp build with SPVW_PAGES instead of SPVW_BLOCKS (add
   -DNO_SINGLEMAP -DNO_TRIVIALMAP -DNO_MULTIMAP_FILE -DNO_MULTIMAP_SHM
   to the CFLAGS). This will use malloc for memory allocation, thus perhaps
   reducing the address space problems.
2) Use a 64-bit machine. AMD64 PCs are quite cheap nowadays.

Bruno

---

From: Sam Steingold <[email-masked]>
Date: Mon May 10 06:56:11 2004

> * Bruno Haible <[email-masked]> [2004-05-10 12:40:04 +0200]:
>
> Sam wrote:
> So you have a process that uses 1.2 GB of RAM on a machine with 4 GB
> address space? Given that both the OS and CLISP allocate their stuff
> at arbitrary address, this is likely to give problems.

why?  there is more free space available than CLISP has already claimed!

>    reducing the address space problems.

does this mean no GENERATIONAL_GC?!
<http://clisp.cons.org/impnotes/memory-models.html>

> 2) Use a 64-bit machine. AMD64 PCs are quite cheap nowadays.

I thought that sparc was a 64 bit machine?

OK, so how much space can CLISP address in TYPECODES and NO_TYPECODES
modes?

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
Fighting for peace is like screwing for virginity.

---

From: Bruno Haible <[email-masked]>
Date: Mon May 10 07:44:06 2004

> why?  there is more free space available than CLISP has already claimed!

It's about address space. Shared libraries, the executable, the stack,
and the 3 clisp stack/heap areas are randomly scattered over a 4 GB space,
therefore they cannot expand up to 4 GB without colliding with each other.

> > 1) A clisp build with SPVW_PAGES instead of SPVW_BLOCKS
>

Yes.

> I thought that sparc was a 64 bit machine?

On UltraSparcs, the CPU and the kernel are 64-bit, but most user programs
are 32-bit. I have no idea which compiler settings you can choose to get
a 64-bit mode program.

> OK, so how much space can CLISP address in TYPECODES and NO_TYPECODES

TYPECODES: max. 16 MB in 32-bit mode, 4 GB in 64-bit mode.
NO_TYPECODES: the same order of magnitude as the CPU supports.
Therefore I don't recommend TYPECODES here.

Bruno

---

From: Sam Steingold <[email-masked]>
Date: Mon May 10 09:29:05 2004

> * Bruno Haible <[email-masked]> [2004-05-10 16:35:36 +0200]:
>

wouldn't full GC on 2GB kill me?

> Therefore I don't recommend TYPECODES here.

OK, does this mean that on a 64-bit machine I will be able to get 4 GB
of lisp data either with or without TYPECODES?

Can Linux on AMD 64 utilize, say, 64GB of RAM?  1TB?
Can CLISP? (obviously, NO_TYPECODES)
Does anyone here have any experience with CLISP on a Beowulf cluster?

PS. This is a business decision in the making.

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
Don't use force -- get a bigger hammer.

---

From: Bruno Haible <[email-masked]>
Date: Mon May 10 10:06:08 2004

> wouldn't full GC on 2GB kill me?

Without generational GC, a full GC of 2 GB is likely to take several minutes.
Whether that's a problem, depends on whether your program is interactive
or batch-mode.

> of lisp data either with or without TYPECODES?

That's what I expect, and actually even more than 4 GB.

> Can Linux on AMD 64 utilize, say, 64GB of RAM?  1TB?

I can't say where the AMD64 has its limit. (Remember that some Pentiums
had a maximum of 16 MB cachable area, although in theory they were 32-bit.)
But the virtual address of shared libraries on Linux (0x0000002A95xxxxxx)
indicates that the virtual addresses are not the problem any more.

> Can CLISP? (obviously, NO_TYPECODES)

Yes. At most, you might need some tweaking of the initial heap locations in
spvw.d.

Bruno

---

From: Sam Steingold <[email-masked]>
Date: Mon May 10 10:40:06 2004

> * Bruno Haible <[email-masked]> [2004-05-10 18:57:56 +0200]:
>
> Yes. At most, you might need some tweaking of the initial heap
> locations in spvw.d.

you gotta be kidding!
I have no idea what you are talking about here.
what exactly will I need to change?!

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
Those who can laugh at themselves will never cease to be amused.

---

From: Bruno Haible <[email-masked]>
Date: Mon May 10 11:31:02 2004

> what exactly will I need to change?!

Some constants in spvw.d lines 2376..2440 in the current CVS.

There I see some code

      #if defined(AMD64) && defined(UNIX_LINUX)
      # Don't use more than 36 address bits, otherwise mmap() fails.

which appears to imply that AMD64 supports virtual addresses up to 64 GB,
and that clisp assigns 1/5th (= 13 GB) to each of the two heaps. This can
be tweaked if there is need to.

Bruno

---

From: Sam Steingold <[email-masked]>
Date: Mon May 10 15:51:05 2004

> On UltraSparcs, the CPU and the kernel are 64-bit, but most user
> programs are 32-bit. I have no idea which compiler settings you can
> choose to get a 64-bit mode program.

gcc -m64
checking for 64-bit SPARC... (cached) yes

gcc -m64 foo.c
file a.out
a.out:          ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped

if I configure with CC="gcc -m64", I get

gcc -m64 -E `if test false = true; then echo '-DASM_UNDERSCORE'; fi` ../../ffcal
l/avcall/avcall-sparc64.S | grep -v '^ *#line' | grep -v '^#' | sed -e 's,% ,%,g
' -e 's,//.*$,,' -e 's,\$,#,g' > avcall-sparc64.s
/bin/sh ./libtool --mode=compile gcc -m64 -x none -c avcall-sparc64.s
gcc -m64 -x none -c avcall-sparc64.s -o avcall-sparc64.o
/usr/ccs/bin/as: "avcall-sparc64.s", line 2: error: .version "01.01" greater tha
n assembler version ""
/usr/ccs/bin/as: "avcall-sparc64.s", line 13: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 15: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 15: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 15: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 15: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 17: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 17: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 19: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 19: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 19: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 19: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 21: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 21: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 22: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 22: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 23: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 23: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 25: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 25: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 26: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 27: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 27: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 29: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 29: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 31: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 31: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 32: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 33: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 33: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 35: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 35: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 37: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 37: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 38: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 39: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 39: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 41: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 41: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 43: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 43: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 44: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 45: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 45: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 47: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 47: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 49: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 49: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 50: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 51: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 51: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 53: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 53: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 55: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 55: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 56: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 57: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 57: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 59: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 59: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 61: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 61: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 62: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 63: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 63: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 65: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 65: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 67: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 67: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 68: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 69: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 69: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 71: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 71: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 73: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 73: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 74: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 75: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 75: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 77: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 77: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 80: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 83: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 83: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 84: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 84: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 86: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 86: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 87: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 88: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 88: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 90: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 90: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 92: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 93: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 94: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 96: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 98: error: detect global register use
not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 99: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 100: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 102: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 104: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 105: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 106: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 108: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 110: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 111: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 112: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 114: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 116: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 117: error: statement syntax
/usr/ccs/bin/as: "avcall-sparc64.s", line 119: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 121: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 121: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 123: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 124: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 124: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 125: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 125: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 127: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 127: error: detect global register use
 not covered .register pseudo-op
 ....................................
/usr/ccs/bin/as: "avcall-sparc64.s", line 927: error: detect global register use
 not covered .register pseudo-op
/usr/ccs/bin/as: "avcall-sparc64.s", line 928: error: detect global register use
 not covered .register pseudo-op
*** Error code 1
make: Fatal error: Command failed for target `avcall-sparc64.lo'

OOPS:  

gcc -m64  -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type  -Wno-s
ign-compare -O2 -DUNIX_BINARY_DISTRIB -DUNICODE -DNO_GETTEXT -DNO_SIGSEGV -I. -c
 spvw.c
In file included from spvw.d:24:
lispbibl.d:2580:7: #error "oint_addr_mask doesn't cover CODE_ADDRESS_RANGE !!"
lispbibl.d:2583:7: #error "oint_addr_mask doesn't cover MALLOC_ADDRESS_RANGE !!"

and then I get zillions of

lispbibl.d: In function `check_fpointer':
lispbibl.d:12126: warning: cast to pointer from integer of different size
lispbibl.d:12126: warning: cast to pointer from integer of different size
lispbibl.d: In function `check_list':
lispbibl.d:12147: warning: left shift count is negative
lispbibl.d: In function `check_symbol_non_constant':
lispbibl.d:12183: warning: cast to pointer from integer of different size
lispbibl.d: In function `check_pos_integer':
lispbibl.d:12255: warning: left shift count is negative
lispbibl.d: In function `check_sint8':
lispbibl.d:12461: warning: left shift count is negative
lispbibl.d: In function `check_sint16':
lispbibl.d:12477: warning: left shift count is negative
lispbibl.d: In function `check_sint32':
lispbibl.d:12493: warning: left shift count is negative
lispbibl.d: In function `check_uint64':
lispbibl.d:12501: warning: cast to pointer from integer of different size
lispbibl.d:12501: warning: cast to pointer from integer of different size
lispbibl.d:12501: warning: cast to pointer from integer of different size

spvw.d: In function `my_malloc':
spvw.d:618: warning: cast to pointer from integer of different size

spvw_memfile.d:360: warning: cast to pointer from integer of different size
spvw_memfile.d:360: warning: cast to pointer from integer of different size
spvw_memfile.d:406: warning: cast to pointer from integer of different size
spvw_memfile.d:407: warning: cast to pointer from integer of different size
spvw_memfile.d:407: warning: cast to pointer from integer of different size
spvw_memfile.d:419: warning: cast to pointer from integer of different size
spvw_memfile.d:419: warning: cast to pointer from integer of different size
spvw_memfile.d:419: warning: cast to pointer from integer of different size
spvw_memfile.d:419: warning: cast to pointer from integer of different size
spvw_memfile.d:419: warning: cast to pointer from integer of different size
spvw_memfile.d:485: warning: cast to pointer from integer of different size

spvw_memfile.d:515: warning: cast to pointer from integer of different size
spvw_memfile.d:515: warning: cast to pointer from integer of different size
spvw_memfile.d:515: warning: cast to pointer from integer of different size
spvw_memfile.d:515: warning: cast to pointer from integer of different size
spvw_memfile.d:515: warning: cast to pointer from integer of different size
spvw_memfile.d:515: warning: cast to pointer from integer of different size
spvw_memfile.d:515: warning: cast to pointer from integer of different size
spvw_memfile.d:515: warning: cast to pointer from integer of different size
spvw_memfile.d:516: warning: cast to pointer from integer of different size
spvw_memfile.d:516: warning: cast to pointer from integer of different size
spvw_memfile.d:516: warning: cast to pointer from integer of different size
spvw_memfile.d:516: warning: cast to pointer from integer of different size
spvw_memfile.d:516: warning: cast to pointer from integer of different size
spvw_memfile.d:516: warning: cast to pointer from integer of different size
spvw_memfile.d:516: warning: cast to pointer from integer of different size
spvw_memfile.d:516: warning: cast to pointer from integer of different size

PLEASE HELP!!!

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
Trespassers will be shot.  Survivors will be prosecuted.

---

From: Bruno Haible <[email-masked]>
Date: Tue May 11 05:45:12 2004

> a.out:          ELF 64-bit MSB executable SPARCV9 Version 1, dynamically

Good, you're near to success.

> gcc -m64  -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type 
> -Wno-s ign-compare -O2 -DUNIX_BINARY_DISTRIB -DUNICODE -DNO_GETTEXT
> -DNO_SIGSEGV -I. -c spvw.c

Then adjust the oint_type_len etc. definitions (lispbibl.d:2405..2431)
to match the CODE_ADDRESS_RANGE and MALLOC_ADDRESS_RANGE that was found.

Bruno

---

From: Raymond Toy <[email-masked]>
Date: Tue May 11 06:58:06 2004

>>>>> "Sam" == Sam Steingold <[email-masked]> writes:

    Sam> gcc -m64 -x none -c avcall-sparc64.s -o avcall-sparc64.o
    Sam> /usr/ccs/bin/as: "avcall-sparc64.s", line 2: error: .version "01.01" greater tha
    Sam> n assembler version ""

Don't know what this means.

    Sam> /usr/ccs/bin/as: "avcall-sparc64.s", line 13: error: detect global register use
    Sam> not covered .register pseudo-op

You need to add a .register pseudo-op.  Something like

        .register %g2, #scratch
        .register %g3, #scratch

(This info is hard to find anywhere.  I'm not 100% sure that the above
is correct.)

BTW, I tried to compile a "hello world" C program in 64-bit mode, a
while ago.  This worked ok, but gdb 6.0 was totally useless.  It
didn't understand anything so you couldn't set breakpoints, couldn't
single-step, couldn't display stack frames, etc.

Sun's debugger (and compiler) worked much better in this respect.
Even the ancient version 5 we have at work did something reasonable
with 64-bit code.

Ray

---

From: Sam Steingold <[email-masked]>
Date: Tue May 11 07:59:10 2004

> * Bruno Haible <[email-masked]> [2004-05-11 14:31:35 +0200]:
>

/* address range of program code (text+data+bss) */
#define CODE_ADDRESS_RANGE 0x0000000100000000UL
/* address range of malloc() memory */
#define MALLOC_ADDRESS_RANGE 0x0000000100000000UL

how do I adjust oint_type_len?

I added -DNO_SINGLEMAP to CFLAGS and it is building as I write.

1.  what will this cost me? it appears that I will be able to use 48
    bits for address instead of 32, what are the drawbacks?

2.  I get a LOT of warnings like

stream.d: In function `sec_usec':
stream.d:13575: warning: left shift count is negative
stream.d:13577: warning: left shift count is negative
stream.d: In function `parse_sock_list':
stream.d:13834: warning: left shift count is negative
stream.d:13839: warning: left shift count is negative

    is this harmless?

3.   It finally failed:

gcc -m64  -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type  -Wno-sign-compare -O2 -DUNIX_BINARY_DISTRIB -DUNICODE -DNO_GETTEXT -DNO_SIGSEGV -I. -DNO_SINGLEMAP -c io.c
In file included from io.d:9:
lispbibl.d:7328: warning: volatile register variables don't work as you might wish
In file included from io.d:9:
lispbibl.d: In function `check_list':
lispbibl.d:12147: warning: left shift count is negative
lispbibl.d: In function `check_pos_integer':
lispbibl.d:12255: warning: left shift count is negative
lispbibl.d: In function `check_sint8':
lispbibl.d:12461: warning: left shift count is negative
lispbibl.d: In function `check_sint16':
lispbibl.d:12477: warning: left shift count is negative
lispbibl.d: In function `check_sint32':
lispbibl.d:12493: warning: left shift count is negative
lispbibl.d: In function `check_sint64':
lispbibl.d:12509: warning: left shift count is negative
lispbibl.d: In function `check_sint':
lispbibl.d:12525: warning: left shift count is negative
lispbibl.d: In function `check_slong':
lispbibl.d:12541: warning: left shift count is negative
io.d: In function `make_references':
io.d:2187: warning: left shift count is negative
io.d: In function `C_complex_reader':
io.d:3056: warning: left shift count is negative
io.d:3059: warning: left shift count is negative
io.d: In function `C_bit_vector_reader':
io.d:3226: warning: `ch' might be used uninitialized in this function
io.d: In function `C_vector_reader':
io.d:3310: warning: `el' might be used uninitialized in this function
io.d: In function `C_array_reader':
io.d:3364: warning: left shift count is negative
io.d:3366: warning: left shift count is negative
io.d:3369: warning: left shift count is negative
io.d:3371: warning: left shift count is negative
io.d: In function `lookup_label':
io.d:3583: warning: left shift count is negative
io.d:3585: warning: left shift count is negative
io.d: In function `C_label_definition_reader':
io.d:3609: warning: left shift count is negative
io.d: In function `C_label_reference_reader':
io.d:3657: warning: left shift count is negative
io.d: In function `interpret_feature':
io.d:3729: warning: left shift count is negative
io.d:3740: warning: left shift count is negative
io.d:3753: warning: left shift count is negative
io.d: In function `C_structure_reader':
io.d:3882: warning: left shift count is negative
io.d:3908: warning: left shift count is negative
io.d:3927: warning: left shift count is negative
io.d:4000: warning: left shift count is negative
io.d: In function `C_closure_reader':
io.d:4134: warning: left shift count is negative
io.d: In function `C_ansi_pathname_reader':
io.d:4271: warning: left shift count is negative
io.d: In function `justify_end_fill':
io.d:5745: warning: left shift count is negative
io.d:5765: warning: left shift count is negative
io.d: In function `justify_end_linear':
io.d:5828: warning: left shift count is negative
io.d:5843: warning: left shift count is negative
io.d:5872: warning: left shift count is negative
io.d: In function `special_list_p':
io.d:7089: warning: left shift count is negative
io.d:7091: warning: left shift count is negative
io.d: In function `pr_real_number':
io.d:7302: warning: left shift count is negative
io.d:7316: warning: left shift count is negative
io.d:7331: warning: left shift count is negative
io.d: In function `some_printable_slots':
io.d:8026: warning: left shift count is negative
io.d: In function `C_ppprint_logical_block':
io.d:9631: warning: left shift count is negative
/usr/ccs/bin/as: "/var/tmp//ccEV4S3J.s", line 17331: error: statement syntax
*** Error code 1
make: Fatal error: Command failed for target `io.o'

io.s (generated by "make io.s") is here:
<http://www.podval.org/~sds/io.s>

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
When we write programs that "learn", it turns out we do and they don't.

---

From: Bruno Haible <[email-masked]>
Date: Tue May 11 09:31:08 2004

> how do I adjust oint_type_len?

In this case oint_addr_len must be at least 33. You can achieve this by
changing the SPARC64 specific
  #if defined(NO_SINGLEMAP)
to
  #if 1

>     bits for address instead of 32, what are the drawbacks?

None.

> stream.d:13577: warning: left shift count is negative

Such a build will not work.

Bruno

---

From: Sam Steingold <[email-masked]>
Date: Tue May 11 09:52:10 2004

> * Bruno Haible <[email-masked]> [2004-05-11 18:22:30 +0200]:
>
> Sam wrote:

thanks.

>>     bits for address instead of 32, what are the drawbacks?
great!

> Such a build will not work.

OUCH!!!  what do I do?!

I grabbed your change to src/arilev0.d and now io.d is compiled,
but now I get

gcc -m64 -I/home/sds/src/m64/include -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type  -Wno-sign-compare -O2 -DUNIX_BINARY_DISTRIB -DUNICODE -DNO_GETTEXT -I. -DNO_SINGLEMAP -c array.c
In file included from array.d:8:
lispbibl.d:7328: warning: volatile register variables don't work as you might wish
In file included from array.d:8:
lispbibl.d: In function `check_list':
lispbibl.d:12147: warning: left shift count is negative
lispbibl.d: In function `check_pos_integer':
lispbibl.d:12255: warning: left shift count is negative
lispbibl.d: In function `check_sint8':
lispbibl.d:12461: warning: left shift count is negative
lispbibl.d: In function `check_sint16':
lispbibl.d:12477: warning: left shift count is negative
lispbibl.d: In function `check_sint32':
lispbibl.d:12493: warning: left shift count is negative
lispbibl.d: In function `check_sint64':
lispbibl.d:12509: warning: left shift count is negative
lispbibl.d: In function `check_sint':
lispbibl.d:12525: warning: left shift count is negative
lispbibl.d: In function `check_slong':
lispbibl.d:12541: warning: left shift count is negative
array.d: In function `eltype_code':
array.d:140: warning: left shift count is negative
array.d: In function `test_dims':
array.d:4169: warning: left shift count is negative
array.d:4173: warning: left shift count is negative
array.d:4183: invalid `asm': operand number missing after %-letter
array.d: In function `initial_contents':
array.d:4332: warning: left shift count is negative
array.d:4333: warning: left shift count is negative
array.d: In function `C_make_array':
array.d:4599: warning: left shift count is negative
array.d:4600: warning: left shift count is negative
array.d: In function `reshape':
array.d:4658: warning: left shift count is negative
array.d: In function `C_adjust_array':
array.d:4932: warning: left shift count is negative
array.d:4933: warning: left shift count is negative
array.d: In function `C_vector_fe_endtest':
array.d:5016: warning: left shift count is negative
*** Error code 1
make: Fatal error: Command failed for target `array.o'

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
Winword 6.0 UNinstall: Not enough disk space to uninstall WinWord

---

From: Sam Steingold <[email-masked]>
Date: Tue May 11 10:40:00 2004

more errors (with the most recent arilev0):

gcc -m64 -I/home/sds/src/m64/include -W -Wswitch -Wcomment -Wpointer-arith -Wimp
licit -Wreturn-type  -Wno-sign-compare -O2 -DUNIX_BINARY_DISTRIB -DUNICODE -DNO_
GETTEXT -I. -DNO_SINGLEMAP -c unixaux.c
In file included from unixaux.d:7:
lispbibl.d:7328: warning: volatile register variables don't work as you might wi
sh
In file included from unixaux.d:7:
lispbibl.d: In function `check_list':
lispbibl.d:12147: warning: left shift count is negative
lispbibl.d: In function `check_pos_integer':
lispbibl.d:12255: warning: left shift count is negative
lispbibl.d: In function `check_sint8':
lispbibl.d:12461: warning: left shift count is negative
lispbibl.d: In function `check_sint16':
lispbibl.d:12477: warning: left shift count is negative
lispbibl.d: In function `check_sint32':
lispbibl.d:12493: warning: left shift count is negative
lispbibl.d: In function `check_sint64':
lispbibl.d:12509: warning: left shift count is negative
lispbibl.d: In function `check_sint':
lispbibl.d:12525: warning: left shift count is negative
lispbibl.d: In function `check_slong':
lispbibl.d:12541: warning: left shift count is negative
gcc -m64 -E arisparc64.c | grep -v '^#' > arisparc64.s
gcc -m64 -I/home/sds/src/m64/include -W -Wswitch -Wcomment -Wpointer-arith -Wimp
licit -Wreturn-type  -Wno-sign-compare -O2 -DUNIX_BINARY_DISTRIB -DUNICODE -DNO_
GETTEXT -I. -DNO_SINGLEMAP -x assembler -c arisparc64.s
/usr/ccs/bin/as: "arisparc64.s", line 81: error: invalid register
/usr/ccs/bin/as: "arisparc64.s", line 574: error: detect global register use not
 covered .register pseudo-op
/usr/ccs/bin/as: "arisparc64.s", line 578: error: detect global register use not
 covered .register pseudo-op
/usr/ccs/bin/as: "arisparc64.s", line 580: error: detect global register use not
 covered .register pseudo-op
/usr/ccs/bin/as: "arisparc64.s", line 585: error: detect global register use not
 covered .register pseudo-op
/usr/ccs/bin/as: "arisparc64.s", line 649: error: detect global register use not
 covered .register pseudo-op
/usr/ccs/bin/as: "arisparc64.s", line 652: error: detect global register use not
 covered .register pseudo-op
/usr/ccs/bin/as: "arisparc64.s", line 670: error: detect global register use not
 covered .register pseudo-op
/usr/ccs/bin/as: "arisparc64.s", line 673: error: detect global register use not
 covered .register pseudo-op
*** Error code 1
make: Fatal error: Command failed for target `arisparc64.o'

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
The only guy who got all his work done by Friday was Robinson Crusoe.

---

From: Sam Steingold <[email-masked]>
Date: Tue May 11 10:52:04 2004

> * Raymond Toy <[email-masked]> [2004-05-11 09:57:08 -0400]:
>

For me, assembler is even less readable than Perl (!),
so I can hardly understand what you are saying.
I would deeply appreciate a patch though.

> single-step, couldn't display stack frames, etc.

we have gdb 4.17...

> Even the ancient version 5 we have at work did something reasonable

/usr/ucb/cc:  language optional software package not installed

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/>
<http://www.mideasttruth.com/> <http://www.honestreporting.com>
This message is rot13 encrypted (twice!); reading it violates DMCA.