[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8.1 11/27] xsplice: Implement payload loading
On April 21, 2016 11:36:24 AM EDT, Jan Beulich <JBeulich@xxxxxxxx> wrote: >>>> On 21.04.16 at 17:15, <konrad@xxxxxxxxxx> wrote: >> On Wed, Apr 20, 2016 at 11:59:34AM -0400, Konrad Rzeszutek Wilk >wrote: >>> > >@@ -29,6 +30,13 @@ struct payload { >>> > >uint32_t state; /* One of the >XSPLICE_STATE_*. */ >>> > >int32_t rc; /* 0 or -XEN_EXX. */ >>> > >struct list_head list; /* Linked to >'payload_list'. */ >>> > >+ void *text_addr; /* Virtual address of >.text. */ >>> > >+ size_t text_size; /* .. and its size. */ >>> > >+ void *rw_addr; /* Virtual address of >.data. */ >>> > >+ size_t rw_size; /* .. and its size (if >any). */ >>> > >+ void *ro_addr; /* Virtual address of >.rodata. */ >>> > >+ size_t ro_size; /* .. and its size (if >any). */ >>> > >>> > And again the question: Do these pointers really need to be >non-const? >>> >>> I know I tried making them const and the compiler was not happy. I >will >>> follow up with the reasoning. >> >> The big problem I ran in was that I had to do casting in >> 'modify_payload'. To lower the amount of casting I ended making >> >> load_addr be void * (if it was const void * I would have to cast away >> the constness in xsplice_elf.c): >> >> elf->sec[i].load_addr = (void *)buf + offset[i]; >> >> where 'buf' is: >> buf = payload->text_addr; >> >> (and buf it also a const void *). > >Hence (taking all of the above) without any cast and with load_addr >being const void *, text_addr could be so, too. Or else the picture >above isn't the complete one. > If I did that I will need to uncast constness when memcpy data in (a couple of lines below in move_payload). And also when doing relocation. >>> > >+int xsplice_elf_resolve_symbols(struct xsplice_elf *elf) >>> .. snip.. >>> > >+ default: >> .. snip.. >>> > >+ if ( !(elf->sec[idx].sec->sh_flags & SHF_ALLOC) ) >>> > >+ break; >>> > >>> > If you really mean to check this, shouldn't this be done earlier, >avoiding >> needless >>> > errors on unsupported symbol kinds above? > >With all of the ..snip..-s above, it's now really hard to answer this: Sorry. > >> So I am coming back to this. The ones that this hits are: >> Symbol's section .note.GNU-stack is !SHF_ALLOC >> Symbol's section .comment is !SHF_ALLOC >> Symbol's section .debug_aranges is !SHF_ALLOC >> Symbol's section .debug_pubnames is !SHF_ALLOC >> Symbol's section .debug_info is !SHF_ALLOC >> Symbol's section .debug_abbrev is !SHF_ALLOC >> Symbol's section .debug_line is !SHF_ALLOC >> Symbol's section .debug_frame is !SHF_ALLOC >> Symbol's section .debug_str is !SHF_ALLOC >> Symbol's section .debug_loc is !SHF_ALLOC >> Symbol's section .debug_pubtypes is !SHF_ALLOC >> >> I am not sure what to make out of it. As in the code ignores >> these sections. > >Right, because these sections are of no interest to the loading >process. And hence none of the symbols (if there really are any) >in those sections should be of any interest either. > OK, so we are in agreement. >> I tried to ake the test code strip these out: >> >> strip -d >> >> But that stripped out the relocation entries out to! > >Was that all relocations, or just those referencing the sections >above? > All. For .text as well. >> Doing just: >> >> strip -R .comment >> >> Did the same exact thing (ripped out .rela*). > >That sounds wrong. Yes. Maybe the version I have is buggy. > >> Keep in mind that this code above does not set 'rc' at all - so >> the rc is 0 by default and we just ignore this specific section. >> >> I would rather keep it this way - otherwise I have to make the >> test code go through an hand-rolled linker script - I can't use >> Xen's (xen.lds.S) as it has the ASSERTS that get triggered: >> >> #ifdef CONFIG_KEXEC >> ASSERT(kexec_reloc_size - kexec_reloc <= PAGE_SIZE, "kexec_reloc is >too >> large") >> #endif >> >> As the object file has none of these entries in it. >> >> What's your preference? Leave it as is (so skip over those >> sections), or be pedantic on them and require no !SHF_ALLOC sections? > >I'm not sure I'm with you here: I didn't ask for anything to be removed >or added, all I had asked is whether that check shouldn't be moved up. Oh. Yes, I can do that! > >> And also bail out if any of the sections don't have an st_type that >we >> implement, such as .comment: >> >> [28] .comment PROGBITS 0000000000000000 000002a4 >> 000000000000005a 0000000000000001 MS 0 0 1 >> >> Or let them be but not do anything to them (whcih is what we >currently >> do). > >I don't think I can follow you here either. This is a bit of tangent on this above .Let me reply on proper thread. > >Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |