[Bug 2082636] Re: [SRU] dpkg: backport frame-pointer enabling mechanism for Rust

Zixing Liu 2082636 at bugs.launchpad.net
Tue Nov 26 18:05:27 UTC 2024


> Ok.

> rustc in noble is 1.75, so is affected.

> And it's build with llvm 17, which is also affected.

> what is the impact of llvm not producing proper backchain-saving
logic?

The IBM Z system is funny because the backchain is inside the stack
parameter region (reference:
https://github.com/IBM/s390x-abi/blob/4e38ad9c8a883abc0ca248c2c6d51981ce7cbe02/lzsabi.tex#L2728),
so if the backchain-saving logic is broken, the program itself is
unaffected (since the parameter region will always have the backchain
space, regardless of whether the backchain is enabled or not).

The worst-case scenario is that blockchain data is invalid or missing,
which will affect debugging tools that do not understand `eh_frame` data
(which is in DWARF format). According to IBM, at least on Linux systems,
these tools are extremely rare on s390x.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to dpkg in Ubuntu.
https://bugs.launchpad.net/bugs/2082636

Title:
  [SRU] dpkg: backport frame-pointer enabling mechanism for Rust

Status in dpkg package in Ubuntu:
  New

Bug description:
  [ Impact ]

   * On Noble, dpkg scripts could not produce Rust binaries with frame-
  pointer enabled.

  [ Test Plan ]

   * Build a Rust binary package like ripgrep and you will not find frame-pointers being used in the binary.
   * Since LLVM could inline and choose to optimize frame pointers away in some cases, you will need to check the disassembly of the program around the function prologue to see if the frame pointer register is correctly saved to stack (rbp/ebp on x86 architecture). You can use the script provided in https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/2082636/+attachment/5840384/+files/check-rust-fp.py to check if the frame pointers have been enabled.

  [ Where problems could occur ]

   * On older Rust versions (Rust <= 1.80), it is known that LLVM on s390x sometimes can produce incorrect warnings about how the "backchain" feature does not exist.
   * On older LLVM versions (LLVM <= 17), LLVM may not produce correct backchain saving logic inside the function prologue.

  [ Other Info ]

   * This change is mandatory to enable Rust-related packages with
  frame-pointers during the build.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/2082636/+subscriptions




More information about the foundations-bugs mailing list