[yocto] [prelink-cross][PATCH] src/rtld: Add MicroBlaze support based on glibc-2.24

Mark Hatle mark.hatle at windriver.com
Tue Jun 20 14:30:19 PDT 2017


Ok, I've verify this is working properly (not on MicroBlaze, but on other
architectures).

One observation, recent gcc appears to have changed something in CXX (at least
on x86-64), and I'm now getting:

../src/prelink: /home/root/prelink-cross/testsuite/cxx1: COPY relocations don't
point into .bss or .sbss section

when running the testsuite....

Anyway, what is there is now usable.  I've got a small number of x32 patches
that need to be merged.. (that will come next.)

--Mark

On 6/20/17 8:08 AM, Mark Hatle wrote:
> On 6/20/17 7:08 AM, Nathan Rossi wrote:
>> On 20 June 2017 at 00:20, Mark Hatle <mark.hatle at windriver.com> wrote:
>>> 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.
>>
>> Tested the cross_prelink_staging branch and verified that it behaves
>> as expected.
>>
>> Sorry I forgot to add the ChangeLog entry. However when you added it
>> you used 2016 for the year.
> 
> whoops.  I'll correct that.
> 
>> On a side note, once merged into the cross_prelink branch do you see
>> any issues with updating the SRCREV in oe-core?
> 
> I've got a few other patches that I'd forgotten about.  Once I merge those (and
> do some basic validation on them).. I'll send up a request for oe-core.  If you
> don't see it in the next few days, feel free to send up an update yourself.
> 
> --Mark
> 
>> Thanks,
>> Nathan
>>
>>>
>>> --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