diff mbox series

[v3,19/20] linux-user: permit RISC-V CFI dynamic entry in VDSO

Message ID 20240807000652.1417776-20-debug@rivosinc.com
State New
Headers show
Series riscv support for control flow integrity extensions | expand

Commit Message

Deepak Gupta Aug. 7, 2024, 12:06 a.m. UTC
RISC-V CFI use new processor-specific dynamic entry in ELF. Permit it in
VDSO post-processing script.

Signed-off-by: Jim Shu <jim.shu@sifive.com>
Signed-off-by: Deepak Gupta <debug@rivosinc.com>
---
 linux-user/gen-vdso-elfn.c.inc | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Richard Henderson Aug. 7, 2024, 3:36 a.m. UTC | #1
On 8/7/24 10:06, Deepak Gupta wrote:
> RISC-V CFI use new processor-specific dynamic entry in ELF. Permit it in
> VDSO post-processing script.
> 
> Signed-off-by: Jim Shu <jim.shu@sifive.com>
> Signed-off-by: Deepak Gupta <debug@rivosinc.com>
> ---
>   linux-user/gen-vdso-elfn.c.inc | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/linux-user/gen-vdso-elfn.c.inc b/linux-user/gen-vdso-elfn.c.inc
> index 95856eb839..59c818eb11 100644
> --- a/linux-user/gen-vdso-elfn.c.inc
> +++ b/linux-user/gen-vdso-elfn.c.inc
> @@ -273,6 +273,13 @@ static void elfN(process)(FILE *outf, void *buf, bool need_bswap)
>                   errors++;
>                   break;
>   
> +            case PT_LOPROC + 2:
> +                /* RISCV_ZICFILP_PLT: for RISC-V zicfilp extension */
> +                if (ehdr->e_machine == EM_RISCV) {
> +                    break;
> +                }
> +                goto do_default;

Documentation?  This symbol does not appear in either llvm or binutils sources.  I presume 
this is on a development branch somewhere.

The comment is poor.  Notice:

>               case PT_LOPROC + 3:
>                   if (ehdr->e_machine == EM_PPC64) {
>                       break;  /* DT_PPC64_OPT: integer bitmask */

the ppc64 comment describes the data payload.
As do the other comments beforehand.


r~
Deepak Gupta Aug. 7, 2024, 8:53 p.m. UTC | #2
On Wed, Aug 07, 2024 at 01:36:34PM +1000, Richard Henderson wrote:
>On 8/7/24 10:06, Deepak Gupta wrote:
>>RISC-V CFI use new processor-specific dynamic entry in ELF. Permit it in
>>VDSO post-processing script.
>>
>>Signed-off-by: Jim Shu <jim.shu@sifive.com>
>>Signed-off-by: Deepak Gupta <debug@rivosinc.com>
>>---
>>  linux-user/gen-vdso-elfn.c.inc | 7 +++++++
>>  1 file changed, 7 insertions(+)
>>
>>diff --git a/linux-user/gen-vdso-elfn.c.inc b/linux-user/gen-vdso-elfn.c.inc
>>index 95856eb839..59c818eb11 100644
>>--- a/linux-user/gen-vdso-elfn.c.inc
>>+++ b/linux-user/gen-vdso-elfn.c.inc
>>@@ -273,6 +273,13 @@ static void elfN(process)(FILE *outf, void *buf, bool need_bswap)
>>                  errors++;
>>                  break;
>>+            case PT_LOPROC + 2:
>>+                /* RISCV_ZICFILP_PLT: for RISC-V zicfilp extension */
>>+                if (ehdr->e_machine == EM_RISCV) {
>>+                    break;
>>+                }
>>+                goto do_default;
>
>Documentation?  This symbol does not appear in either llvm or binutils 
>sources.  I presume this is on a development branch somewhere.
>
>The comment is poor.  Notice:

Noted. will do better.
>
>>              case PT_LOPROC + 3:
>>                  if (ehdr->e_machine == EM_PPC64) {
>>                      break;  /* DT_PPC64_OPT: integer bitmask */
>
>the ppc64 comment describes the data payload.
>As do the other comments beforehand.
>
>
>r~
diff mbox series

Patch

diff --git a/linux-user/gen-vdso-elfn.c.inc b/linux-user/gen-vdso-elfn.c.inc
index 95856eb839..59c818eb11 100644
--- a/linux-user/gen-vdso-elfn.c.inc
+++ b/linux-user/gen-vdso-elfn.c.inc
@@ -273,6 +273,13 @@  static void elfN(process)(FILE *outf, void *buf, bool need_bswap)
                 errors++;
                 break;
 
+            case PT_LOPROC + 2:
+                /* RISCV_ZICFILP_PLT: for RISC-V zicfilp extension */
+                if (ehdr->e_machine == EM_RISCV) {
+                    break;
+                }
+                goto do_default;
+
             case PT_LOPROC + 3:
                 if (ehdr->e_machine == EM_PPC64) {
                     break;  /* DT_PPC64_OPT: integer bitmask */