2023-06-08 14:38:42

by Masahiro Yamada

[permalink] [raw]
Subject: [PATCH v7 10/11] modpost: show offset from symbol for section mismatch warnings

Currently, modpost only shows the symbol names and section names, so it
repeats the same message if there are multiple relocations in the same
symbol. It is common the relocation spans across multiple instructions.

It is better to show the offset from the symbol.

Signed-off-by: Masahiro Yamada <[email protected]>
---

scripts/mod/modpost.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 85df3f3ba9ee..40967ed816df 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1147,8 +1147,8 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf,

sec_mismatch_count++;

- warn("%s: section mismatch in reference: %s (section: %s) -> %s (section: %s)\n",
- modname, fromsym, fromsec, tosym, tosec);
+ warn("%s: section mismatch in reference: %s+0x%x (section: %s) -> %s (section: %s)\n",
+ modname, fromsym, (unsigned int)(faddr - from->st_value), fromsec, tosym, tosec);

if (mismatch->mismatch == EXTABLE_TO_NON_TEXT) {
if (match(tosec, mismatch->bad_tosec))
--
2.39.2



2023-06-09 22:30:41

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [PATCH v7 10/11] modpost: show offset from symbol for section mismatch warnings

On Thu, Jun 8, 2023 at 7:24 AM Masahiro Yamada <[email protected]> wrote:
>
> Currently, modpost only shows the symbol names and section names, so it
> repeats the same message if there are multiple relocations in the same
> symbol. It is common the relocation spans across multiple instructions.
>
> It is better to show the offset from the symbol.
>
> Signed-off-by: Masahiro Yamada <[email protected]>

Thanks for the patch!
Reviewed-by: Nick Desaulniers <[email protected]>

> ---
>
> scripts/mod/modpost.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index 85df3f3ba9ee..40967ed816df 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -1147,8 +1147,8 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf,
>
> sec_mismatch_count++;
>
> - warn("%s: section mismatch in reference: %s (section: %s) -> %s (section: %s)\n",
> - modname, fromsym, fromsec, tosym, tosec);
> + warn("%s: section mismatch in reference: %s+0x%x (section: %s) -> %s (section: %s)\n",
> + modname, fromsym, (unsigned int)(faddr - from->st_value), fromsec, tosym, tosec);
>
> if (mismatch->mismatch == EXTABLE_TO_NON_TEXT) {
> if (match(tosec, mismatch->bad_tosec))
> --
> 2.39.2
>


--
Thanks,
~Nick Desaulniers