Solaris[TM] Operating System: How to resolve _PROCEDURE_LINKAGE_TABLE_ calls manually?
(Doc ID 1002002.1)
Last updated on NOVEMBER 05, 2021
Applies to:
Oracle Solaris Studio - Version Forte Developer 6 Update 2 to 12.3 [Release 6.0 to 12]Oracle Solaris on SPARC (32-bit)
Oracle Solaris on SPARC (64-bit)
Purpose
From the Oracle Solaris Linker and Libraries Guide:
"When creating a dynamic executable or shared object, many of the relocations cannot be completed at link-edit time because they require logical addresses that are known only when the objects are loaded into memory. In these cases the link-editor generates new relocation records as part of the output file image. The runtime linker must then process these new relocation records."
However, when looking at the disassembled code either via dbx(1) or dis(1), some calls remains unresolved and instead of a symbolic name it will display _PROCEDURE_LINKAGE_TABLE+offset in dbx(1) or a hexadecimal address in dis(1).
This is an extract of the output from issuing the dis command in dbx(1) for __do_f_out_nv:
0xff311d8c: __do_f_out_nv+0x06a8: call _PROCEDURE_LINKAGE_TABLE_+0x1ec [PLT] 0xff311d90: __do_f_out_nv+0x06ac: ld [%i4 + 0x42c], %o1 0xff311d94: __do_f_out_nv+0x06b0: ba __do_f_out_nv+0xa4 0xff311d98: __do_f_out_nv+0x06b4: ld [%l6], %o0
Same output from dis(1):
21d8c: 40 00 7e 49 call 0x416b0 21d90: d2 07 24 2c ld [%i4 + 1068], %o1 21d94: 10 bf fe 7d ba 0x21788 21d98: d0 05 a0 00 ld [%l6], %o0
On the first line of the dbx(1) output, there is an unresolved PLT at offset 0x1ec.
Troubleshooting Steps
To view full details, sign in with your My Oracle Support account. |
|
Don't have a My Oracle Support account? Click to get started! |