On Thu, 10 Nov 2011 15:16:55 +0100
Andreas Krebbel <kreb...@linux.vnet.ibm.com> wrote:

> On 11/09/2011 08:21 PM, Neale Ferguson wrote:
>
> Hi,
>
> your cmdlines to build the shared lib look correct. The assembler code shows 
> that the code
> has been built correctly with -fPIC. However, the relocations in the .o and 
> .so files look
> like non-pic code. With -fPIC it should be R_390_PLT32DBL in the .o and there 
> has to be a
> R_390_JMP_SLOT relocation in the .so. The R_390_PC32DBL is not sufficient to 
> reach the symbol.
>
> So it looks like AS ignores the "@PLT" modifier completely. But your system 
> would not work
> at all if this really would be the case.

That is pretty much impossible. md_gather_operands does this for @PLT:

          else if (suffix == ELF_SUFFIX_PLT)
            {
              if ((operand->flags & S390_OPERAND_PCREL)
                  && (operand->bits == 16))
                reloc = BFD_RELOC_390_PLT16DBL;
              else if ((operand->flags & S390_OPERAND_PCREL)
                       && (operand->bits == 32))
                reloc = BFD_RELOC_390_PLT32DBL;
            }

A BFD_RELOC_390_PLT32DBL relocation is always emitted as a R_390_PLT32DBL. On 
final link
the bfd code will either convert that to a direct call without any kind of 
relocation
or it will create a PLT slot and a R_390_JMP_SLOT.
If the final shared library has a R_390_PC32DBL there must have been an object 
file that
contained the relocation.

> What distro are you using? I wasn't able to reproduce it on the system I have 
> access to.

Me neither, a simple library that wraps gettimeofday just works.

--
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to lists...@vm.marist.edu with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390
----------------------------------------------------------------------
For more information on Linux on System z, visit
http://wiki.linuxvm.org/

Reply via email to