This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug dynamic-link/19916] New: S390: fprs/vrs are not saved/restored while resolving symbols


https://sourceware.org/bugzilla/show_bug.cgi?id=19916

            Bug ID: 19916
           Summary: S390: fprs/vrs are not saved/restored while resolving
                    symbols
           Product: glibc
           Version: 2.24
            Status: NEW
          Severity: normal
          Priority: P2
         Component: dynamic-link
          Assignee: unassigned at sourceware dot org
          Reporter: stli at linux dot vnet.ibm.com
  Target Milestone: ---

On s390, no fpr/vrs are saved while resolving a symbol
via _dl_runtime_resolve/_dl_runtime_profile.

According to the abi, the fpr-arguments are defined as call clobbered.
In leaf-functions, gcc can use fprs for saving/restoring gprs
instead of saving them to the stack.
If gcc do this in one of the resolver-functions, then the floating point
arguments of a library-function are invalid for the first
library-function-call.
The same could occur for vector registers. An ifunc-resolver
can also clobber the vector/floating point argument registers.

Furthermore, if _dl_runtime_profile calls _dl_call_pltexit,
the pointers to inregs-/outregs-structs are setup invalid.

On s390-32, an endless loop occurs if _dl_call_pltexit() should be called.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]