LLVM has changed the ELF header dump format [1], the code in oe_libinstall
relied upon the format and processed the SONAME inside square brackets
e.g.

0x000000000000000e (SONAME)       Library soname: libreadline.so.8

with older readelf from ( llvm <19 or GNU binutils objdump ) we get

0x000000000000000e (SONAME)       Library soname: [libreadline.so.8]

The check in oe_libinstall will now trip over ELF files read by llvm-readelf
from llvm19+

To make it portable which works across GNU binutils and LLVM tools
switch to using objdump -p to dump the ELF file and modify the regexp
accordingly, as an aside, the post processing expression is simplified
too

[1] https://github.com/llvm/llvm-project/pull/96562

Signed-off-by: Khem Raj <raj.k...@gmail.com>
---
 meta/classes-global/utils.bbclass | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/classes-global/utils.bbclass 
b/meta/classes-global/utils.bbclass
index 957389928f3..c9cae8930f7 100644
--- a/meta/classes-global/utils.bbclass
+++ b/meta/classes-global/utils.bbclass
@@ -15,7 +15,7 @@ oe_soinstall() {
                ;;
        esac
        install -m 755 $1 $2/$libname
-       sonamelink=`${READELF} -d $1 |grep 'Library soname:' |sed -e 
's/.*\[\(.*\)\].*/\1/'`
+       sonamelink=`${OBJDUMP} -p $1 | grep SONAME | awk '{print $2}'`
        if [ -z $sonamelink ]; then
                bbfatal "oe_soinstall: $libname is missing ELF tag 'SONAME'."
        fi
@@ -147,7 +147,7 @@ oe_libinstall() {
                # special case hack for non-libtool .so.#.#.# links
                baselibfile=`basename "$libfile"`
                if (echo $baselibfile | grep -qE '^lib.*\.so\.[0-9.]*$'); then
-                       sonamelink=`${READELF} -d $libfile |grep 'Library 
soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'`
+                       sonamelink=`${OBJDUMP} -p $libfile | grep SONAME | awk 
'{print $2}'`
                        solink=`echo $baselibfile | sed -e 's/\.so\..*/.so/'`
                        if [ -n "$sonamelink" -a x"$baselibfile" != 
x"$sonamelink" ]; then
                                __runcmd ln -sf $baselibfile 
$destpath/$sonamelink
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#201191): 
https://lists.openembedded.org/g/openembedded-core/message/201191
Mute This Topic: https://lists.openembedded.org/mt/106905187/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to