[PATCH] Makefile: Use relative paths for debugging symbols.

Vagrant Cascadian vagrant at reproducible-builds.org
Sun Aug 28 23:46:30 CEST 2022


On 2022-08-28, Vagrant Cascadian wrote:
> On 2022-08-28, Rasmus Villemoes wrote:
>> On 26/08/2022 22.59, Tom Rini wrote:
>>> On Thu, Aug 18, 2022 at 10:31:34AM -0700, Vagrant Cascadian wrote:
>>>> From: Vagrant Cascadian <vagrant at reproducible-builds.org>
>>>>
>>>> The KBUILD_CFLAGS and KBUILD_AFLAGS variables are adjusted to use
>>>> -ffile-prefix-map and --debug-prefix-map, respectively, to use
>>>> relative paths for occurrences of __FILE__ and debug paths.
>>>>
>>>> This enables reproducible builds regardless of the absolute path to
>>>> the build directory:
>>>>
>>>>   https://reproducible-builds.org/docs/build-path/
>>>>
>>>> Signed-off-by: Vagrant Cascadian <vagrant at reproducible-builds.org>
>>>> Acked-by: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
>>> 
>>> This needs some sort of clang check and then perhaps different flag
>>> used? How does the linux kernel handle this?
>>
>> Well, interestingly it seems that the kernel doesn't do anything like
>> this for debug info, they only apply the -fmacro-prefix-map. Which one
>> should probably raise with them at some point.
>>
>> It seems we're not actually calling gas directly, but always invokes
>> $(CC) whatever that may be to compile assembler files. So I think the
>> right fix is to simply pass the same -ffile-prefix-map in both
>> KBUILD_CFLAGS as in KBUILD_AFLAGS - and if there's some variable that
>> ends up being included in both automatically, then just adding it there
>> should do the trick.
>
> I tried just adding -ffile-prefix-map and that helped, but was not
> sufficient to solve the reproducibility issues. It also needs the
> --debug-prefix-map to make it the assembly code build reproducibly.
>
> Though I guess I didn't try adding -ffile-prefix-map to KBUILD_AFLAGS,
> now that I think about it... will test that too, thanks!

Nope, that built, but not reproducibly...

I was able to guard it with "as-option":

  +KBUILD_AFLAGS   += $(call as-option,--debug-prefix-map=$(srctree)/=)

And it builds reproducibly for me.

That should be sufficient to fix build failures with clang... or is
there a more appropriate guard to use? I am not familiar with clang and
it's relevent tools to know if there is a relevent comprable option to
--debug-prefix-map.


live well,
  vagrant
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20220828/6dfefac2/attachment.sig>


More information about the U-Boot mailing list