diff mbox series

Makefile: Force GNU hashing

Message ID 20230814043959.390101-1-mchitale@ventanamicro.com
State New
Headers show
Series Makefile: Force GNU hashing | expand

Commit Message

Mayuresh Chitale Aug. 14, 2023, 4:39 a.m. UTC
The Yocto QA step verifies that binaries and DSOs use DT_GNU_HASH rather than
DT_HASH. If the linker is called directly, then we need to make sure to pass in
the hashing style.

Signed-off-by: Jeff Law <jlaw@ventanamicro.com>
Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Andreas Schwab Aug. 14, 2023, 7:40 a.m. UTC | #1
On Aug 14 2023, Mayuresh Chitale wrote:

> The Yocto QA step verifies that binaries and DSOs use DT_GNU_HASH rather than
> DT_HASH. If the linker is called directly, then we need to make sure to pass in
> the hashing style.

Why does it matter?  The ultimate output is a flat binary.
Jeff Law Aug. 14, 2023, 1:06 p.m. UTC | #2
On 8/14/23 01:40, Andreas Schwab wrote:
> On Aug 14 2023, Mayuresh Chitale wrote:
> 
>> The Yocto QA step verifies that binaries and DSOs use DT_GNU_HASH rather than
>> DT_HASH. If the linker is called directly, then we need to make sure to pass in
>> the hashing style.
> 
> Why does it matter?  The ultimate output is a flat binary.
It matters because the Yocto QA step will fail.  It doesn't affect the 
behavior of the resulting image though, IIRC.

Jeff
Andreas Schwab Aug. 14, 2023, 1:08 p.m. UTC | #3
On Aug 14 2023, Jeff Law wrote:

> On 8/14/23 01:40, Andreas Schwab wrote:
>> On Aug 14 2023, Mayuresh Chitale wrote:
>> 
>>> The Yocto QA step verifies that binaries and DSOs use DT_GNU_HASH rather than
>>> DT_HASH. If the linker is called directly, then we need to make sure to pass in
>>> the hashing style.
>> Why does it matter?  The ultimate output is a flat binary.
> It matters because the Yocto QA step will fail.

Why does it even look at it?  It's only an intermediate build product.
Jeff Law Aug. 14, 2023, 1:11 p.m. UTC | #4
On 8/14/23 07:08, Andreas Schwab wrote:
> On Aug 14 2023, Jeff Law wrote:
> 
>> On 8/14/23 01:40, Andreas Schwab wrote:
>>> On Aug 14 2023, Mayuresh Chitale wrote:
>>>
>>>> The Yocto QA step verifies that binaries and DSOs use DT_GNU_HASH rather than
>>>> DT_HASH. If the linker is called directly, then we need to make sure to pass in
>>>> the hashing style.
>>> Why does it matter?  The ultimate output is a flat binary.
>> It matters because the Yocto QA step will fail.
> 
> Why does it even look at it?  It's only an intermediate build product.
Because that's how Yocto works?  Hell if I know and it wasn't something 
I wanted to spend a lot of time investigating.  Fighting with Yocto over 
something that doesn't change the behavior of the resulting image isn't 
something I felt was worth a lot of my time -- for various reasons.

jeff
Andreas Schwab Aug. 14, 2023, 1:15 p.m. UTC | #5
On Aug 14 2023, Jeff Law wrote:

> On 8/14/23 07:08, Andreas Schwab wrote:
>> On Aug 14 2023, Jeff Law wrote:
>> 
>>> On 8/14/23 01:40, Andreas Schwab wrote:
>>>> On Aug 14 2023, Mayuresh Chitale wrote:
>>>>
>>>>> The Yocto QA step verifies that binaries and DSOs use DT_GNU_HASH rather than
>>>>> DT_HASH. If the linker is called directly, then we need to make sure to pass in
>>>>> the hashing style.
>>>> Why does it matter?  The ultimate output is a flat binary.
>>> It matters because the Yocto QA step will fail.
>> Why does it even look at it?  It's only an intermediate build product.
> Because that's how Yocto works?

Whatever Yocto is, it must be doing something strange.
Jeff Law Aug. 14, 2023, 5:26 p.m. UTC | #6
On 8/14/23 07:15, Andreas Schwab wrote:
> On Aug 14 2023, Jeff Law wrote:
> 
>> On 8/14/23 07:08, Andreas Schwab wrote:
>>> On Aug 14 2023, Jeff Law wrote:
>>>
>>>> On 8/14/23 01:40, Andreas Schwab wrote:
>>>>> On Aug 14 2023, Mayuresh Chitale wrote:
>>>>>
>>>>>> The Yocto QA step verifies that binaries and DSOs use DT_GNU_HASH rather than
>>>>>> DT_HASH. If the linker is called directly, then we need to make sure to pass in
>>>>>> the hashing style.
>>>>> Why does it matter?  The ultimate output is a flat binary.
>>>> It matters because the Yocto QA step will fail.
>>> Why does it even look at it?  It's only an intermediate build product.
>> Because that's how Yocto works?
> 
> Whatever Yocto is, it must be doing something strange.
There are many things about Yocto that are strange at best.  IMHO Yocto 
is a necessary evil as part of the bring-up process but you want to get 
away from it as soon as possible :-)

If you've never worked with it, consider yourself lucky.  Think of it as 
a mini distro, but with a unique and complex way of describing the 
components of the distro and how they're patched/built, how qa works, etc.

jeff
Andreas Schwab Aug. 15, 2023, 7:17 a.m. UTC | #7
If they want GNU hashing, they should configure the linker accordingly,
instead of forcing their policy to everyone else.
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index 730dbd9..7fb8d2d 100644
--- a/Makefile
+++ b/Makefile
@@ -161,7 +161,7 @@  ifeq ($(LD_IS_LLD),y)
 RELAX_FLAG	=	-mno-relax
 USE_LD_FLAG	=	-fuse-ld=lld
 else
-USE_LD_FLAG	=	-fuse-ld=bfd
+USE_LD_FLAG	=	-fuse-ld=bfd -Wl,--hash-style=gnu
 endif
 
 # Check whether the linker supports creating PIEs