lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <mhng-66039f92-bd1a-4314-a728-3fa8db3f3e58@palmer-ri-x1c9>
Date: Wed, 30 Apr 2025 09:29:12 -0700 (PDT)
From: Palmer Dabbelt <palmer@...belt.com>
To: Conor Dooley <conor@...nel.org>
CC: ardb+git@...gle.com, linux-kernel@...r.kernel.org, linux-kbuild@...r.kernel.org,
  x86@...nel.org, Ard Biesheuvel <ardb@...nel.org>, masahiroy@...nel.org, mingo@...nel.org
Subject:     Re: [PATCH v2 3/4] Kbuild: Create intermediate vmlinux build with relocations preserved

On Wed, 30 Apr 2025 09:03:56 PDT (-0700), Conor Dooley wrote:
> +CC Palmer
>
> On Tue, Mar 11, 2025 at 12:06:20PM +0100, Ard Biesheuvel wrote:
>> From: Ard Biesheuvel <ardb@...nel.org>
>> 
>> The imperative paradigm used to build vmlinux, extract some info from it
>> or perform some checks on it, and subsequently modify it again goes
>> against the declarative paradigm that is usually employed for defining
>> make rules.
>> 
>> In particular, the Makefile.postlink files that consume their input via
>> an output rule result in some dodgy logic in the decompressor makefiles
>> for RISC-V and x86, given that the vmlinux.relocs input file needed to
>> generate the arch-specific relocation tables may not exist or be out of
>> date, but cannot be constructed using the ordinary Make dependency based
>> rules, because the info needs to be extracted while vmlinux is in its
>> ephemeral, non-stripped form.
>> 
>> So instead, for architectures that require the static relocations that
>> are emitted into vmlinux when passing --emit-relocs to the linker, and
>> are subsequently stripped out again, introduce an intermediate vmlinux
>> target called vmlinux.unstripped, and organize the reset of the build
>> logic accordingly:
>> 
>> - vmlinux.unstripped is created only once, and not updated again
>> - build rules under arch/*/boot can depend on vmlinux.unstripped without
>>   running the risk of the data disappearing or being out of date
>> - the final vmlinux generated by the build is not bloated with static
>>   relocations that are never needed again after the build completes.
>> 
>> Signed-off-by: Ard Biesheuvel <ardb@...nel.org>
>
> Delayed report since I have been slacking on my testing, but looks like
> this has broken boot for me on riscv (mpfs-icicle-kit), no output after
> "Starting kernel", defconfig should be:
> https://raw.githubusercontent.com/ConchuOD/riscv-env/refs/heads/dev/conf/defconfig
> Toolchain is llvm 16. LMK if there's some salient info missing.

Thanks for tracking this down. It's not manifesting on my end, but we 
talked this morning about this maybe being some config-specific issue.  
I'm also on LLVM 18.

I'm going to start poking around with the configs...

>
> Cheers,
> Conor.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