[MLton] Linker errors when building ADATE with amd64

Lars Magnusson lavima at gmail.com
Tue Oct 19 00:51:13 PDT 2010


Hi

I'm currently working on porting the ADATE system to x86_64. I get
some linker errors when building that I'm having a hard time figuring
out.

The mlton output (with the compile SML output discarded):

Compile and Assemble starting
      gcc -std=gnu99 -c -I/usr/lib/mlton/targets/self/include \
          -I/usr/lib/mlton/include -O1 -fno-common -fno-strict-aliasing \
          -fomit-frame-pointer -w -m64 -o /tmp/fileeFQzBJ.o /tmp/filePR2V5Q.5.c
      gcc -c -m64 -o /tmp/fileCXMKcs.o /tmp/file08JvNj.4.s
      gcc -c -m64 -o /tmp/fileNKJ89G.o /tmp/filekicUjH.3.s
      gcc -c -m64 -o /tmp/fileSG5tLs.o /tmp/fileSzumK1.2.s
      gcc -c -m64 -o /tmp/filelBmNve.o /tmp/fileX2z7aA.1.s
      gcc -c -m64 -o /tmp/filew8NCvz.o /tmp/filevZ0aQ8.0.s
      gcc -std=gnu99 -c -I/usr/lib/mlton/targets/self/include \
          -I/usr/lib/mlton/include -O1 -fno-common -fno-strict-aliasing \
          -fomit-frame-pointer -w -m64 -o /tmp/fileHL1K7s.o ./execute.c
      gcc -std=gnu99 -c -I/usr/lib/mlton/targets/self/include \
          -I/usr/lib/mlton/include -O1 -fno-common -fno-strict-aliasing \
          -fomit-frame-pointer -w -m64 -o /tmp/fileUoLkXN.o \
          ./ampi_interface_mlton.c
      gcc -std=gnu99 -c -I/usr/lib/mlton/targets/self/include \
          -I/usr/lib/mlton/include -O1 -fno-common -fno-strict-aliasing \
          -fomit-frame-pointer -w -m64 -o /tmp/fileZS2MEL.o ./svd_lin_solve.c
   Compile and Assemble finished in 0.76 + 0.00 (0% GC)
   Link starting
      gcc -o makespec /tmp/fileeFQzBJ.o /tmp/fileCXMKcs.o /tmp/fileNKJ89G.o \
          /tmp/fileSG5tLs.o /tmp/filelBmNve.o /tmp/filew8NCvz.o \
          /tmp/fileHL1K7s.o /tmp/fileUoLkXN.o /tmp/fileZS2MEL.o \
          -L/usr/lib/mlton/targets/self -lmlton -lgdtoa -lm -lgmp -m64 \
          -mmodel=medium -fPIC -static
/tmp/fileUoLkXN.o: In function `ampi_init_client':
ampi_interface_mlton.c:(.text+0x1085): warning: Using 'gethostbyname'
in statically linked applications requires at runtime the shared
libraries from the glibc version used for linking
/tmp/filew8NCvz.o: In function `L_5':
(.text+0x4fa2): relocation truncated to fit: R_X86_64_PC32 against
symbol `CommandLine_argv' defined in .bss section in
/usr/lib/mlton/targets/self/libmlton.a(CommandLine.o)
/tmp/filew8NCvz.o: In function `L_5':
(.text+0x4fa9): relocation truncated to fit: R_X86_64_PC32 against
symbol `CommandLine_argc' defined in .bss section in
/usr/lib/mlton/targets/self/libmlton.a(CommandLine.o)
/tmp/filew8NCvz.o: In function `L_5':
(.text+0x4fb0): relocation truncated to fit: R_X86_64_PC32 against
symbol `CommandLine_commandName' defined in .bss section in
/usr/lib/mlton/targets/self/libmlton.a(CommandLine.o)
/tmp/fileUoLkXN.o: In function `ampi_comm_size':
ampi_interface_mlton.c:(.text+0x2): relocation truncated to fit:
R_X86_64_PC32 against `.bss'
/tmp/fileUoLkXN.o: In function `ampi_comm_rank':
ampi_interface_mlton.c:(.text+0x9): relocation truncated to fit:
R_X86_64_PC32 against `.bss'
/tmp/fileUoLkXN.o: In function `ampi_get_source':
ampi_interface_mlton.c:(.text+0x11): relocation truncated to fit:
R_X86_64_PC32 against `.bss'
/tmp/fileUoLkXN.o: In function `ampi_get_tag':
ampi_interface_mlton.c:(.text+0x1c): relocation truncated to fit:
R_X86_64_PC32 against `.bss'
/tmp/fileUoLkXN.o: In function `ampi_get_count':
ampi_interface_mlton.c:(.text+0x27): relocation truncated to fit:
R_X86_64_PC32 against `.bss'
/tmp/fileUoLkXN.o: In function `ampi_write_buffer':
ampi_interface_mlton.c:(.text+0x38): relocation truncated to fit:
R_X86_64_PC32 against `.bss'
ampi_interface_mlton.c:(.text+0x60): relocation truncated to fit:
R_X86_64_PC32 against `.bss'
/tmp/fileUoLkXN.o: In function `ampi_read_buffer':
ampi_interface_mlton.c:(.text+0x8d): additional relocation overflows
omitted from the output
collect2: ld returned 1 exit status
   Link raised in 0.13 + 0.00 (0% GC)
   Link raised: Fail
MLton raised in 10.86 + 4.38 (29% GC)
MLton raised: Fail
call to system failed with exit status 1:
gcc -o makespec /tmp/fileeFQzBJ.o /tmp/fileCXMKcs.o /tmp/fileNKJ89G.o
/tmp/fileSG5tLs.o /tmp/filelBmNve.o /tmp/filew8NCvz.o
/tmp/fileHL1K7s.o /tmp/fileUoLkXN.o /tmp/fileZS2MEL.o
-L/usr/lib/mlton/targets/self -lmlton -lgdtoa -lm -lgmp -m64
-mmodel=medium -fPIC -static


The mlton command line I'm using is:

mlton @MLton fixed-heap 800m -- -link-opt '-mmodel=medium -fPIC
-static' -verbose 1 -codegen amd64 -const 'Exn.keepHistory true'
-runtime 'ram-slop 1.0' -default-ann 'allowFFI true' makespec.sml
./execute.c ./ampi_interface_mlton.c ./svd_lin_solve.c

I've played around with the link-opt's but haven't been able to change
the outcome.

Can someone tell me what I can do to fix this?

- Lars Magnusson



More information about the MLton mailing list