Re: Linker error "relocati,on truncated to fit"

Ole Streicher <[email protected]>
Newsgroups gmane.linux.debian.ports.s390
Message-ID <[email protected]>
Hi,

(Could I ask to get a CC of answers via mail? I am not subscribed to
this list.)

Thank you for your response!

Bastian Blank wrote:
> On Tue, Jun 13, 2017 at 09:38:44AM +0200, Ole Streicher wrote:
>> I am slowly re-starting the packaging of IRAF (still not officially
>> announced yet). When porting to s390x, I however run into a strange
>> error: IRAF needs a small piece of assembler code (kind-of longjump for
>> Fortan), which John Long gratefully ported to s390x two years ago:
> 
> Is IRAF the stuff from http://iraf.noao.edu/ and last released five
> years ago?

Yes. I could convince upstream to put it into a git repository,
<https://github.com/iraf/iraf-v216> and now I am creating pull requests
to get it more Debian friendly: portability, build from the tarball,
removal of oddly licensed code. To port zsvjmp, I created a small
project three years ago: <https://github.com/olebole/zsvjmp>.

>> zsvjmp_: [...]
>> 	j       __sigsetjmp@PLT
> 
> Looks like it is, but why do you want this jump via the PLT, while all
> other variants do not?
> 
> | ./unix/as.linux/zsvjmp.s:       jmp     __sigsetjmp             # let sigsetjmp do the rest
> | ./unix/as.linux64/zsvjmp_c:asm("        jmp     __sigsetjmp     # let sigsetjmp do the rest");

That is way outdated. At least for x86_64, I need the @PLT now to avoid
linker errors. From my (very limited) understanding, @PLT would be
correct, since sigsetjmp resides in a shared lib (libc).

>> Could anyone help me here what is wrong with that assembler?
> 
> To make this work, you need to build with -fPIC.

This didn't help, I still get the same error message. Since zsvjmp.o
will be statically linked (yet), I also don't see why -fPIC would be needed.

>From browsing the S390 mnemonic list, I tried to replace the "j" opcode
with a "jg", and then the compilation succeeds. However, this is a very
wild guess, since the menmonic list just in both cases said it were a
"jump". Can you (or someone) confirm that "jg" is correct here? The code
still does not work, and I want to be sure that "jg" is not causing this.

Best regards

Ole
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.