|
[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 |