[PATCH] gold: aarch64 split stack support
Cary Coutant
ccoutant@gmail.com
Fri Jul 13 07:33:00 GMT 2018
> This patch adds gold support for split-stack function calling non-split
> function on aarch64.
> if DEFAULT_TARGET_AARCH64
>
> -check_SCRIPTS += aarch64_reloc_none.sh
> -check_DATA += aarch64_reloc_none.stdout
> +check_SCRIPTS += aarch64_reloc_none.sh split_aarch64.sh
> +check_DATA += aarch64_reloc_none.stdout split_aarch64_1.stdout \
> + split_aarch64_2.stdout split_aarch64_3.stdout split_aarch64_4.stdout \
> + split_aarch64_r.stdout
> aarch64_reloc_none.o: aarch64_reloc_none.s
> $(TEST_AS) -o $@ $<
> aarch64_reloc_none: aarch64_reloc_none.o ../ld-new
> ../ld-new -o $@ aarch64_reloc_none.o --gc-sections
> aarch64_reloc_none.stdout: aarch64_reloc_none
> $(TEST_NM) $< > $@
> -
> -MOSTLYCLEANFILES += aarch64_reloc_none
Let's leave the aarch64_reloc_none test case untouched, and add your
new stuff below it:
+check_SCRIPTS += split_aarch64.sh
+check_DATA += split_aarch64_1.stdout \
+ split_aarch64_2.stdout split_aarch64_3.stdout split_aarch64_4.stdout \
+ split_aarch64_r.stdout
> +SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200
> +split_aarch64_1.o: split_aarch64_1.s
> + $(TEST_AS) -o $@ $<
> +split_aarch64_2.o: split_aarch64_2.s
> + $(TEST_AS) -o $@ $<
> +split_aarch64_3.o: split_aarch64_3.s
> + $(TEST_AS) -o $@ $<
> +split_aarch64_4.o: split_aarch64_4.s
> + $(TEST_AS) -o $@ $<
> +split_aarch64_n.o: split_aarch64_n.s
> + $(TEST_AS) -o $@ $<
> +split_aarch64_1: split_aarch64_1.o ../ld-new
> + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_aarch64_1.o
> +split_aarch64_1.stdout: split_aarch64_1
> + $(TEST_OBJDUMP) -d $< > $@
> +split_aarch64_2: split_aarch64_2.o split_aarch64_n.o ../ld-new
> + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_aarch64_2.o split_aarch64_n.o
> +split_aarch64_2.stdout: split_aarch64_2
> + $(TEST_OBJDUMP) -d $< > $@
> +split_aarch64_3.stdout: split_aarch64_3.o split_aarch64_n.o ../ld-new
> + ../ld-new $(SPLIT_DEFSYMS) -o split_aarch64_3 split_aarch64_3.o split_aarch64_n.o > $@ 2>&1 || exit 0
> +split_aarch64_4: split_aarch64_4.o split_aarch64_n.o ../ld-new
> + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_aarch64_4.o split_aarch64_n.o
> +split_aarch64_4.stdout: split_aarch64_4
> + $(TEST_OBJDUMP) -d $< > $@
> +split_aarch64_r.stdout: split_aarch64_1.o split_aarch64_n.o ../ld-new
> + ../ld-new -r split_aarch64_1.o split_aarch64_n.o -o split_aarch64_r > $@ 2>&1 || exit 0
> +#MOSTLYCLEANFILES += aarch64_reloc_none split_aarch64_1 split_aarch64_2 \
> + split_aarch64_3 split_aarch64_r
Uncomment this line (and remove aarch64_reloc_none).
> diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
> index bbf8dc1..602e3ff 100644
> --- a/gold/testsuite/Makefile.in
> +++ b/gold/testsuite/Makefile.in
In the future, please remove the diffs for generated files when
posting patches for review.
Other than that, it looks OK.
Sorry for the delay -- I just lost track of the patch, and only found
it again today. It's always a good idea to ping me if you haven't
heard from me for a couple of weeks!
-cary
More information about the Binutils
mailing list