From: wenzong fan <wenzong.fan@windriver.com>
To: "Huang, Yuanjie" <yuanjie.huang@windriver.com>,
<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH 1/1] ldconfig-native: Add 64-bit flag for ELF64 entries
Date: Wed, 1 Jul 2015 17:29:26 +0800 [thread overview]
Message-ID: <5593B2F6.8010802@windriver.com> (raw)
In-Reply-To: <5593ABB2.5020708@windriver.com>
On 07/01/2015 04:58 PM, Huang, Yuanjie wrote:
> Hi Wenzong,
>
> This package is created by OE-core from glibc source, so there's no
> upstream for it...
It should include "Upstream-status: Inappropriate [...]" if there's no
upstream, please refer to:
http://openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations
Thanks
Wenzong
>
> 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@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@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@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@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"
>>>
>
>
>
prev parent reply other threads:[~2015-07-01 9:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-28 7:46 [PATCH 1/1] ldconfig-native: Add 64-bit flag for ELF64 entries Yuanjie Huang
2015-04-28 11:08 ` Richard Purdie
2015-04-30 2:13 ` Huang, Yuanjie
2015-07-01 3:19 ` wenzong fan
2015-07-01 8:58 ` Huang, Yuanjie
2015-07-01 9:29 ` wenzong fan [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5593B2F6.8010802@windriver.com \
--to=wenzong.fan@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=yuanjie.huang@windriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox