<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>2484</bug_id>
          
          <creation_ts>2012-05-22 15:36:09 +0000</creation_ts>
          <short_desc>When the baselib does not match the expected library path, prelinking is not done.</short_desc>
          <delta_ts>2018-01-18 16:20:15 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>6</classification_id>
          <classification>Yocto Project Subprojects</classification>
          <product>Cross-prelink</product>
          <component>poky integration</component>
          <version>unspecified</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>Future</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hatle">mark.hatle</reporter>
          <assigned_to name="Mark Hatle">mark.hatle</assigned_to>
          <cc>jessica.zhang</cc>
    
    <cc>richard.purdie</cc>
    
    <cc>sgw</cc>
    
    <cc>song.liu</cc>
    
    <cc>yp.cp.watcher</cc>
    
    <cc>yp.watcher</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>Yes (doc changes required)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>21523</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hatle">mark.hatle</who>
    <bug_when>2012-05-22 15:36:09 +0000</bug_when>
    <thetext>baselib is variable within the OE environment.  For example on x86_64, it may be &quot;/lib&quot; or &quot;/lib64&quot;.  The prelinker appears to be expecting it to always be &quot;/lib64&quot; and failing to prelink if it&apos;s &quot;/lib&quot;.

Either the prelinker needs to be informed as to the baselib location, or it needs to be made more permissive of the ld.so location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22604</commentid>
    <comment_count>1</comment_count>
    <who name="Song Liu">song.liu</who>
    <bug_when>2012-06-26 17:53:08 +0000</bug_when>
    <thetext>Moving this to M3 as Mark does not have time for it now. Will take a look when we do M3 planning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40750</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Hatle">mark.hatle</who>
    <bug_when>2014-02-27 15:42:02 +0000</bug_when>
    <thetext>*** Bug 5413 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40751</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hatle">mark.hatle</who>
    <bug_when>2014-02-27 15:44:12 +0000</bug_when>
    <thetext>Possible fix for the issue is to add an alternative set of base library paths within the prelinkers internal configuration (see ARM for an example).

Another possible way is to pass into the prelinker the valid base library paths, but this interface would require a way of saying which ELF types use which linkers.  That may prove to be more difficult for no reasonable benefit.

If the cross-prelinker could be modified at compile time to match the distribution, that would work -- but in the past we&apos;d avoided it due to re-use of the binary components.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50566</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hatle">mark.hatle</who>
    <bug_when>2015-04-28 18:08:18 +0000</bug_when>
    <thetext>Lowering importance to enhancement.

We&apos;ve know about this for a while, but no real complaints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56109</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hatle">mark.hatle</who>
    <bug_when>2015-11-02 19:15:05 +0000</bug_when>
    <thetext>The prelinker has certain assumptions for the dynamic linker on the target.  If the assumption is not met, it will skip prelinking for that target.

Enabling multilib configuration or at a minimum defining:

baselib = &quot;${BASE_LIB_tune-${DEFAULTTUNE}}&quot;

should resolve the issue, with the expectation that the library path will meet the LSB/FHS expectations:

ARM - lib
ARM (AARCH64) - lib64

IA32 (i*86) - lib
IA32 (x32) - libx32
IA32 (x86_64) - lib64

MIPS (o32) - lib
MIPS64 (n32) - lib32
MIPS64 (n64) - lib64

Power (32-bit) - lib
Power (64-bit) - lib64

The prelinker has the following expectations for the ld.so:

arch-alpha.c:  .dynamic_linker = &quot;/lib/ld-linux.so.2&quot;,
arch-arm.c:  .dynamic_linker = &quot;/lib/ld-linux.so.3&quot;,
arch-arm.c:  .dynamic_linker_alt = &quot;/lib/ld-linux-armhf.so.3&quot;,
arch-cris.c:  .dynamic_linker = &quot;/lib/ld.so.1&quot;,
arch-i386.c:  .dynamic_linker = &quot;/lib/ld-linux.so.2&quot;,
arch-ia64.c:  .dynamic_linker = &quot;/lib/ld-linux-ia64.so.2&quot;,
arch-mips.c:  .dynamic_linker = &quot;/lib/ld.so.1&quot;,
arch-mips.c:  .dynamic_linker_alt = &quot;/lib32/ld.so.1&quot;,
arch-mips.c:  .dynamic_linker = &quot;/lib/ld.so.1&quot;,
arch-mips.c:  .dynamic_linker_alt = &quot;/lib64/ld.so.1&quot;,
arch-ppc64.c:  .dynamic_linker = &quot;/lib64/ld64.so.1&quot;,
arch-ppc.c:  .dynamic_linker = &quot;/lib/ld.so.1&quot;,
arch-s390.c:  .dynamic_linker = &quot;/lib/ld.so.1&quot;,
arch-s390x.c:  .dynamic_linker = &quot;/lib/ld64.so.1&quot;,
arch-sh.c:  .dynamic_linker = &quot;/lib/ld-linux.so.2&quot;,
arch-sparc64.c:  .dynamic_linker = &quot;/lib64/ld-linux.so.2&quot;,
arch-sparc.c:  .dynamic_linker = &quot;/lib/ld-linux.so.2&quot;,
arch-x86_64.c:  .dynamic_linker = &quot;/libx32/ld-linux-x32.so.2&quot;,
arch-x86_64.c:  .dynamic_linker = &quot;/lib64/ld-linux-x86-64.so.2&quot;,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79147</commentid>
    <comment_count>6</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2018-01-18 16:20:15 +0000</bug_when>
    <thetext>http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=47abf987ad3bde11d1019596a71028560535e4cc</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>