[OE-core] [PATCH 1/1] ldconfig-native: Add 64-bit flag for ELF64 entries

Huang, Yuanjie yuanjie.huang at windriver.com
Wed Jul 1 08:58:26 UTC 2015


Hi Wenzong,

This package is created by OE-core from glibc source, so there's no 
upstream for it...

Best,
Yuanjie

On 07/01/2015 11:19 AM, wenzong fan wrote:
> Hi Yuanjie,
>
> Could you resend your patch with "Upstream-status:xxx"?
>
> Please send the V2 patch directly w/o attachment.
>
> Thanks
> Wenzong
>
> On 04/28/2015 03:46 PM, 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"
>>




More information about the Openembedded-core mailing list