Message ID | 20230814043959.390101-1-mchitale@ventanamicro.com |
---|---|
State | New |
Headers | show |
Series | Makefile: Force GNU hashing | expand |
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.
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
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.
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
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.
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
If they want GNU hashing, they should configure the linker accordingly, instead of forcing their policy to everyone else.
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