Re: [PATCH] vdso: Improve cmd_vdso_check to check all dynamic relocations

2022-12-18 Thread Fangrui Song
On Sun, Dec 4, 2022 at 8:58 AM Christophe Leroy
 wrote:
>
>
>
> Le 04/12/2022 à 05:50, Fangrui Song a écrit :
> > On Mon, Nov 14, 2022 at 4:46 PM Fangrui Song  wrote:
> >>
> >> On 2022-11-14, Christophe Leroy wrote:
> >>>
> >>>
> >>> Le 28/09/2022 à 07:25, Fangrui Song a écrit :
>  On Sat, Sep 10, 2022 at 12:53 AM Fangrui Song  wrote:
> >
> > On 2022-08-30, Fangrui Song wrote:
> >> The actual intention is that no dynamic relocation exists. However, 
> >> some
> >> GNU ld ports produce unneeded R_*_NONE. (If a port is not care enough 
> >> to
> >> determine the exact .rel[a].dyn size, the trailing zeros become 
> >> R_*_NONE
> >> relocations. E.g. powerpc64le ld as of 2.38 has the issue with
> >> defconfig.) R_*_NONE are generally no-op in the dynamic loaders. So 
> >> just
> >> ignore them.
> >>
> >> With the change, we can remove ARCH_REL_TYPE_ABS. ARCH_REL_TYPE_ABS is 
> >> a
> >> bit misnomer as ports may check RELAVETIVE/GLOB_DAT/JUMP_SLOT which are
> >> not called "absolute relocations". (The patch is motivated by the arm64
> >> port missing R_AARCH64_RELATIVE.)
> >>
> >> While here, replace "egrep" with "grep" as "egrep" is deprecated in GNU
> >> grep 3.7.
> >>
> >> Signed-off-by: Fangrui Song 
> >> ---
> >> [...]
> >>
> >
> > Ping.
> 
>  Ping^2 :)
> >>>
> >>> Can you explain which ARCH_REL_TYPE_ABS can be removed with this change ?
> >>> How is the verification done if ARCH_REL_TYPE_ABS is removed ?
> >>
> >> All ARCH_REL_TYPE_ABS relocation types can be removed. As explained, the
> >> real intention is to check no dynamic relocation, and this is done by
> >> the new
>
> Well, there was a typo in my question, I wanted to ask 'why', not 'which'.
>
> >>
> >> cmd_vdso_check = if $(READELF) -rW $@ | grep -v _NONE | grep -q 
> >> "R_\w*_"; \
> >>
> >> in this patch.
> >>
> >> grep -v _NONE is to work around some GNU ld ports (and likely older 
> >> releases
> >> of some ports even if their latest versions are fixed) which produce
> >> unneeded R_*_NONE dynamic relocations.
> >
> > Ping :)
>
> Ok, that seems to work on powerpc.
>
> Reviewed-by: Christophe Leroy 

Thanks. Can a maintainer pick up this commit?


Re: [PATCH] vdso: Improve cmd_vdso_check to check all dynamic relocations

2022-12-04 Thread Christophe Leroy


Le 04/12/2022 à 05:50, Fangrui Song a écrit :
> On Mon, Nov 14, 2022 at 4:46 PM Fangrui Song  wrote:
>>
>> On 2022-11-14, Christophe Leroy wrote:
>>>
>>>
>>> Le 28/09/2022 à 07:25, Fangrui Song a écrit :
 On Sat, Sep 10, 2022 at 12:53 AM Fangrui Song  wrote:
>
> On 2022-08-30, Fangrui Song wrote:
>> The actual intention is that no dynamic relocation exists. However, some
>> GNU ld ports produce unneeded R_*_NONE. (If a port is not care enough to
>> determine the exact .rel[a].dyn size, the trailing zeros become R_*_NONE
>> relocations. E.g. powerpc64le ld as of 2.38 has the issue with
>> defconfig.) R_*_NONE are generally no-op in the dynamic loaders. So just
>> ignore them.
>>
>> With the change, we can remove ARCH_REL_TYPE_ABS. ARCH_REL_TYPE_ABS is a
>> bit misnomer as ports may check RELAVETIVE/GLOB_DAT/JUMP_SLOT which are
>> not called "absolute relocations". (The patch is motivated by the arm64
>> port missing R_AARCH64_RELATIVE.)
>>
>> While here, replace "egrep" with "grep" as "egrep" is deprecated in GNU
>> grep 3.7.
>>
>> Signed-off-by: Fangrui Song 
>> ---
>> [...]
>>
>
> Ping.

 Ping^2 :)
