[yocto] [prelink-cross][PATCH] src/rtld: Add MicroBlaze support based on glibc-2.24
Mark Hatle
mark.hatle at windriver.com
Mon Jun 19 07:20:03 PDT 2017
I've merged this to the cross_prelink_staging (and master_staging, even though
it's a no-op there). The change seems fairly obvious to me.
Can you verify it is working properly as merged into cross_prelink_staging, then
I'll move it to the full cross_prelink and master.
--Mark
On 6/19/17 8:45 AM, Nathan Rossi wrote:
> Add definitions/config to support MicroBlaze, using glibc-2.24 as
> reference.
>
> Signed-off-by: Nathan Rossi <nathan at nathanrossi.com>
> ---
> src/rtld/dl-tls.c | 5 +++++
> src/rtld/rtld.c | 12 ++++++++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/src/rtld/dl-tls.c b/src/rtld/dl-tls.c
> index 8b972ff126..2da6bc5c66 100644
> --- a/src/rtld/dl-tls.c
> +++ b/src/rtld/dl-tls.c
> @@ -133,6 +133,11 @@ rtld_determine_tlsoffsets (int e_machine, struct r_scope_elem *search_list)
> tls_tcb_size = 0;
> break;
>
> + case EM_MICROBLAZE:
> + tls_dtv_at_tp = 1;
> + tls_tcb_size = 8;
> + break;
> +
> default:
> /* Hope there's no TLS! */
> for (i = 0; i < search_list->r_nlist; i++)
> diff --git a/src/rtld/rtld.c b/src/rtld/rtld.c
> index 8d7d760a57..3196981247 100644
> --- a/src/rtld/rtld.c
> +++ b/src/rtld/rtld.c
> @@ -215,6 +215,15 @@ parse_opt (int key, char *arg, struct argp_state *state)
> | (((type) == R_NIOS2_COPY) * ELF_RTYPE_CLASS_COPY) \
> | (((type) == R_NIOS2_GLOB_DAT) * ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA(EM_ALTERA_NIOS2)))
>
> +/* From glibc-2.24: sysdeps/microblaze/dl-machine.h */
> +# define microblaze_elf_machine_type_class(type) \
> + (((type) == R_MICROBLAZE_JUMP_SLOT || \
> + (type) == R_MICROBLAZE_TLSDTPREL32 || \
> + (type) == R_MICROBLAZE_TLSDTPMOD32 || \
> + (type) == R_MICROBLAZE_TLSTPREL32) \
> + * ELF_RTYPE_CLASS_PLT \
> + | ((type) == R_MICROBLAZE_COPY) * ELF_RTYPE_CLASS_COPY)
> +
> int
> elf_machine_type_class (int type, int machine)
> {
> @@ -243,6 +252,8 @@ elf_machine_type_class (int type, int machine)
> return sparc64_elf_machine_type_class(type);
> case EM_ALTERA_NIOS2:
> return nios2_elf_machine_type_class(type);
> + case EM_MICROBLAZE:
> + return microblaze_elf_machine_type_class(type);
>
> default:
> printf ("Unknown architecture!\n");
> @@ -284,6 +295,7 @@ machine_no_rela (int machine)
> case EM_SPARC32PLUS:
> case EM_SPARCV9:
> case EM_ALTERA_NIOS2:
> + case EM_MICROBLAZE:
> return 0;
> default:
> return 1;
>
More information about the yocto
mailing list