[OE-core] [PATCH 3/9] gcc-4.9: redefine dynamic linker for aarch64

Mark Hatle mark.hatle at windriver.com
Sat Sep 20 05:06:33 UTC 2014


On 9/19/14, 1:17 AM, Kang Kai wrote:
> On 2014年09月18日 22:13, Mark Hatle wrote:
>> On 9/18/14, 8:58 AM, Mark Hatle wrote:
>>> On 9/18/14, 2:19 AM, Khem Raj wrote:
>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>> Hash: SHA1
>>>>
>>>>
>>>>
>>>> On 9/16/14 8:06 AM, Kai Kang wrote:
>>>>> Redefine dynamic linker for aarch64 from /lib to /lib64.
>>>>>
>>>>> BASELIB of aarch64 has to be defined with 'lib64', then linker file
>>>>> ld-linux-aarch64.so.1 is installed into /lib64 rather than /lib. So
>>>>> update it here too.
>>>>
>>>> hmmm since the ldso name is different it can still live in /lib
>>>> and there will be ilp32 version ldso multilib as well later. can we
>>>> keep
>>>> ldso in /lib ?
>>>
>>> I thought the upstream definition (managed by ARM Ltd, and Linaro)
>>> for the ld.so
>>> had changed a few months back so that /lib64 was the 'standard'
>>> location for the
>>> ldso. Perhaps I'm mistaken?
>>
>> I did some research and I'm confused.. aarch64 is screwed up by
>> consensus apparently..
>>
>> Dynamic libraries live in /lib64, and the dynamic linker in /lib.. Whee!
>>
>> So ya, this patch isn't correct.. the dynamic linker needs to stay in
>> /lib. (Nothing says you can't sym/hardlink to lib64.. but it has to
>> refer to in in /lib for the ABI conformance.)
>
> OK. Keep dynamic linker in /lib and change libraries directory from
> /lib64 to /lib.

The dynamic linker (ldso) goes into '/lib'.  The library directory is /lib or 
/lib64.  (/lib64 when multilib arm is enabled.)  It's a bit odd, but it means 
that the link inside of gcc must be hard coded to the default /lib/... path.

The shared libraries would be referenced in the same way they are in the other 
distributions where either lib, lib64 (or any alternative can be set in the OE 
code.)

--Mark

> --Kai
>
>>
>> --Mark
>>
>>> --Mark
>>>
>>>>>
>>>>> Signed-off-by: Kai Kang <kai.kang at windriver.com>
>>>>> ---
>>>>> meta/recipes-devtools/gcc/gcc-4.9.inc | 1 +
>>>>> .../0056-redefine-dynamic-linker-for-aarch64.patch | 34
>>>>> ++++++++++++++++++++++
>>>>> 2 files changed, 35 insertions(+)
>>>>> create mode 100644
>>>>> meta/recipes-devtools/gcc/gcc-4.9/0056-redefine-dynamic-linker-for-aarch64.patch
>>>>>
>>>>> diff --git a/meta/recipes-devtools/gcc/gcc-4.9.inc
>>>>> b/meta/recipes-devtools/gcc/gcc-4.9.inc
>>>>> index 25778bd..c434a45 100644
>>>>> --- a/meta/recipes-devtools/gcc/gcc-4.9.inc
>>>>> +++ b/meta/recipes-devtools/gcc/gcc-4.9.inc
>>>>> @@ -70,6 +70,7 @@ SRC_URI = "\
>>>>> file://0053-gcc-fix-segfault-from-calling-free-on-non-malloc-d-a.patch
>>>>> \
>>>>> file://0054-gcc-Makefile.in-fix-parallel-building-failure.patch \
>>>>> file://0055-PR-rtl-optimization-61801.patch \
>>>>> + file://0056-redefine-dynamic-linker-for-aarch64.patch \
>>>>> "
>>>>> SRC_URI[md5sum] = "fddf71348546af523353bd43d34919c1"
>>>>> SRC_URI[sha256sum] =
>>>>> "d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e"
>>>>> diff --git
>>>>> a/meta/recipes-devtools/gcc/gcc-4.9/0056-redefine-dynamic-linker-for-aarch64.patch
>>>>> b/meta/recipes-devtools/gcc/gcc-4.9/0056-redefine-dynamic-linker-for-aarch64.patch
>>>>>
>>>>> new file mode 100644
>>>>> index 0000000..6933e2f
>>>>> --- /dev/null
>>>>> +++
>>>>> b/meta/recipes-devtools/gcc/gcc-4.9/0056-redefine-dynamic-linker-for-aarch64.patch
>>>>> @@ -0,0 +1,34 @@
>>>>> +From 8fbb60d89e569b68b13e4fd419e20640eb49cabc Mon Sep 17 00:00:00
>>>>> 2001
>>>>> +From: Kai Kang <kai.kang at windriver.com>
>>>>> +Date: Tue, 16 Sep 2014 16:01:31 +0800
>>>>> +Subject: [PATCH] Redefine dynamic linker for aarch64
>>>>> +
>>>>> +Redefine dynamic linker for aarch64 from /lib to /lib64.
>>>>> +
>>>>> +BASELIB of aarch64 has to be defined with 'lib64', then linker file
>>>>> +ld-linux-aarch64.so.1 is installed into /lib64 rather than /lib. So
>>>>> +update it here too.
>>>>> +
>>>>> +Upstream-Status: Pending
>>>>> +
>>>>> +Signed-off-by: Kai Kang <kai.kang at windriver.com>
>>>>> +---
>>>>> + gcc/config/aarch64/aarch64-linux.h | 2 +-
>>>>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>> +
>>>>> +diff --git a/gcc/config/aarch64/aarch64-linux.h
>>>>> b/gcc/config/aarch64/aarch64-linux.h
>>>>> +index a8f0771..2a6f06d 100644
>>>>> +--- a/gcc/config/aarch64/aarch64-linux.h
>>>>> ++++ b/gcc/config/aarch64/aarch64-linux.h
>>>>> +@@ -21,7 +21,7 @@
>>>>> + #ifndef GCC_AARCH64_LINUX_H
>>>>> + #define GCC_AARCH64_LINUX_H
>>>>> +
>>>>> +-#define GLIBC_DYNAMIC_LINKER
>>>>> "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
>>>>> ++#define GLIBC_DYNAMIC_LINKER
>>>>> "/lib64/ld-linux-aarch64%{mbig-endian:_be}.so.1"
>>>>> +
>>>>> + #define CPP_SPEC "%{pthread:-D_REENTRANT}"
>>>>> +
>>>>> +--
>>>>> +1.9.1
>>>>> +
>>>>>
>>>>
>>>> - --
>>>> - -Khem
>>>> -----BEGIN PGP SIGNATURE-----
>>>> Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
>>>> Comment: GPGTools - https://gpgtools.org
>>>>
>>>> iEYEARECAAYFAlQah2UACgkQuwUzVZGdMxT98wCghPbcAP/2xFgFn9Lv3Wisexa6
>>>> kHkAni6hykOqPq44VheOimbMbcimHaZD
>>>> =jpy6
>>>> -----END PGP SIGNATURE-----
>>>>
>>>
>>
>
>




More information about the Openembedded-core mailing list