>>>
>>> Can you explain which ARCH_REL_TYPE_ABS can be removed with this change ?
>>> How is the verification done if ARCH_REL_TYPE_ABS is removed ?
>>
>> All ARCH_REL_TYPE_ABS relocation types can be removed. As explained, the
>> real intention is to check no dynamic relocation, and this is done by
>> the new

Well, there was a typo in my question, I wanted to ask 'why', not 'which'.

>>
>> cmd_vdso_check = if $(READELF) -rW $@ | grep -v _NONE | grep -q 
>> "R_\w*_"; \
>>
>> in this patch.
>>
>> grep -v _NONE is to work around some GNU ld ports (and likely older releases
>> of some ports even if their latest versions are fixed) which produce
>> unneeded R_*_NONE dynamic relocations.
> 
> Ping :)

Ok, that seems to work on powerpc.

Reviewed-by: Christophe Leroy 


Re: [PATCH] vdso: Improve cmd_vdso_check to check all dynamic relocations

2022-12-03 Thread Fangrui Song
On Mon, Nov 14, 2022 at 4:46 PM Fangrui Song  wrote:
>
> On 2022-11-14, Christophe Leroy wrote:
> >
> >
> >Le 28/09/2022 à 07:25, Fangrui Song a écrit :
> >> On Sat, Sep 10, 2022 at 12:53 AM Fangrui Song  wrote:
> >>>
> >>> On 2022-08-30, Fangrui Song wrote:
>  The actual intention is that no dynamic relocation exists. However, some
>  GNU ld ports produce unneeded R_*_NONE. (If a port is not care enough to
>  determine the exact .rel[a].dyn size, the trailing zeros become R_*_NONE
>  relocations. E.g. powerpc64le ld as of 2.38 has the issue with
>  defconfig.) R_*_NONE are generally no-op in the dynamic loaders. So just
>  ignore them.
> 
>  With the change, we can remove ARCH_REL_TYPE_ABS. ARCH_REL_TYPE_ABS is a
>  bit misnomer as ports may check RELAVETIVE/GLOB_DAT/JUMP_SLOT which are
>  not called "absolute relocations". (The patch is motivated by the arm64
>  port missing R_AARCH64_RELATIVE.)
> 
>  While here, replace "egrep" with "grep" as "egrep" is deprecated in GNU
>  grep 3.7.
> 
>  Signed-off-by: Fangrui Song 
>  ---
>  [...]
> 
> >>>
> >>> Ping.
> >>
> >> Ping^2 :)
> >
> >Can you explain which ARCH_REL_TYPE_ABS can be removed with this change ?
> >How is the verification done if ARCH_REL_TYPE_ABS is removed ?
>
> All ARCH_REL_TYPE_ABS relocation types can be removed. As explained, the
> real intention is to check no dynamic relocation, and this is done by
> the new
>
>cmd_vdso_check = if $(READELF) -rW $@ | grep -v _NONE | grep -q "R_\w*_"; \
>
> in this patch.
>
> grep -v _NONE is to work around some GNU ld ports (and likely older releases
> of some ports even if their latest versions are fixed) which produce
> unneeded R_*_NONE dynamic relocations.

Ping :)


Re: [PATCH] vdso: Improve cmd_vdso_check to check all dynamic relocations

2022-11-14 Thread Fangrui Song

On 2022-11-14, Christophe Leroy wrote:



Le 28/09/2022 à 07:25, Fangrui Song a écrit :

On Sat, Sep 10, 2022 at 12:53 AM Fangrui Song  wrote:


On 2022-08-30, Fangrui Song wrote:

The actual intention is that no dynamic relocation exists. However, some
GNU ld ports produce unneeded R_*_NONE. (If a port is not care enough to
determine the exact .rel[a].dyn size, the trailing zeros become R_*_NONE
relocations. E.g. powerpc64le ld as of 2.38 has the issue with
defconfig.) R_*_NONE are generally no-op in the dynamic loaders. So just
ignore them.

With the change, we can remove ARCH_REL_TYPE_ABS. ARCH_REL_TYPE_ABS is a
bit misnomer as ports may check RELAVETIVE/GLOB_DAT/JUMP_SLOT which are
not called "absolute relocations". (The patch is motivated by the arm64
port missing R_AARCH64_RELATIVE.)

While here, replace "egrep" with "grep" as "egrep" is deprecated in GNU
grep 3.7.

Signed-off-by: Fangrui Song 
---
[...]



Ping.


Ping^2 :)


Can you explain which ARCH_REL_TYPE_ABS can be removed with this change ?
How is the verification done if ARCH_REL_TYPE_ABS is removed ?


All ARCH_REL_TYPE_ABS relocation types can be removed. As explained, the
real intention is to check no dynamic relocation, and this is done by
the new

  cmd_vdso_check = if $(READELF) -rW $@ | grep -v _NONE | grep -q "R_\w*_"; \

in this patch.

grep -v _NONE is to work around some GNU ld ports (and likely older releases
of some ports even if their latest versions are fixed) which produce
unneeded R_*_NONE dynamic relocations.


Re: [PATCH] vdso: Improve cmd_vdso_check to check all dynamic relocations

2022-11-14 Thread Christophe Leroy


Le 28/09/2022 à 07:25, Fangrui Song a écrit :
> On Sat, Sep 10, 2022 at 12:53 AM Fangrui Song  wrote:
>>
>> On 2022-08-30, Fangrui Song wrote:
>>> The actual intention is that no dynamic relocation exists. However, some
>>> GNU ld ports produce unneeded R_*_NONE. (If a port is not care enough to
>>> determine the exact .rel[a].dyn size, the trailing zeros become R_*_NONE
>>> relocations. E.g. powerpc64le ld as of 2.38 has the issue with
>>> defconfig.) R_*_NONE are generally no-op in the dynamic loaders. So just
>>> ignore them.
>>>
>>> With the change, we can remove ARCH_REL_TYPE_ABS. ARCH_REL_TYPE_ABS is a
>>> bit misnomer as ports may check RELAVETIVE/GLOB_DAT/JUMP_SLOT which are
>>> not called "absolute relocations". (The patch is motivated by the arm64
>>> port missing R_AARCH64_RELATIVE.)
>>>
>>> While here, replace "egrep" with "grep" as "egrep" is deprecated in GNU
>>> grep 3.7.
>>>
>>> Signed-off-by: Fangrui Song 
>>> ---
>>> [...]
>>>
>>
>> Ping.
> 
> Ping^2 :)

Can you explain which ARCH_REL_TYPE_ABS can be removed with this change ?
How is the verification done if ARCH_REL_TYPE_ABS is removed ?


Re: [PATCH] vdso: Improve cmd_vdso_check to check all dynamic relocations

2022-09-27 Thread Fangrui Song
On Sat, Sep 10, 2022 at 12:53 AM Fangrui Song  wrote:
>
> On 2022-08-30, Fangrui Song wrote:
> >The actual intention is that no dynamic relocation exists. However, some
> >GNU ld ports produce unneeded R_*_NONE. (If a port is not care enough to
> >determine the exact .rel[a].dyn size, the trailing zeros become R_*_NONE
> >relocations. E.g. powerpc64le ld as of 2.38 has the issue with
> >defconfig.) R_*_NONE are generally no-op in the dynamic loaders. So just
> >ignore them.
> >
> >With the change, we can remove ARCH_REL_TYPE_ABS. ARCH_REL_TYPE_ABS is a
> >bit misnomer as ports may check RELAVETIVE/GLOB_DAT/JUMP_SLOT which are
> >not called "absolute relocations". (The patch is motivated by the arm64
> >port missing R_AARCH64_RELATIVE.)
> >
> >While here, replace "egrep" with "grep" as "egrep" is deprecated in GNU
> >grep 3.7.
> >
> >Signed-off-by: Fangrui Song 
> >---
> >[...]
> >
>
> Ping.

Ping^2 :)


Re: [PATCH] vdso: Improve cmd_vdso_check to check all dynamic relocations

2022-09-10 Thread Fangrui Song

On 2022-08-30, Fangrui Song wrote:

The actual intention is that no dynamic relocation exists. However, some
GNU ld ports produce unneeded R_*_NONE. (If a port is not care enough to
determine the exact .rel[a].dyn size, the trailing zeros become R_*_NONE
relocations. E.g. powerpc64le ld as of 2.38 has the issue with
defconfig.) R_*_NONE are generally no-op in the dynamic loaders. So just
ignore them.

With the change, we can remove ARCH_REL_TYPE_ABS. ARCH_REL_TYPE_ABS is a
bit misnomer as ports may check RELAVETIVE/GLOB_DAT/JUMP_SLOT which are
not called "absolute relocations". (The patch is motivated by the arm64
port missing R_AARCH64_RELATIVE.)

While here, replace "egrep" with "grep" as "egrep" is deprecated in GNU
grep 3.7.

Signed-off-by: Fangrui Song 
---
[...]



Ping.


[PATCH] vdso: Improve cmd_vdso_check to check all dynamic relocations

2022-08-30 Thread Fangrui Song
The actual intention is that no dynamic relocation exists. However, some
GNU ld ports produce unneeded R_*_NONE. (If a port is not care enough to
determine the exact .rel[a].dyn size, the trailing zeros become R_*_NONE
relocations. E.g. powerpc64le ld as of 2.38 has the issue with
defconfig.) R_*_NONE are generally no-op in the dynamic loaders. So just
ignore them.

With the change, we can remove ARCH_REL_TYPE_ABS. ARCH_REL_TYPE_ABS is a
bit misnomer as ports may check RELAVETIVE/GLOB_DAT/JUMP_SLOT which are
not called "absolute relocations". (The patch is motivated by the arm64
port missing R_AARCH64_RELATIVE.)

While here, replace "egrep" with "grep" as "egrep" is deprecated in GNU
grep 3.7.

Signed-off-by: Fangrui Song 
---
 arch/arm/vdso/Makefile|  3 ---
 arch/arm64/kernel/vdso/Makefile   |  3 ---
 arch/arm64/kernel/vdso32/Makefile |  3 ---
 arch/csky/kernel/vdso/Makefile|  3 ---
 arch/loongarch/vdso/Makefile  |  3 ---
 arch/mips/vdso/Makefile   |  3 ---
 arch/powerpc/kernel/vdso/Makefile |  1 -
 arch/riscv/kernel/vdso/Makefile   |  3 ---
 arch/s390/kernel/vdso32/Makefile  |  2 --
 arch/s390/kernel/vdso64/Makefile  |  2 --
 arch/x86/entry/vdso/Makefile  |  4 
 lib/vdso/Makefile | 13 -
 12 files changed, 4 insertions(+), 39 deletions(-)

diff --git a/arch/arm/vdso/Makefile b/arch/arm/vdso/Makefile
index 8ca1c9f262a2..5ebd2e6f7d46 100644
--- a/arch/arm/vdso/Makefile
+++ b/arch/arm/vdso/Makefile
@@ -1,8 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
 
-# Absolute relocation type $(ARCH_REL_TYPE_ABS) needs to be defined before
-# the inclusion of generic Makefile.
-ARCH_REL_TYPE_ABS := R_ARM_JUMP_SLOT|R_ARM_GLOB_DAT|R_ARM_ABS32
 include $(srctree)/lib/vdso/Makefile
 
 hostprogs := vdsomunge
diff --git a/arch/arm64/kernel/vdso/Makefile b/arch/arm64/kernel/vdso/Makefile
index bafbf78fab77..66dc4f338a86 100644
--- a/arch/arm64/kernel/vdso/Makefile
+++ b/arch/arm64/kernel/vdso/Makefile
@@ -6,9 +6,6 @@
 # Heavily based on the vDSO Makefiles for other archs.
 #
 
-# Absolute relocation type $(ARCH_REL_TYPE_ABS) needs to be defined before
-# the inclusion of generic Makefile.
-ARCH_REL_TYPE_ABS := R_AARCH64_JUMP_SLOT|R_AARCH64_GLOB_DAT|R_AARCH64_ABS64
 include $(srctree)/lib/vdso/Makefile
 
 obj-vdso := vgettimeofday.o note.o sigreturn.o
