Skip to content

Building for the x32 ABI #684

Open
Open
@svenha

Description

@svenha

Hello.

I was able to build the scheme binary for the x32 ABI. I am interested in the x32 ABI because it can give significant speedups for GC-intensive programs and reduce memory usage by 50 % (observed for other Schemes like bigloo).

The following error during make shows that there seems to be some asserts or assumptions that differ for x32 compared to x86-64. Can I just modify them? If so, where and how?

make all
echo '(reset-handler abort)'\
            '(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
            '(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
            '(optimize-level 3)'\
            '(debug-level 0)'\
            '(commonization-level (commonization-level))'\
            '(fasl-compressed #t)'\
            '(compress-format (compress-format))'\
            '(compress-level (compress-level))'\
            '(generate-inspector-information #f)'\
            '(subset-mode (quote system))'\
            '(compile-file "cmacros.ss" "cmacros.so")'\
            | ../bin/a6le/scheme -q
sizeof(ptr) * 8 [4] != ptr_bits [64]
sizeof(long) * 8 [4] != long_bits [64]
sizeof(size_t) * 8 [4] != size_t_bits [64]
sizeof(ssize_t) * 8 [4] != size_t_bits [64]
sizeof(ptrdiff_t) * 8 [4] != ptrdiff_t_bits [64]
sizeof(bigitbigit) [4] != sizeof(bigit) [4] * 2
sizeof(I64) [4] != 8
sizeof(U64) [4] != 8
make[4]: *** [Mf-base:372: cmacros.so] Error 1
make[3]: *** [Mf-base:176: allx] Error 2
make[2]: *** [Mf-base:193: bootstrap] Error 2
make[1]: *** [Makefile:22: build] Error 2
make: *** [Makefile:20: build] Error 2

I built the x32 binary by modifying the build process as follows (one needs x32 versions of ncurses, libuuid, libz, liblz4):

./configure ZLIB=/usr/local/libx32/libz.a LZ4=/usr/local/libx32/liblz4.a --machine=a6le --installbin=/usr/local/binx32 --installlib=/usr/local/libx32 --installman=/usr/local/share/man
 sed -i.orig -e '/s/ -m64/ -mx32/g' -e '/ -Werror/ / g' 's/elf_x86_64/elf32_x86_64/g' c/Mf-a6le

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions