All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xi Ruoyao <xry111@xry111.site>
To: Jinyang He <hejinyang@loongson.cn>, loongarch@lists.linux.dev
Cc: linux-kernel@vger.kernel.org, WANG Xuerui <kernel@xen0n.name>,
	Huacai Chen <chenhuacai@kernel.org>
Subject: Re: [PATCH 3/5] LoongArch: Support relocation against _GLOBAL_OFFSET_TABLE_
Date: Thu, 28 Jul 2022 14:41:16 +0800	[thread overview]
Message-ID: <9a79a424a11339ae025539c38fe121104ff00804.camel@xry111.site> (raw)
In-Reply-To: <10c1e0f9-8409-a0f4-9b18-a5f56dfb14e1@loongson.cn>

On Thu, 2022-07-28 at 09:02 +0800, Jinyang He wrote:

> Hi, Ruoyao,
> 
> It is possible to create a symbol when linking, which means
> maybe we can add _GLOBAL_OFFSET_TABLE_ in 'module.lds.h'.
> What do you think about it?

Hi Jinyang,

I think you are right, this patch can be replaced with the following,
which is much simpler.

-- >8 --

With the stack-based relocations, the assembler emits three relocations
to push the PC-relative offset of a GOT entry:

    R_LARCH_SOP_PUSH_PCREL _GLOBAL_OFFSET_TABLE_
    R_LARCH_SOP_PUSH_GPREL foo
    R_LARCH_SOP_ADD

In normal relocatable ELF object files, "_GLOBAL_OFFSET_TABLE_" is
undefined in the symtab and the BFD linker generates it on final link.
Define it for kernel modules so we will be able to really use
R_LARCH_SOP_PUSH_GPREL relocation.

Note that we need to use "HIDDEN" to make it a local symbol because each
kernel module has its own GOT and the reference to it should not be
resolved to the GOT in the main kernel image.

Suggested-by: Jinyang He <hejinyang@loongson.cn>
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
---
 arch/loongarch/include/asm/module.lds.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/loongarch/include/asm/module.lds.h b/arch/loongarch/include/asm/module.lds.h
index 57bbd0cedd26..42b7cca0b947 100644
--- a/arch/loongarch/include/asm/module.lds.h
+++ b/arch/loongarch/include/asm/module.lds.h
@@ -4,5 +4,5 @@ SECTIONS {
 	. = ALIGN(4);
 	.plt : { BYTE(0) }
 	.plt.idx : { BYTE(0) }
-	.got : { BYTE(0) }
+	.got : { HIDDEN(_GLOBAL_OFFSET_TABLE_ = .); BYTE(0) }
 }
-- 
2.37.0

  reply	other threads:[~2022-07-28  6:41 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-27 16:24 [PATCH 0/5] LoongArch: Support new relocation types Xi Ruoyao
2022-07-27 16:26 ` [PATCH 1/5] LoongArch: Add section of GOT for kernel module Xi Ruoyao
     [not found]   ` <849f514e-f78a-72a2-b94e-6974074b75eb@loongson.cn>
2022-07-28  9:02     ` Xi Ruoyao
2022-07-28  9:21       ` Youling Tang
2022-07-28 10:53         ` Xi Ruoyao
2022-07-27 16:27 ` [PATCH 2/5] LoongArch: Support R_LARCH_SOP_PUSH_GPREL relocation type in " Xi Ruoyao
2022-07-27 16:28 ` [PATCH 3/5] LoongArch: Support relocation against _GLOBAL_OFFSET_TABLE_ Xi Ruoyao
2022-07-28  1:02   ` Jinyang He
2022-07-28  6:41     ` Xi Ruoyao [this message]
2022-07-28  9:14       ` Jinyang He
2022-07-28 10:57         ` Xi Ruoyao
2022-07-28 11:21           ` Jinyang He
2022-07-27 16:29 ` [PATCH 4/5] LoongArch: Stop using undocumented assembler options Xi Ruoyao
2022-07-28  9:46   ` Youling Tang
2022-07-28 10:58     ` Xi Ruoyao
2022-07-27 16:31 ` [PATCH 5/5] LoongArch: Support modules with new relocation types Xi Ruoyao
2022-07-27 16:46 ` [PATCH 0/5] LoongArch: Support " Xi Ruoyao

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=9a79a424a11339ae025539c38fe121104ff00804.camel@xry111.site \
    --to=xry111@xry111.site \
    --cc=chenhuacai@kernel.org \
    --cc=hejinyang@loongson.cn \
    --cc=kernel@xen0n.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=loongarch@lists.linux.dev \
    /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.