From: Vineet Gupta <Vineet.Gupta1@synopsys.com>
To: Adhemerval Zanella <adhemerval.zanella@linaro.org>,
"libc-alpha@sourceware.org" <libc-alpha@sourceware.org>
Cc: "linux-snps-arc@lists.infradead.org"
<linux-snps-arc@lists.infradead.org>
Subject: Re: [PATCH] dl-runtime: reloc_{offset,index} now functions arch overide'able
Date: Fri, 29 May 2020 17:39:30 +0000 [thread overview]
Message-ID: <0f9ad824-2278-a55b-7203-96497f06c198@synopsys.com> (raw)
In-Reply-To: <4c346276-085a-6e2d-16a4-c2b88252a74d@linaro.org>
On 5/29/20 5:58 AM, Adhemerval Zanella via Libc-alpha wrote:
>
>
> On 28/05/2020 16:43, Vineet Gupta wrote:
>> The existing macros are fragile and expect local variables with a
>> certain name. Fix this by defining them as functions with defaul
>> timplementation in a new header dl-runtime.h which arches can overrid
>> eif need be.
>>
>> This came up during ARC port review.
>>
>> This patch potentially only affects hppa/x86 ports,
>> build tested for both those configs and a few more.
>>
>> Suggested-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
>
> LGTM, thanks.
>
> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Sorry I didn't think through this before, but ARC port needs pltgot arg (runtime
address of plt0) in reloc_index not reloc_offset. I'll swap them and repost.
>> /* This function is called through a special trampoline from the PLT the
>> first time each PLT entry is called. We must perform the relocation
>> specified in the PLT of the given shared object, and return the resolved
>> @@ -68,8 +62,11 @@ _dl_fixup (
>> = (const void *) D_PTR (l, l_info[DT_SYMTAB]);
>> const char *strtab = (const void *) D_PTR (l, l_info[DT_STRTAB]);
>>
>> + const uintptr_t pltgot = (uintptr_t) D_PTR (l, l_info[DT_PLTGOT]);
>> +
>> const PLTREL *const reloc
>> - = (const void *) (D_PTR (l, l_info[DT_JMPREL]) + reloc_offset);
>> + = (const void *) (D_PTR (l, l_info[DT_JMPREL])
>> + + reloc_offset (pltgot, reloc_arg));
>> const ElfW(Sym) *sym = &symtab[ELFW(R_SYM) (reloc->r_info)];
>> const ElfW(Sym) *refsym = sym;
>> void *const rel_addr = (void *)(l->l_addr + reloc->r_offset);
>
> Ok (it should be dead code eliminated by compiler if reloc_offset does not
> use the pltgot field, as for default implementation).
Yep.
>
>> diff --git a/elf/dl-runtime.h b/elf/dl-runtime.h
>> new file mode 100644
>> index 000000000000..ed5db3ba51b7
>> --- /dev/null
>> +++ b/elf/dl-runtime.h
>> @@ -0,0 +1,30 @@
>> +/* Helpers for On-demand PLT fixup for shared objects, Generic version.
>
> Maybe period here?
OK
>> diff --git a/sysdeps/hppa/dl-runtime.h b/sysdeps/hppa/dl-runtime.h
>> new file mode 100644
>> index 000000000000..cfde0ec991e3
>> --- /dev/null
>> +++ b/sysdeps/hppa/dl-runtime.h
>> @@ -0,0 +1,31 @@
>> +/* Helpers for On-demand PLT fixup for shared objects, HPAA version.
>
> Maybe period instead of comma here?
OK.
_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc
next prev parent reply other threads:[~2020-05-29 17:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-28 19:43 [PATCH] dl-runtime: reloc_{offset, index} now functions arch overide'able Vineet Gupta
2020-05-29 12:58 ` [PATCH] dl-runtime: reloc_{offset,index} " Adhemerval Zanella
2020-05-29 17:39 ` Vineet Gupta [this message]
2020-05-29 20:54 ` Adhemerval Zanella
2020-05-29 21:21 ` [PATCH 1/2] dl-runtime: reloc_{offset, index} " Vineet Gupta
2020-05-29 21:21 ` [PATCH 2/2] ARC/dl-runtime helper macros Vineet Gupta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0f9ad824-2278-a55b-7203-96497f06c198@synopsys.com \
--to=vineet.gupta1@synopsys.com \
--cc=adhemerval.zanella@linaro.org \
--cc=libc-alpha@sourceware.org \
--cc=linux-snps-arc@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).