All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Hindborg <a.hindborg@kernel.org>
To: "Janne Grunau" <j@jannau.net>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <benno.lossin@proton.me>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Masahiro Yamada" <masahiroy@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Nicolas Schier" <nicolas@fjasle.eu>,
	"Luis Chamberlain" <mcgrof@kernel.org>,
	rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Adam Bratschi-Kaye" <ark.email@gmail.com>,
	linux-kbuild@vger.kernel.org, "Petr Pavlu" <petr.pavlu@suse.com>,
	"Sami Tolvanen" <samitolvanen@google.com>,
	"Daniel Gomez" <da.gomez@samsung.com>,
	"Simona Vetter" <simona.vetter@ffwll.ch>,
	"Greg KH" <gregkh@linuxfoundation.org>,
	linux-modules@vger.kernel.org
Subject: Re: [PATCH v7 5/6] rust: str: add radix prefixed integer parsing functions
Date: Tue, 25 Feb 2025 06:54:45 +0100	[thread overview]
Message-ID: <87tt8iy3fe.fsf@kernel.org> (raw)
In-Reply-To: <20250224223032.GA615664@robin.jannau.net> (Janne Grunau's message of "Mon, 24 Feb 2025 23:30:32 +0100")

"Janne Grunau" <j@jannau.net> writes:

> On Tue, Feb 18, 2025 at 02:00:47PM +0100, Andreas Hindborg wrote:
>> Add the trait `ParseInt` for parsing string representations of integers
>> where the string representations are optionally prefixed by a radix
>> specifier. Implement the trait for the primitive integer types.
>>
>> Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
>> ---
>>  rust/kernel/str.rs | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 118 insertions(+)
>>
>> diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs
>> index db272d2198fcc..8b0d814b47f52 100644
>> --- a/rust/kernel/str.rs
>> +++ b/rust/kernel/str.rs
>> @@ -945,3 +945,121 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
>
> [...]
>
>> +    pub trait ParseInt: FromStrRadix + TryFrom<i128> {
>> +        /// Parse a string according to the description in [`Self`].
>> +        fn from_str(src: &BStr) -> Result<Self> {
>> +            match src.deref() {
>> +                [b'-', rest @ ..] => {
>> +                    let (radix, digits) = strip_radix(rest.as_ref());
>> +                    // 2's complement values range from -2^(b-1) to 2^(b-1)-1.
>> +                    // So if we want to parse negative numbers as positive and
>> +                    // later multiply by -1, we have to parse into a larger
>> +                    // integer. We choose i128 as sufficiently large.
>> +                    let val = i128::from_str_radix(
>
> The usage of i128 causes here following link errors on arm64 with
> "rustc 1.84.1 (e71f9a9a9 2025-01-27) (Fedora 1.84.1-1.fc41)"
>
> | ld: rust/kernel.o: in function `<i128>::from_str_radix':
> | /usr/lib/rustlib/src/rust/library/core/src/num/mod.rs:1563:(.text+0x3bc): undefined reference to `__muloti4'
> | ld: /usr/lib/rustlib/src/rust/library/core/src/num/mod.rs:1563:(.text+0x440): undefined reference to `__muloti4'
> | ld: rust/kernel.o: in function `<i128>::overflowing_mul':
> | /usr/lib/rustlib/src/rust/library/core/src/num/int_macros.rs:2517:(.text+0x4b4): undefined reference to `__muloti4'
> | ld: /usr/lib/rustlib/src/rust/library/core/src/num/int_macros.rs:2517:(.text+0x534): undefined reference to `__muloti4'
>
> The errors go away after exchanging i128 with i64 (while breaking the
> parsing for large values).

Thanks for reporting! I will have to find a better way to fix this issue
then.


Best regards,
Andreas Hindborg




  parent reply	other threads:[~2025-02-25  5:55 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <JKqjFnoTeEbURcTQ5PpmUZWDS2VMEt0eZl68dWkgk3e8ROFpb2eTWH2mStKkkXJw__Ql5DdYvIR9I7qYks-lag==@protonmail.internalid>
2025-02-18 13:00 ` [PATCH v7 0/6] rust: extend `module!` macro with integer parameter support Andreas Hindborg
2025-02-18 13:00   ` [PATCH v7 1/6] rust: str: implement `PartialEq` for `BStr` Andreas Hindborg
2025-02-21 15:51     ` Daniel Almeida
2025-02-18 13:00   ` [PATCH v7 2/6] rust: str: implement `Index` " Andreas Hindborg
2025-02-21 15:58     ` Daniel Almeida
2025-02-24 13:50     ` Fiona Behrens
2025-02-18 13:00   ` [PATCH v7 3/6] rust: str: implement `AsRef<BStr>` for `[u8]` and `BStr` Andreas Hindborg
2025-02-21 16:01     ` Daniel Almeida
2025-02-21 16:15       ` Daniel Almeida
2025-02-21 18:52     ` Gary Guo
2025-02-18 13:00   ` [PATCH v7 4/6] rust: str: implement `strip_prefix` for `BStr` Andreas Hindborg
2025-02-21 16:14     ` Daniel Almeida
2025-02-18 13:00   ` [PATCH v7 5/6] rust: str: add radix prefixed integer parsing functions Andreas Hindborg
2025-02-24 13:34     ` Daniel Almeida
2025-02-24 13:43       ` Andreas Hindborg
2025-02-24 22:30     ` Janne Grunau
2025-02-25  1:51       ` Miguel Ojeda
2025-02-25  8:07         ` Andreas Hindborg
2025-02-25  5:54       ` Andreas Hindborg [this message]
2025-02-18 13:00   ` [PATCH v7 6/6] rust: add parameter support to the `module!` macro Andreas Hindborg
2025-02-24 15:28     ` Daniel Almeida
2025-02-25  8:02       ` Andreas Hindborg
2025-02-25 15:14     ` Gary Guo
2025-02-25 15:35       ` Andreas Hindborg
2025-02-21 15:45   ` [PATCH v7 0/6] rust: extend `module!` macro with integer parameter support Daniel Almeida
2025-02-22  8:49     ` Andreas Hindborg
2025-02-24 11:27   ` Andreas Hindborg
2025-02-25 10:22     ` Petr Pavlu
2025-02-25 11:54       ` Miguel Ojeda
2025-02-27 14:55         ` Petr Pavlu
2025-02-27 15:37           ` Miguel Ojeda

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87tt8iy3fe.fsf@kernel.org \
    --to=a.hindborg@kernel.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=ark.email@gmail.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=da.gomez@samsung.com \
    --cc=gary@garyguo.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=j@jannau.net \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=nathan@kernel.org \
    --cc=nicolas@fjasle.eu \
    --cc=ojeda@kernel.org \
    --cc=petr.pavlu@suse.com \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=samitolvanen@google.com \
    --cc=simona.vetter@ffwll.ch \
    --cc=tmgross@umich.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.