Building on newer Linux

44 views
Skip to first unread message

Conrad Steenberg

unread,
Aug 5, 2019, 2:21:41 PM8/5/19
to ParaSail Programming Language
Hi Tucker et al,

Trying out my first Ada-based project since 1991 (!) I'm running into some linking issues on Ubuntu 19.04. Since I do Elixir by day and used Python for many years, I'm really excited for the Parython syntax especially!

Procedure:
unzip ~/Download/parasail_release_8_0.zip
cd parasail_release_8_0/
make -j 6 all_no_gtk

Works fine, then lots of errors of the form:

/usr/bin/ld: parasail_release_8_0/lib/compiler_main.psl.o:
 relocation R_X86_64_32S against `.rodata' can not be used when
 making a PIE object; recompile with -fPIC

even though the object files are relocatable:

$ file lib/compiler_main.psl.o
 lib/compiler_main.psl.o: ELF 64-bit LSB relocatable, x86-64, 
 version 1 (SYSV), with debug_info, not stripped

Googling around it seems this might be an issue with LLVM-produced code, but wanted to ask here first to see is anybody else has any insights?

Thanks!
Conrad

---------------------------------------------------------------------------------------

Versions used:
  LLVM version 8.0.0
  
  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: skylake

* gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0

* glibc (2.29-0ubuntu2) disco

Full traceback:

$ bin/pslc.csh -v -b3
ParaSail LLVM-Based Compiler version 2.0
/home/conrad/Documents/Development/parasail/parasail_release_8_0/build/bin/parasail_main /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/aaa.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/reflection.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/reflection.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/llvm_printer.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/llvm_printer.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/psvm_debugging.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/type_desc_llvm_utils.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/type_desc_llvm_utils.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler_main.psl -command Compile --verbose /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/aaa.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/reflection.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/reflection.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/llvm_printer.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/llvm_printer.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/psvm_debugging.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/type_desc_llvm_utils.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/type_desc_llvm_utils.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler.psi /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler.psl /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler_main.psl
   [Error messages in file "errors.err"]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler_main.psl]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler.psl]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/aaa.psi]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler.psi]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/reflection.psi]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/type_desc_llvm_utils.psl]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/reflection.psl]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/type_desc_llvm_utils.psi]
   [/home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/type_desc_llvm_utils.psi: source has no executable code]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/llvm_printer.psi]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/psvm_debugging.psl]
   [compiling /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/llvm_printer.psl]
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/aaa.psi.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/reflection.psi.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/reflection.psl.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/llvm_printer.psi.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/llvm_printer.psl.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/psvm_debugging.psl.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/type_desc_llvm_utils.psl.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler.psi.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler.psl.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /home/conrad/Documents/Development/parasail/parasail_release_8_0/lib/compiler_main.psl.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: nonrepresentable section on output
collect2: error: ld returned 1 exit status
gprbuild: link of compiled_main_with_interp.adb failed
make: *** [Makefile:154: compiled_main_with_interp] Error 4

Conrad Steenberg

unread,
Aug 5, 2019, 8:19:45 PM8/5/19
to ParaSail Programming Language
To answer my own question, the solution is to change the arguments for llc in pslc.csh:
llc $llc_flags -relocation-model=pic $i.ll

The whole bootstrap procedure would probably belongs in a Makefile :)

Best,
Conrad
Reply all
Reply to author
Forward
0 new messages