[prev in list] [next in list] [prev in thread] [next in thread]
List: openembedded-core
Subject: [OE-core] [PATCH 1/1] ldconfig-native: Add 64-bit flag for ELF64 entries
From: yuanjie.huang () windriver ! com (Huang, Yuanjie)
Date: 2015-04-30 2:13:12
Message-ID: 55418FB8.8070508 () windriver ! com
[Download RAW message or body]
Sorry I was on the wrong tree and was one patch behind. Please see the
revised patch.
Best,
Yuanjie
On 04/28/2015 07:08 PM, Richard Purdie wrote:
> On Tue, 2015-04-28 at 15:46 +0800, Yuanjie Huang wrote:
> > From: Yuanjie Huang <yuanjie.huang at windriver.com>
> >
> > ldconfig-native was grepped from an old version of glibc, and its output
> > lacks neccessary 64bit flag in entries.
> > Due to this defect, ctypes.util.find_library() python function fails to
> > detect any library due to the old file format that ldconfig-native
> > creates. This fix sets architecture-dependent 64bit flags for 64-bit ELF.
> >
> > Since the host's elf.h may not have definition for new AArch64 machine
> > type, a work-around is added to correctly flag 64-bit ARM libraries.
> >
> > Signed-off-by: Yuanjie Huang <yuanjie.huang at windriver.com>
> > ---
> > .../add-64-bit-flag-for-ELF64-entries.patch | 103 +++++++++++++++++++++
> > meta/recipes-core/glibc/ldconfig-native_2.12.1.bb | 1 +
> > 2 files changed, 104 insertions(+)
> > create mode 100644 \
> > meta/recipes-core/glibc/ldconfig-native-2.12.1/add-64-bit-flag-for-ELF64-entries.patch
> >
> > diff --git a/meta/recipes-core/glibc/ldconfig-native-2.12.1/add-64-bit-flag-for-ELF64-entries.patch \
> > b/meta/recipes-core/glibc/ldconfig-native-2.12.1/add-64-bit-flag-for-ELF64-entries.patch
> > new file mode 100644
> > index 0000000..d42f7a1
> > --- /dev/null
> > +++ b/meta/recipes-core/glibc/ldconfig-native-2.12.1/add-64-bit-flag-for-ELF64-entries.patch
> > @@ -0,0 +1,103 @@
> > +From 9d62544090b08849218cd1fc52a36cdd5d90363e Mon Sep 17 00:00:00 2001
> > +From: Yuanjie Huang <yuanjie.huang at windriver.com>
> > +Date: Fri, 24 Apr 2015 03:29:31 +0000
> > +Subject: [PATCH] Add 64-bit flag for ELF64 entries.
> > +
> > +ldconfig-native was grepped from an old version of glibc, and its output
> > +lacks neccessary 64bit flag in entries.
> > +Due to this defect, ctypes.util.find_library() python function fails to
> > +detect any library due to the old file format that ldconfig-native
> > +creates. This fix sets architecture-dependent 64bit flags for 64-bit ELF.
> > +
> > +Signed-off-by: Yuanjie Huang <yuanjie.huang at windriver.com>
> > +---
> > + cache.c | 4 ++++
> > + ldconfig.h | 4 ++++
> > + readelflib.c | 34 ++++++++++++++++++++++++++++++++++
> > + 3 files changed, 42 insertions(+)
> > +
> > +diff --git a/cache.c b/cache.c
> > +index a904d44..c4f5411 100644
> > +--- a/cache.c
> > ++++ b/cache.c
> > +@@ -121,6 +121,10 @@ print_entry (const char *lib, int flag, unsigned int \
> > osversion, + break;
> > + case FLAG_MIPS64_LIBN64:
> > + fputs (",64bit", stdout);
> > ++ break;
> > ++ case FLAG_AARCH64_LIB64:
> > ++ fputs (",AArch64", stdout);
> > ++ break;
> > + case 0:
> > + break;
> > + default:
> > +diff --git a/ldconfig.h b/ldconfig.h
> > +index fadd5ec..6a8a750 100644
> > +--- a/ldconfig.h
> > ++++ b/ldconfig.h
> > +@@ -34,6 +34,10 @@
> > + #define FLAG_POWERPC_LIB64 0x0500
> > + #define FLAG_MIPS64_LIBN32 0x0600
> > + #define FLAG_MIPS64_LIBN64 0x0700
> > ++#define FLAG_X8664_LIBX32 0x0800
> > ++#define FLAG_ARM_LIBHF 0x0900
> > ++#define FLAG_AARCH64_LIB64 0x0a00
> > ++#define FLAG_ARM_LIBSF 0x0b00
> > +
> > + /* Name of auxiliary cache. */
> > + #define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache"
> > +diff --git a/readelflib.c b/readelflib.c
> > +index 0bf0de3..6e87afc 100644
> > +--- a/readelflib.c
> > ++++ b/readelflib.c
> > +@@ -28,6 +28,11 @@
> > +
> > + #include "endian_extra.h"
> > +
> > ++/* Work-around for old host that does not have AArch64 defined in elf.h. */
> > ++#ifndef EM_AARCH64
> > ++#define EM_AARCH64 183 /* ARM AARCH64 */
> > ++#endif
> > ++
> > + #undef check_ptr
> > + #define check_ptr(ptr) \
> > + do \
> > +@@ -290,6 +295,35 @@ process_elf_file64 (const char *file_name, const char *lib, \
> > int *flag, + libc5/libc6. */
> > + *flag = FLAG_ELF;
> > +
> > ++ /* Set flags according to information in ELF header to align with target
> > ++ ldconfig */
> > ++ switch (elf_header->e_machine)
> > ++ {
> > ++ case EM_IA_64:
> > ++ *flag |= FLAG_IA64_LIB64;
> > ++ break;
> > ++ case EM_X86_64:
> > ++ *flag |= FLAG_X8664_LIB64;
> > ++ break;
> > ++ case EM_S390:
> > ++ *flag |= FLAG_S390_LIB64;
> > ++ break;
> > ++ case EM_PPC64:
> > ++ *flag |= FLAG_POWERPC_LIB64;
> > ++ break;
> > ++ case EM_MIPS:
> > ++ case EM_MIPS_RS3_LE:
> > ++ *flag |= FLAG_MIPS64_LIBN64;
> > ++ break;
> > ++ case EM_AARCH64:
> > ++ *flag |= FLAG_AARCH64_LIB64;
> > ++ break;
> > ++ default:
> > ++ error(0, 0, "%s is a 64-bit ELF for unknown machine %lx\n",
> > ++ file_name, (long)elf_header->e_machine);
> > ++ break;
> > ++ }
> > ++
> > + loadaddr = -1;
> > + dynamic_addr = 0;
> > + dynamic_size = 0;
> > +--
> > +1.8.5.2.233.g932f7e4
> > +
> > diff --git a/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb \
> > b/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb index 7c34635..8a2ea90 100644
> > --- a/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
> > +++ b/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
> > @@ -12,6 +12,7 @@ SRC_URI = "file://ldconfig-native-2.12.1.tar.bz2 \
> > file://flag_fix.patch \
> > file://endianess-header.patch \
> > file://ldconfig-default-to-all-multilib-dirs.patch \
> > + file://add-64-bit-flag-for-ELF64-entries.patch \
> > "
> >
> > PR = "r2"
> The patch doesn't seem to apply against master? Master appears to have
> an additional patch than the list above?
>
> Cheers,
>
> Richard
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ldconfig-native-Add-64-bit-flag-for-ELF64-entries.patch
Type: text/x-patch
Size: 4995 bytes
Desc: not available
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20150430/cf1457c1/attachment.bin>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic