[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] tests/x86emul: Annotate test blobs as executable code
>>> On 24.05.19 at 17:15, <andrew.cooper3@xxxxxxxxxx> wrote: > --- a/tools/tests/x86_emulator/Makefile > +++ b/tools/tests/x86_emulator/Makefile > @@ -149,7 +149,7 @@ $(addsuffix .h,$(TESTCASES)): %.h: %.c testcase.mk > Makefile > (echo 'static const unsigned int __attribute__((section(".test, > \"ax\", @progbits #")))' \ > "$${prefix}_$(arch)$${flavor}[] = {"; \ > od -v -t x $*.bin | sed -e 's/^[0-9]* /0x/' -e 's/ /, 0x/g' -e > 's/$$/,/'; \ > - echo "};") >>$@.new; \ > + echo "}; asm(\".type $${prefix}_$(arch)$${flavor}, > STT_FUNC;\");") >>$@.new; \ Hmm, this seems risky to me - I'd expect a decent compiler to mark them as STT_OBJECT, and a decent assembler to choke on finding disagreeing .type directives for the same symbol. Current binutils looks to simply OR together all the values, and then decide in an adhoc sequence which type to actually emit: if ((flags & BSF_THREAD_LOCAL) != 0) type = STT_TLS; else if ((flags & BSF_GNU_INDIRECT_FUNCTION) != 0) type = STT_GNU_IFUNC; else if ((flags & BSF_FUNCTION) != 0) type = STT_FUNC; else if ((flags & BSF_OBJECT) != 0) type = STT_OBJECT; else if ((flags & BSF_RELC) != 0) type = STT_RELC; else if ((flags & BSF_SRELC) != 0) type = STT_SRELC; else type = STT_NOTYPE; I don't think that's sane behavior (albeit it guarantees @function to win over @object), and hence I'd say it can change at any time. I wanted to suggest forcing the type change via objcopy, but to my surprise I couldn't find a respective option. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |