CVS commit: src/libexec/ld.elf_so/arch/riscv
Module Name:src Committed By: skrll Date: Sat Dec 3 09:39:44 UTC 2022 Modified Files: src/libexec/ld.elf_so/arch/riscv: mdreloc.c rtld_start.S Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/libexec/ld.elf_so/arch/riscv/mdreloc.c cvs rdiff -u -r1.2 -r1.3 src/libexec/ld.elf_so/arch/riscv/rtld_start.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/libexec/ld.elf_so/arch/riscv/mdreloc.c diff -u src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.5 src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.6 --- src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.5 Mon Apr 15 19:13:03 2019 +++ src/libexec/ld.elf_so/arch/riscv/mdreloc.c Sat Dec 3 09:39:44 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: mdreloc.c,v 1.5 2019/04/15 19:13:03 maya Exp $ */ +/* $NetBSD: mdreloc.c,v 1.6 2022/12/03 09:39:44 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include #ifndef lint -__RCSID("$NetBSD: mdreloc.c,v 1.5 2019/04/15 19:13:03 maya Exp $"); +__RCSID("$NetBSD: mdreloc.c,v 1.6 2022/12/03 09:39:44 skrll Exp $"); #endif /* not lint */ #include @@ -256,7 +256,7 @@ _rtld_bind(const Obj_Entry *obj, Elf_Wor int _rtld_relocate_plt_objects(const Obj_Entry *obj) { - + for (const Elf_Rel *rel = obj->pltrel; rel < obj->pltrellim; rel++) { if (_rtld_relocate_plt_object(obj, rel, NULL) < 0) return -1; Index: src/libexec/ld.elf_so/arch/riscv/rtld_start.S diff -u src/libexec/ld.elf_so/arch/riscv/rtld_start.S:1.2 src/libexec/ld.elf_so/arch/riscv/rtld_start.S:1.3 --- src/libexec/ld.elf_so/arch/riscv/rtld_start.S:1.2 Fri Mar 27 23:14:53 2015 +++ src/libexec/ld.elf_so/arch/riscv/rtld_start.S Sat Dec 3 09:39:44 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: rtld_start.S,v 1.2 2015/03/27 23:14:53 matt Exp $ */ +/* $NetBSD: rtld_start.S,v 1.3 2022/12/03 09:39:44 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -110,7 +110,7 @@ ENTRY_NP(_rtld_bind_start) REG_L a5, XCALLFRAME_A5(sp) REG_L a6, XCALLFRAME_A6(sp) REG_L a7, XCALLFRAME_A7(sp) - REG_L ra, XCALLFRAME_RA(sp) + REG_L ra, XCALLFRAME_RA(sp) addi sp, sp, XCALLFRAME_SIZ jr t0 END(_rtld_bind_start)
CVS commit: src/libexec/ld.elf_so/arch/riscv
Module Name:src Committed By: skrll Date: Sat Dec 3 09:39:44 UTC 2022 Modified Files: src/libexec/ld.elf_so/arch/riscv: mdreloc.c rtld_start.S Log Message: Trailing whitespace To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/libexec/ld.elf_so/arch/riscv/mdreloc.c cvs rdiff -u -r1.2 -r1.3 src/libexec/ld.elf_so/arch/riscv/rtld_start.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/libexec/ld.elf_so/arch/riscv
Module Name:src Committed By: skrll Date: Mon Dec 5 07:26:25 UTC 2022 Modified Files: src/libexec/ld.elf_so/arch/riscv: mdreloc.c Log Message: RISC-V is RELA To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/libexec/ld.elf_so/arch/riscv/mdreloc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/libexec/ld.elf_so/arch/riscv/mdreloc.c diff -u src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.6 src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.7 --- src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.6 Sat Dec 3 09:39:44 2022 +++ src/libexec/ld.elf_so/arch/riscv/mdreloc.c Mon Dec 5 07:26:25 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: mdreloc.c,v 1.6 2022/12/03 09:39:44 skrll Exp $ */ +/* $NetBSD: mdreloc.c,v 1.7 2022/12/05 07:26:25 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include #ifndef lint -__RCSID("$NetBSD: mdreloc.c,v 1.6 2022/12/03 09:39:44 skrll Exp $"); +__RCSID("$NetBSD: mdreloc.c,v 1.7 2022/12/05 07:26:25 skrll Exp $"); #endif /* not lint */ #include @@ -206,15 +206,15 @@ _rtld_relocate_plt_lazy(Obj_Entry *obj) } static int -_rtld_relocate_plt_object(const Obj_Entry *obj, const Elf_Rel *rel, +_rtld_relocate_plt_object(const Obj_Entry *obj, const Elf_Rela *rela, Elf_Addr *tp) { const Obj_Entry *defobj; Elf_Addr new_value; -assert(ELF_R_TYPE(rel->r_info) == R_TYPE(JMP_SLOT)); +assert(ELF_R_TYPE(rela->r_info) == R_TYPE(JMP_SLOT)); - const Elf_Sym *def = _rtld_find_plt_symdef(ELF_R_SYM(rel->r_info), + const Elf_Sym *def = _rtld_find_plt_symdef(ELF_R_SYM(rela->r_info), obj, &defobj, tp != NULL); if (__predict_false(def == NULL)) return -1; @@ -230,7 +230,7 @@ _rtld_relocate_plt_object(const Obj_Entr } rdbg(("bind now/fixup in %s --> new=%p", defobj->strtab + def->st_name, (void *)new_value)); - *(Elf_Addr *)(obj->relocbase + rel->r_offset) = new_value; + *(Elf_Addr *)(obj->relocbase + rela->r_offset) = new_value; if (tp) *tp = new_value; @@ -240,7 +240,7 @@ _rtld_relocate_plt_object(const Obj_Entr void * _rtld_bind(const Obj_Entry *obj, Elf_Word reloff) { - const Elf_Rel *pltrel = (const Elf_Rel *)(obj->pltrel + reloff); + const Elf_Rela *pltrel = (const Elf_Rela *)(obj->pltrel + reloff); Elf_Addr new_value; int err; @@ -257,8 +257,8 @@ int _rtld_relocate_plt_objects(const Obj_Entry *obj) { - for (const Elf_Rel *rel = obj->pltrel; rel < obj->pltrellim; rel++) { - if (_rtld_relocate_plt_object(obj, rel, NULL) < 0) + for (const Elf_Rela *rela = obj->pltrela; rela < obj->pltrelalim; rela++) { + if (_rtld_relocate_plt_object(obj, rela, NULL) < 0) return -1; }
CVS commit: src/libexec/ld.elf_so/arch/riscv
Module Name:src Committed By: skrll Date: Mon Dec 5 07:26:25 UTC 2022 Modified Files: src/libexec/ld.elf_so/arch/riscv: mdreloc.c Log Message: RISC-V is RELA To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/libexec/ld.elf_so/arch/riscv/mdreloc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/libexec/ld.elf_so/arch/riscv
Module Name:src Committed By: skrll Date: Mon Dec 5 07:33:43 UTC 2022 Modified Files: src/libexec/ld.elf_so/arch/riscv: rtld_start.S Log Message: Use the SZREG symbol instead of __SIZEOF_POINTER__ as its shorter. Assert that they're the same just in case. Sprinkle some KNF whitespace while I'm here. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/libexec/ld.elf_so/arch/riscv/rtld_start.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/libexec/ld.elf_so/arch/riscv
Module Name:src Committed By: skrll Date: Mon Dec 5 07:33:43 UTC 2022 Modified Files: src/libexec/ld.elf_so/arch/riscv: rtld_start.S Log Message: Use the SZREG symbol instead of __SIZEOF_POINTER__ as its shorter. Assert that they're the same just in case. Sprinkle some KNF whitespace while I'm here. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/libexec/ld.elf_so/arch/riscv/rtld_start.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/libexec/ld.elf_so/arch/riscv/rtld_start.S diff -u src/libexec/ld.elf_so/arch/riscv/rtld_start.S:1.4 src/libexec/ld.elf_so/arch/riscv/rtld_start.S:1.5 --- src/libexec/ld.elf_so/arch/riscv/rtld_start.S:1.4 Sun Dec 4 17:04:06 2022 +++ src/libexec/ld.elf_so/arch/riscv/rtld_start.S Mon Dec 5 07:33:43 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: rtld_start.S,v 1.4 2022/12/04 17:04:06 skrll Exp $ */ +/* $NetBSD: rtld_start.S,v 1.5 2022/12/05 07:33:43 skrll Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -34,6 +34,10 @@ .globl _C_LABEL(_rtld_relocate_nonplt_self) .globl _C_LABEL(_rtld) +#if __SIZEOF_POINTER__ != SZREG +#error SZREG is the wrong size +#endif + /* * void * ___start(void (*cleanup)(void), @@ -42,10 +46,10 @@ */ ENTRY(_rtld_start) mv s0, sp # save stack pointer - addi sp, sp, -4*__SIZEOF_POINTER__ + addi sp, sp, -4 * SZREG # adjust stack pointer - # -> 2*PTR_SIZE(sp) for atexit - # -> 3*PTR_SIZE(sp) for obj_main + # -> 2 * PTR_SIZE(sp) for atexit + # -> 3 * PTR_SIZE(sp) for obj_main mv s1, a2 # save ps_strings pointer .L0: auipc gp, %pcrel_hi(_GLOBAL_OFFSET_TABLE_) @@ -57,28 +61,28 @@ ENTRY(_rtld_start) call _C_LABEL(_rtld_relocate_nonplt_self) mv a1, s2 # relocbase - addi a0, sp, 2*__SIZEOF_POINTER__ # sp + addi a0, sp, 2 * SZREG # sp call _C_LABEL(_rtld) # a0 = _rtld(sp, relocbase) mv t0, a0 - PTR_L a0, 2*__SIZEOF_POINTER__(sp) # cleanup function - PTR_L a1, 3*__SIZEOF_POINTER__(sp) # obj_main entry + PTR_L a0, 2 * SZREG(sp) # cleanup function + PTR_L a1, 3 * SZREG(sp) # obj_main entry mv a2, s1 # restore ps_strings mv sp, s0 # readjust stack mv s0, zero # break stack chain jr t0 # _start(cleanup, obj_main, ps_strings); END(_rtld_start) -#define XCALLFRAME_SIZ (12*SZREG) -#define XCALLFRAME_RA (8*SZREG) -#define XCALLFRAME_A7 (7*SZREG) -#define XCALLFRAME_A6 (6*SZREG) -#define XCALLFRAME_A5 (5*SZREG) -#define XCALLFRAME_A4 (4*SZREG) -#define XCALLFRAME_A3 (3*SZREG) -#define XCALLFRAME_A2 (2*SZREG) -#define XCALLFRAME_A1 (1*SZREG) -#define XCALLFRAME_A0 (0*SZREG) +#define XCALLFRAME_SIZ (12 * SZREG) +#define XCALLFRAME_RA ( 8 * SZREG) +#define XCALLFRAME_A7 ( 7 * SZREG) +#define XCALLFRAME_A6 ( 6 * SZREG) +#define XCALLFRAME_A5 ( 5 * SZREG) +#define XCALLFRAME_A4 ( 4 * SZREG) +#define XCALLFRAME_A3 ( 3 * SZREG) +#define XCALLFRAME_A2 ( 2 * SZREG) +#define XCALLFRAME_A1 ( 1 * SZREG) +#define XCALLFRAME_A0 ( 0 * SZREG) /* * t0 = obj pointer
CVS commit: src/libexec/ld.elf_so/arch/riscv
Module Name:src Committed By: riastradh Date: Mon Jul 22 23:11:05 UTC 2024 Modified Files: src/libexec/ld.elf_so/arch/riscv: mdreloc.c Log Message: ld.elf_so: Cite reference for RISC-V ELF relocations. PR lib/58455: Missing references for processor-specific ELF relocation semantics To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/libexec/ld.elf_so/arch/riscv/mdreloc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/libexec/ld.elf_so/arch/riscv
Module Name:src Committed By: riastradh Date: Mon Jul 22 23:11:05 UTC 2024 Modified Files: src/libexec/ld.elf_so/arch/riscv: mdreloc.c Log Message: ld.elf_so: Cite reference for RISC-V ELF relocations. PR lib/58455: Missing references for processor-specific ELF relocation semantics To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/libexec/ld.elf_so/arch/riscv/mdreloc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/libexec/ld.elf_so/arch/riscv/mdreloc.c diff -u src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.9 src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.10 --- src/libexec/ld.elf_so/arch/riscv/mdreloc.c:1.9 Sun Jun 4 01:24:58 2023 +++ src/libexec/ld.elf_so/arch/riscv/mdreloc.c Mon Jul 22 23:11:05 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: mdreloc.c,v 1.9 2023/06/04 01:24:58 joerg Exp $ */ +/* $NetBSD: mdreloc.c,v 1.10 2024/07/22 23:11:05 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -31,9 +31,18 @@ #include #ifndef lint -__RCSID("$NetBSD: mdreloc.c,v 1.9 2023/06/04 01:24:58 joerg Exp $"); +__RCSID("$NetBSD: mdreloc.c,v 1.10 2024/07/22 23:11:05 riastradh Exp $"); #endif /* not lint */ +/* + * RISC-V ELF relocations. + * + * Reference: + * + * [RISCVELF] RISC-V ELF Specification, 2024-07-17. + * https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/9fec6080d15e7f009c9e714d1e9b8dd7177b0b67/riscv-elf.adoc + */ + #include #include #include