diff --git a/arch/arm64/kernel/vdso32/Makefile 
b/arch/arm64/kernel/vdso32/Makefile
index 36c8f66cad25..48d713d59ef2 100644
--- a/arch/arm64/kernel/vdso32/Makefile
+++ b/arch/arm64/kernel/vdso32/Makefile
@@ -3,9 +3,6 @@
 # Makefile for vdso32
 #
 
-# Absolute relocation type $(ARCH_REL_TYPE_ABS) needs to be defined before
-# the inclusion of generic Makefile.
-ARCH_REL_TYPE_ABS := R_ARM_JUMP_SLOT|R_ARM_GLOB_DAT|R_ARM_ABS32
 include $(srctree)/lib/vdso/Makefile
 
 # Same as cc-*option, but using CC_COMPAT instead of CC
diff --git a/arch/csky/kernel/vdso/Makefile b/arch/csky/kernel/vdso/Makefile
index 0b6909f10667..86c8c4de1b0f 100644
--- a/arch/csky/kernel/vdso/Makefile
+++ b/arch/csky/kernel/vdso/Makefile
@@ -1,8 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0-only
 
-# Absolute relocation type $(ARCH_REL_TYPE_ABS) needs to be defined before
-# the inclusion of generic Makefile.
-ARCH_REL_TYPE_ABS := R_CKCORE_ADDR32|R_CKCORE_JUMP_SLOT
 include $(srctree)/lib/vdso/Makefile
 
 # Symbols present in the vdso
diff --git a/arch/loongarch/vdso/Makefile b/arch/loongarch/vdso/Makefile
index d89e2ac75f7b..1b2e0f149f55 100644
--- a/arch/loongarch/vdso/Makefile
+++ b/arch/loongarch/vdso/Makefile
@@ -1,9 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 # Objects to go into the VDSO.
 
-# Absolute relocation type $(ARCH_REL_TYPE_ABS) needs to be defined before
-# the inclusion of generic Makefile.
-ARCH_REL_TYPE_ABS := R_LARCH_32|R_LARCH_64|R_LARCH_MARK_LA|R_LARCH_JUMP_SLOT
 include $(srctree)/lib/vdso/Makefile
 
 obj-vdso-y := elf.o vgetcpu.o vgettimeofday.o sigreturn.o
diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
index f72658b3a53f..cea97abffc03 100644
--- a/arch/mips/vdso/Makefile
+++ b/arch/mips/vdso/Makefile
@@ -4,9 +4,6 @@
 # Sanitizer runtimes are unavailable and cannot be linked here.
  KCSAN_SANITIZE:= n
 
-# Absolute relocation type $(ARCH_REL_TYPE_ABS) needs to be defined before
-# the inclusion of generic Makefile.
-ARCH_REL_TYPE_ABS := R_MIPS_JUMP_SLOT|R_MIPS_GLOB_DAT
 include $(srctree)/lib/vdso/Makefile
 
 obj-vdso-y := elf.o vgettimeofday.o sigreturn.o
diff --git a/arch/powerpc/kernel/vdso/Makefile 
b/arch/powerpc/kernel/vdso/Makefile
index 096b0bf1335f..d3c5be32034d 100644
--- a/arch/powerpc/kernel/vdso/Makefile
+++ b/arch/powerpc/kernel/vdso/Makefile
@@ -2,7 +2,6 @@
 
 # List of files in the vdso, has to be asm only for now
 
-ARCH_REL_TYPE_ABS := 
R_PPC_JUMP_SLOT|R_PPC_GLOB_DAT|R_PPC_ADDR32|R_PPC_ADDR24|R_PPC_ADDR16|R_PPC_ADDR16_LO|R_PPC_ADDR16_HI|R_PPC_ADDR16_HA|R_PPC_ADDR14|R_PPC_ADDR14_BRTAKEN|R_PPC_ADDR14_BRNTAKEN|R_PPC_REL24
 include $(srctree)/lib/vdso/Makefile
 
 obj-vdso32