[PATCH 6/6] aix: implement TLS relocation for gas and ld
Alan Modra
amodra@gmail.com
Fri Mar 5 14:07:43 GMT 2021
On Fri, Mar 05, 2021 at 01:37:17PM +0000, CHIGOT, CLEMENT wrote:
> >> --- a/ld/emultempl/aix.em
> >> +++ b/ld/emultempl/aix.em
> >> @@ -969,6 +969,26 @@ gld${EMULATION_NAME}_before_allocation (void)
> >> sec->flags |= SEC_KEEP;
> >> }
> >>
> >> + /* Make sure .tdata is removed if empty, even with -r flag.
> >> + .tdata is always being generated because its size is needed
> >> + to cumpute .data address. */
> >> + if (bfd_link_relocatable (&link_info))
> >> + {
> >> + asection *sec;
> >> +
> >> + sec = bfd_get_section_by_name (link_info.output_bfd,
> >> + ".tdata");
> >
> > Needs a "sec != NULL" test here, and I think even with that this code
> > won't work as you expect. I might be wrong though, did you test to
> > see whether a non-empty .tdata is kept?
> >
> >> + if (sec->rawsize == 0
> >> + && (sec->flags & SEC_KEEP) == 0
> >> + && !bfd_section_removed_from_list (link_info.output_bfd,
> >> + sec))
> >> + {
> >> + sec->flags |= SEC_EXCLUDE;
> >> + bfd_section_list_remove (link_info.output_bfd, sec);
> >> + link_info.output_bfd->section_count--;
> >> + }
> >> + }
> >> +
> >> before_allocation_default ();
> >> }
>
> Indeed, a non-empty .tdata is being removed too.
> My goal here is to avoid having a ".tdata" section in every files generated
> with "-r". The reason why it keeps appearing is because I'm using .tdata size
> to compute "dot" in aix.sc.
> I'm sure it can be fixed directly inside aix.sc but I didn't find how, as I need
> to place .tdata before .data and have everything align correctly...
> Otherwise, any ideas how to detect when .tdata is non-empty there ?
My guess is that you need to steal some more code from ldlang.c
strip_excluded_output_sections, the block that runs
lang_size_sections.
>
> Thanks,
> Clément
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list