[v1] LoongArch: Add elfNN_loongarch_mkobject to initialize LoongArch tdata
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_binutils_build--master-arm |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 |
success
|
Test passed
|
linaro-tcwg-bot/tcwg_binutils_check--master-arm |
success
|
Test passed
|
Commit Message
LoongArch: Add elfNN_loongarch_mkobject to initialize LoongArch tdata.
Comments
Thanks, the patch has been applied.
On 9/6/24 9:00 AM, Xin Wang wrote:
> LoongArch: Add elfNN_loongarch_mkobject to initialize LoongArch tdata.
>
> diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
> index 69d81533a67..3e09579f018 100644
> --- a/bfd/elfnn-loongarch.c
> +++ b/bfd/elfnn-loongarch.c
> @@ -84,6 +84,14 @@ struct _bfd_loongarch_elf_obj_tdata
> && elf_tdata (bfd) != NULL \
> && elf_object_id (bfd) == LARCH_ELF_DATA)
>
> +static bool
> +elfNN_loongarch_object (bfd *abfd)
> +{
> + return bfd_elf_allocate_object (abfd,
> + sizeof (struct _bfd_loongarch_elf_obj_tdata),
> + LARCH_ELF_DATA);
> +}
> +
> struct relr_entry
> {
> asection *sec;
> @@ -6144,6 +6152,8 @@ elf_loongarch64_hash_symbol (struct elf_link_hash_entry *h)
> #define bfd_elfNN_bfd_reloc_name_lookup loongarch_reloc_name_lookup
> #define elf_info_to_howto_rel NULL /* Fall through to elf_info_to_howto. */
> #define elf_info_to_howto loongarch_info_to_howto_rela
> +#define bfd_elfNN_mkobject \
> + elfNN_loongarch_object
> #define bfd_elfNN_bfd_merge_private_bfd_data \
> elfNN_loongarch_merge_private_bfd_data
>
On Wed, 2024-09-18 at 15:07 +0800, Lulu Cai wrote:
>
> Thanks, the patch has been applied.
Hi,
2.43.1 can crash due to uninitialized tdata, for e.g. building Python
3.13.0 with PGO+LTO. So IMO this should be backport this to 2.42 & 2.43
release branches as well.
Thanks!
> On 9/6/24 9:00 AM, Xin Wang wrote:
> > LoongArch: Add elfNN_loongarch_mkobject to initialize LoongArch
> > tdata.
> >
> > diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
> > index 69d81533a67..3e09579f018 100644
> > --- a/bfd/elfnn-loongarch.c
> > +++ b/bfd/elfnn-loongarch.c
> > @@ -84,6 +84,14 @@ struct _bfd_loongarch_elf_obj_tdata
> > && elf_tdata (bfd) !=
> > NULL \
> > && elf_object_id (bfd) == LARCH_ELF_DATA)
> >
> > +static bool
> > +elfNN_loongarch_object (bfd *abfd)
> > +{
> > + return bfd_elf_allocate_object (abfd,
> > + sizeof (struct
> > _bfd_loongarch_elf_obj_tdata),
> > + LARCH_ELF_DATA);
> > +}
> > +
> > struct relr_entry
> > {
> > asection *sec;
> > @@ -6144,6 +6152,8 @@ elf_loongarch64_hash_symbol (struct
> > elf_link_hash_entry *h)
> > #define bfd_elfNN_bfd_reloc_name_lookup
> > loongarch_reloc_name_lookup
> > #define elf_info_to_howto_rel NULL /* Fall through to
> > elf_info_to_howto. */
> > #define elf_info_to_howto loongarch_info_to_howto_rela
> > +#define
> > bfd_elfNN_mkobject \
> > + elfNN_loongarch_object
> > #define
> > bfd_elfNN_bfd_merge_private_bfd_data \
> > elfNN_loongarch_merge_private_bfd_data
> >
>
>
@@ -84,6 +84,14 @@ struct _bfd_loongarch_elf_obj_tdata
&& elf_tdata (bfd) != NULL \
&& elf_object_id (bfd) == LARCH_ELF_DATA)
+static bool
+elfNN_loongarch_object (bfd *abfd)
+{
+ return bfd_elf_allocate_object (abfd,
+ sizeof (struct _bfd_loongarch_elf_obj_tdata),
+ LARCH_ELF_DATA);
+}
+
struct relr_entry
{
asection *sec;
@@ -6144,6 +6152,8 @@ elf_loongarch64_hash_symbol (struct elf_link_hash_entry *h)
#define bfd_elfNN_bfd_reloc_name_lookup loongarch_reloc_name_lookup
#define elf_info_to_howto_rel NULL /* Fall through to elf_info_to_howto. */
#define elf_info_to_howto loongarch_info_to_howto_rela
+#define bfd_elfNN_mkobject \
+ elfNN_loongarch_object
#define bfd_elfNN_bfd_merge_private_bfd_data \
elfNN_loongarch_merge_private_bfd_data