kumquat-buildroot/package/glibc/4e2943456e690d89f48e6e710757dd09404b0c9a/0001-Fix-RISC-V-32-bit-build-of-riscv-glibc-2.26.patch
Mark Corbin ae99fa6d64 arch: add support for RISC-V 32-bit (riscv32) architecture
This enables a riscv32 system to be built with a Buildroot generated
toolchain (gcc >= 7.x, binutils >= 2.30, glibc only).

This requires a custom version of glibc 2.26 from the riscv-glibc
repository. Note that there are no tags in this repository, so the
glibc version just consists of the 40 character commit id string.

Thanks to Fabrice Bellard for pointing me towards the 32-bit glibc
repository and for providing the necessary patch to get it to build.

Signed-off-by: Mark Corbin <mark.corbin@embecosm.com>
Reviewed-by: Matt Weber <matthew.weber@rockwellcollins.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-01-06 14:09:31 +01:00

60 lines
2.0 KiB
Diff

From 4909cfbbe8dd512b8fc0892859549c26e1b14d30 Mon Sep 17 00:00:00 2001
From: Mark Corbin <mark.corbin@embecosm.com>
Date: Sun, 21 Oct 2018 10:38:18 +0100
Subject: [PATCH] Fix RISC-V 32-bit build of riscv-glibc 2.26
This patch fixes two build errors with the 32-bit version of
glibc-2.26 from the riscv-glibc repository.
A void reference to 'refsym' has been added to dl-runtime.c to avoid
an 'unused variable' error when building with '-Werror'.
Some data types were hard-coded for 64-bit in ldsodefs.h. These have
been modified to allow 32-bit builds.
This patch was provided by Fabrice Bellard as part of his RISC-V
Buildroot development source.
Signed-off-by: Mark Corbin <mark.corbin@embecosm.com>
---
elf/dl-runtime.c | 1 +
sysdeps/riscv/ldsodefs.h | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
index 51d3819d4a..e728e8907e 100644
--- a/elf/dl-runtime.c
+++ b/elf/dl-runtime.c
@@ -146,6 +146,7 @@ _dl_fixup (
if (__glibc_unlikely (GLRO(dl_bind_not)))
return value;
+ (void)refsym;
return elf_machine_fixup_plt (l, result, refsym, sym, reloc, rel_addr, value);
}
diff --git a/sysdeps/riscv/ldsodefs.h b/sysdeps/riscv/ldsodefs.h
index db993df80a..91e7a8c88f 100644
--- a/sysdeps/riscv/ldsodefs.h
+++ b/sysdeps/riscv/ldsodefs.h
@@ -25,14 +25,14 @@ struct La_riscv_regs;
struct La_riscv_retval;
#define ARCH_PLTENTER_MEMBERS \
- Elf64_Addr (*riscv_gnu_pltenter) (Elf64_Sym *, unsigned int, \
+ ElfW(Addr) (*riscv_gnu_pltenter) (ElfW(Sym) *, unsigned int, \
uintptr_t *, uintptr_t *, \
const struct La_riscv_regs *, \
unsigned int *, const char *name, \
long int *framesizep);
#define ARCH_PLTEXIT_MEMBERS \
- unsigned int (*riscv_gnu_pltexit) (Elf64_Sym *, unsigned int, \
+ unsigned int (*riscv_gnu_pltexit) (ElfW(Sym) *, unsigned int, \
uintptr_t *, uintptr_t *, \
const struct La_riscv_regs *, \
struct La_riscv_retval *, \
--
2.17.1