diff options
author | Marcin Kościelnicki <koriakin@0x04.net> | 2015-12-13 02:53:09 +0100 |
---|---|---|
committer | Marcin Kościelnicki <koriakin@0x04.net> | 2016-02-15 11:59:25 +0100 |
commit | 2b63aca39c2b0abbb410f7a5a60124ac5abf7438 (patch) | |
tree | b36035e99ba8c26bc6f584bd79e98bd19252da68 /gold/testsuite | |
parent | 0a0da55626b632a8b8beb6c7878b866861e5daee (diff) | |
download | gdb-2b63aca39c2b0abbb410f7a5a60124ac5abf7438.zip gdb-2b63aca39c2b0abbb410f7a5a60124ac5abf7438.tar.gz gdb-2b63aca39c2b0abbb410f7a5a60124ac5abf7438.tar.bz2 |
gold: Add s390 -fsplit-stack support.
gold/ChangeLog:
* s390.cc (Target_s390::match_view_u): New helper method.
(Target_s390::do_is_call_to_non_split): New method.
(Target_s390::ss_code_st_r14): New const.
(Target_s390::ss_code_l_r14): New const.
(Target_s390::ss_code_bras_8): New const.
(Target_s390::ss_code_l_basr): New const.
(Target_s390::ss_code_a_basr): New const.
(Target_s390::ss_code_ear): New const.
(Target_s390::ss_code_c): New const.
(Target_s390::ss_code_larl): New const.
(Target_s390::ss_code_brasl): New const.
(Target_s390::ss_code_jg): New const.
(Target_s390::ss_code_jgl): New const.
(Target_s390::ss_match_mcount): New helper method.
(Target_s390::ss_match_l): New helper method.
(Target_s390::ss_match_ahi): New helper method.
(Target_s390::ss_match_alfi): New helper method.
(Target_s390::ss_match_cr): New helper method.
(Target_s390::do_calls_non_split): New method.
* testsuite/Makefile.am: Added new tests.
* testsuite/split_s390.sh: New test.
* testsuite/split_s390_1_a1.s: New test.
* testsuite/split_s390_1_a2.s: New test.
* testsuite/split_s390_1_n1.s: New test.
* testsuite/split_s390_1_n2.s: New test.
* testsuite/split_s390_1_z1.s: New test.
* testsuite/split_s390_1_z2.s: New test.
* testsuite/split_s390_1_z3.s: New test.
* testsuite/split_s390_1_z4.s: New test.
* testsuite/split_s390_2_ns.s: New test.
* testsuite/split_s390_2_s.s: New test.
* testsuite/split_s390x_1_a1.s: New test.
* testsuite/split_s390x_1_a2.s: New test.
* testsuite/split_s390x_1_n1.s: New test.
* testsuite/split_s390x_1_n2.s: New test.
* testsuite/split_s390x_1_z1.s: New test.
* testsuite/split_s390x_1_z2.s: New test.
* testsuite/split_s390x_1_z3.s: New test.
* testsuite/split_s390x_1_z4.s: New test.
* testsuite/split_s390x_2_ns.s: New test.
* testsuite/split_s390x_2_s.s: New test.
Diffstat (limited to 'gold/testsuite')
23 files changed, 1014 insertions, 6 deletions
diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am index ca24205..7240f98 100644 --- a/gold/testsuite/Makefile.am +++ b/gold/testsuite/Makefile.am @@ -3397,6 +3397,180 @@ MOSTLYCLEANFILES += arm_farcall_thumb_arm arm_farcall_thumb_arm_5t endif DEFAULT_TARGET_ARM +if DEFAULT_TARGET_S390 + +check_SCRIPTS += split_s390.sh +check_DATA += split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \ + split_s390_z4.stdout split_s390_n1.stdout split_s390_n2.stdout \ + split_s390_a1.stdout split_s390_a2.stdout split_s390_z1_ns.stdout \ + split_s390_z2_ns.stdout split_s390_z3_ns.stdout split_s390_z4_ns.stdout \ + split_s390_n1_ns.stdout split_s390_n2_ns.stdout split_s390_r.stdout \ + split_s390x_z1.stdout split_s390x_z2.stdout split_s390x_z3.stdout \ + split_s390x_z4.stdout split_s390x_n1.stdout split_s390x_n2.stdout \ + split_s390x_a1.stdout split_s390x_a2.stdout split_s390x_z1_ns.stdout \ + split_s390x_z2_ns.stdout split_s390x_z3_ns.stdout \ + split_s390x_z4_ns.stdout split_s390x_n1_ns.stdout \ + split_s390x_n2_ns.stdout split_s390x_r.stdout +SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +split_s390_1_z1.o: split_s390_1_z1.s + $(TEST_AS) -m31 -o $@ $< +split_s390_1_z2.o: split_s390_1_z2.s + $(TEST_AS) -m31 -o $@ $< +split_s390_1_z3.o: split_s390_1_z3.s + $(TEST_AS) -m31 -o $@ $< +split_s390_1_z4.o: split_s390_1_z4.s + $(TEST_AS) -m31 -o $@ $< +split_s390_1_n1.o: split_s390_1_n1.s + $(TEST_AS) -m31 -o $@ $< +split_s390_1_n2.o: split_s390_1_n2.s + $(TEST_AS) -m31 -o $@ $< +split_s390_1_a1.o: split_s390_1_a1.s + $(TEST_AS) -m31 -o $@ $< +split_s390_1_a2.o: split_s390_1_a2.s + $(TEST_AS) -m31 -o $@ $< +split_s390_2_s.o: split_s390_2_s.s + $(TEST_AS) -m31 -o $@ $< +split_s390_2_ns.o: split_s390_2_ns.s + $(TEST_AS) -m31 -o $@ $< +split_s390_z1: split_s390_1_z1.o split_s390_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z1.o split_s390_2_s.o +split_s390_z1.stdout: split_s390_z1 + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390_z2: split_s390_1_z2.o split_s390_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z2.o split_s390_2_s.o +split_s390_z2.stdout: split_s390_z2 + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390_z3: split_s390_1_z3.o split_s390_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z3.o split_s390_2_s.o +split_s390_z3.stdout: split_s390_z3 + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390_z4: split_s390_1_z4.o split_s390_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z4.o split_s390_2_s.o +split_s390_z4.stdout: split_s390_z4 + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390_n1: split_s390_1_n1.o split_s390_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n1.o split_s390_2_s.o +split_s390_n1.stdout: split_s390_n1 + $(TEST_OBJDUMP) -d $< > $@ +split_s390_n2: split_s390_1_n2.o split_s390_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n2.o split_s390_2_s.o +split_s390_n2.stdout: split_s390_n2 + $(TEST_OBJDUMP) -d $< > $@ +split_s390_z1_ns: split_s390_1_z1.o split_s390_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z1.o split_s390_2_ns.o +split_s390_z1_ns.stdout: split_s390_z1_ns + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390_z2_ns: split_s390_1_z2.o split_s390_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z2.o split_s390_2_ns.o +split_s390_z2_ns.stdout: split_s390_z2_ns + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390_z3_ns: split_s390_1_z3.o split_s390_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z3.o split_s390_2_ns.o +split_s390_z3_ns.stdout: split_s390_z3_ns + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390_z4_ns: split_s390_1_z4.o split_s390_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z4.o split_s390_2_ns.o +split_s390_z4_ns.stdout: split_s390_z4_ns + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390_n1_ns: split_s390_1_n1.o split_s390_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n1.o split_s390_2_ns.o +split_s390_n1_ns.stdout: split_s390_n1_ns + $(TEST_OBJDUMP) -d $< > $@ +split_s390_n2_ns.stdout: split_s390_1_n2.o split_s390_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o split_s390_n2 split_s390_1_n2.o split_s390_2_ns.o > $@ 2>&1 || exit 0 +split_s390_a1.stdout: split_s390_1_a1.o split_s390_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o split_s390_a1 split_s390_1_a1.o split_s390_2_ns.o > $@ 2>&1 || exit 0 +split_s390_a2: split_s390_1_a2.o split_s390_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_a2.o split_s390_2_ns.o +split_s390_a2.stdout: split_s390_a2 + $(TEST_OBJDUMP) -d $< > $@ +split_s390_r.stdout: split_s390_1_z1.o split_s390_2_ns.o ../ld-new + ../ld-new -r split_s390_1_z1.o split_s390_2_ns.o -o split_s390_r > $@ 2>&1 || exit 0 +split_s390x_1_z1.o: split_s390x_1_z1.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_1_z2.o: split_s390x_1_z2.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_1_z3.o: split_s390x_1_z3.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_1_z4.o: split_s390x_1_z4.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_1_n1.o: split_s390x_1_n1.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_1_n2.o: split_s390x_1_n2.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_1_a1.o: split_s390x_1_a1.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_1_a2.o: split_s390x_1_a2.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_2_s.o: split_s390x_2_s.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_2_ns.o: split_s390x_2_ns.s + $(TEST_AS) -m64 -o $@ $< +split_s390x_z1: split_s390x_1_z1.o split_s390x_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z1.o split_s390x_2_s.o +split_s390x_z1.stdout: split_s390x_z1 + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390x_z2: split_s390x_1_z2.o split_s390x_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z2.o split_s390x_2_s.o +split_s390x_z2.stdout: split_s390x_z2 + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390x_z3: split_s390x_1_z3.o split_s390x_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z3.o split_s390x_2_s.o +split_s390x_z3.stdout: split_s390x_z3 + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390x_z4: split_s390x_1_z4.o split_s390x_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z4.o split_s390x_2_s.o +split_s390x_z4.stdout: split_s390x_z4 + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390x_n1: split_s390x_1_n1.o split_s390x_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n1.o split_s390x_2_s.o +split_s390x_n1.stdout: split_s390x_n1 + $(TEST_OBJDUMP) -d $< > $@ +split_s390x_n2: split_s390x_1_n2.o split_s390x_2_s.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n2.o split_s390x_2_s.o +split_s390x_n2.stdout: split_s390x_n2 + $(TEST_OBJDUMP) -d $< > $@ +split_s390x_z1_ns: split_s390x_1_z1.o split_s390x_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z1.o split_s390x_2_ns.o +split_s390x_z1_ns.stdout: split_s390x_z1_ns + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390x_z2_ns: split_s390x_1_z2.o split_s390x_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z2.o split_s390x_2_ns.o +split_s390x_z2_ns.stdout: split_s390x_z2_ns + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390x_z3_ns: split_s390x_1_z3.o split_s390x_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z3.o split_s390x_2_ns.o +split_s390x_z3_ns.stdout: split_s390x_z3_ns + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390x_z4_ns: split_s390x_1_z4.o split_s390x_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z4.o split_s390x_2_ns.o +split_s390x_z4_ns.stdout: split_s390x_z4_ns + $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +split_s390x_n1_ns: split_s390x_1_n1.o split_s390x_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n1.o split_s390x_2_ns.o +split_s390x_n1_ns.stdout: split_s390x_n1_ns + $(TEST_OBJDUMP) -d $< > $@ +split_s390x_n2_ns.stdout: split_s390x_1_n2.o split_s390x_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o split_s390x_n2 split_s390x_1_n2.o split_s390x_2_ns.o > $@ 2>&1 || exit 0 +split_s390x_a1.stdout: split_s390x_1_a1.o split_s390x_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o split_s390x_a1 split_s390x_1_a1.o split_s390x_2_ns.o > $@ 2>&1 || exit 0 +split_s390x_a2: split_s390x_1_a2.o split_s390x_2_ns.o ../ld-new + ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_a2.o split_s390x_2_ns.o +split_s390x_a2.stdout: split_s390x_a2 + $(TEST_OBJDUMP) -d $< > $@ +split_s390x_r.stdout: split_s390x_1_z1.o split_s390x_2_ns.o ../ld-new + ../ld-new -r split_s390x_1_z1.o split_s390x_2_ns.o -o split_s390x_r > $@ 2>&1 || exit 0 +MOSTLYCLEANFILES += split_s390_z1 split_s390_z2 split_s390_z3 \ + split_s390_z4 split_s390_n1 split_s390_n2 split_s390_a1 \ + split_s390_a2 split_s390_z1_ns split_s390_z2_ns split_s390_z3_ns \ + split_s390_z4_ns split_s390_n1_ns split_s390_n2_ns split_s390_r \ + split_s390x_z1 split_s390x_z2 split_s390x_z3 split_s390x_z4 \ + split_s390x_n1 split_s390x_n2 split_s390x_a1 split_s390x_a2 \ + split_s390x_z1_ns split_s390x_z2_ns split_s390x_z3_ns \ + split_s390x_z4_ns split_s390x_n1_ns split_s390x_n2_ns split_s390x_r + +endif DEFAULT_TARGET_S390 + endif NATIVE_OR_CROSS_LINKER # Tests for the dwp tool. diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in index 253493f..3cdf1a4 100644 --- a/gold/testsuite/Makefile.in +++ b/gold/testsuite/Makefile.in @@ -837,10 +837,32 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \ @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m \ @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm \ @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t -@DEFAULT_TARGET_X86_64_TRUE@am__append_88 = *.dwo *.dwp -@DEFAULT_TARGET_X86_64_TRUE@am__append_89 = dwp_test_1.sh \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_88 = split_s390.sh +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_89 = split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4.stdout split_s390_n1.stdout split_s390_n2.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_a1.stdout split_s390_a2.stdout split_s390_z1_ns.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z2_ns.stdout split_s390_z3_ns.stdout split_s390_z4_ns.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_n1_ns.stdout split_s390_n2_ns.stdout split_s390_r.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z1.stdout split_s390x_z2.stdout split_s390x_z3.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z4.stdout split_s390x_n1.stdout split_s390x_n2.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_a1.stdout split_s390x_a2.stdout split_s390x_z1_ns.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z2_ns.stdout split_s390x_z3_ns.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z4_ns.stdout split_s390x_n1_ns.stdout \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_n2_ns.stdout split_s390x_r.stdout + +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_90 = split_s390_z1 split_s390_z2 split_s390_z3 \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4 split_s390_n1 split_s390_n2 split_s390_a1 \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_a2 split_s390_z1_ns split_s390_z2_ns split_s390_z3_ns \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4_ns split_s390_n1_ns split_s390_n2_ns split_s390_r \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z1 split_s390x_z2 split_s390x_z3 split_s390x_z4 \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_n1 split_s390x_n2 split_s390x_a1 split_s390x_a2 \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z1_ns split_s390x_z2_ns split_s390x_z3_ns \ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z4_ns split_s390x_n1_ns split_s390x_n2_ns split_s390x_r + +@DEFAULT_TARGET_X86_64_TRUE@am__append_91 = *.dwo *.dwp +@DEFAULT_TARGET_X86_64_TRUE@am__append_92 = dwp_test_1.sh \ @DEFAULT_TARGET_X86_64_TRUE@ dwp_test_2.sh -@DEFAULT_TARGET_X86_64_TRUE@am__append_90 = dwp_test_1.stdout \ +@DEFAULT_TARGET_X86_64_TRUE@am__append_93 = dwp_test_1.stdout \ @DEFAULT_TARGET_X86_64_TRUE@ dwp_test_2.stdout subdir = testsuite DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am @@ -2492,7 +2514,7 @@ MOSTLYCLEANFILES = *.so *.syms *.stdout $(am__append_4) \ $(am__append_45) $(am__append_51) $(am__append_67) \ $(am__append_70) $(am__append_72) $(am__append_75) \ $(am__append_78) $(am__append_81) $(am__append_84) \ - $(am__append_87) $(am__append_88) + $(am__append_87) $(am__append_90) $(am__append_91) # We will add to these later, for each individual test. Note # that we add each test under check_SCRIPTS or check_PROGRAMS; @@ -2502,13 +2524,13 @@ check_SCRIPTS = $(am__append_2) $(am__append_20) $(am__append_26) \ $(am__append_42) $(am__append_46) $(am__append_49) \ $(am__append_65) $(am__append_68) $(am__append_73) \ $(am__append_76) $(am__append_79) $(am__append_82) \ - $(am__append_85) $(am__append_89) + $(am__append_85) $(am__append_88) $(am__append_92) check_DATA = $(am__append_3) $(am__append_21) $(am__append_27) \ $(am__append_30) $(am__append_36) $(am__append_39) \ $(am__append_43) $(am__append_47) $(am__append_50) \ $(am__append_66) $(am__append_69) $(am__append_74) \ $(am__append_77) $(am__append_80) $(am__append_83) \ - $(am__append_86) $(am__append_90) + $(am__append_86) $(am__append_89) $(am__append_93) BUILT_SOURCES = $(am__append_33) TESTS = $(check_SCRIPTS) $(check_PROGRAMS) @@ -3011,6 +3033,7 @@ LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \ @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_x86_64_bnd_test_LDFLAGS = $(exception_test_LDFLAGS) @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_x86_64_bnd_test_LDADD = exception_x86_64_bnd_1.o exception_x86_64_bnd_2.o @DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 @DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 @DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200 all: $(BUILT_SOURCES) @@ -4580,6 +4603,8 @@ arm_farcall_thumb_thumb.sh.log: arm_farcall_thumb_thumb.sh @p='arm_farcall_thumb_thumb.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) arm_farcall_thumb_arm.sh.log: arm_farcall_thumb_arm.sh @p='arm_farcall_thumb_arm.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) +split_s390.sh.log: split_s390.sh + @p='split_s390.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) dwp_test_1.sh.log: dwp_test_1.sh @p='dwp_test_1.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) dwp_test_2.sh.log: dwp_test_2.sh @@ -6896,6 +6921,154 @@ uninstall-am: @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@arm_farcall_thumb_arm_5t.o: arm_farcall_thumb_arm.s @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -march=armv5t -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_z1.o: split_s390_1_z1.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_z2.o: split_s390_1_z2.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_z3.o: split_s390_1_z3.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_z4.o: split_s390_1_z4.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_n1.o: split_s390_1_n1.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_n2.o: split_s390_1_n2.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_a1.o: split_s390_1_a1.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_1_a2.o: split_s390_1_a2.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_2_s.o: split_s390_2_s.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_2_ns.o: split_s390_2_ns.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m31 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z1: split_s390_1_z1.o split_s390_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z1.o split_s390_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z1.stdout: split_s390_z1 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z2: split_s390_1_z2.o split_s390_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z2.o split_s390_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z2.stdout: split_s390_z2 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z3: split_s390_1_z3.o split_s390_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z3.o split_s390_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z3.stdout: split_s390_z3 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z4: split_s390_1_z4.o split_s390_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z4.o split_s390_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z4.stdout: split_s390_z4 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_n1: split_s390_1_n1.o split_s390_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n1.o split_s390_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_n1.stdout: split_s390_n1 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_n2: split_s390_1_n2.o split_s390_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n2.o split_s390_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_n2.stdout: split_s390_n2 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z1_ns: split_s390_1_z1.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z1.o split_s390_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z1_ns.stdout: split_s390_z1_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z2_ns: split_s390_1_z2.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z2.o split_s390_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z2_ns.stdout: split_s390_z2_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z3_ns: split_s390_1_z3.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z3.o split_s390_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z3_ns.stdout: split_s390_z3_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z4_ns: split_s390_1_z4.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z4.o split_s390_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_z4_ns.stdout: split_s390_z4_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_n1_ns: split_s390_1_n1.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n1.o split_s390_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_n1_ns.stdout: split_s390_n1_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_n2_ns.stdout: split_s390_1_n2.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o split_s390_n2 split_s390_1_n2.o split_s390_2_ns.o > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_a1.stdout: split_s390_1_a1.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o split_s390_a1 split_s390_1_a1.o split_s390_2_ns.o > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_a2: split_s390_1_a2.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_a2.o split_s390_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_a2.stdout: split_s390_a2 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390_r.stdout: split_s390_1_z1.o split_s390_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -r split_s390_1_z1.o split_s390_2_ns.o -o split_s390_r > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_1_z1.o: split_s390x_1_z1.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_1_z2.o: split_s390x_1_z2.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_1_z3.o: split_s390x_1_z3.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_1_z4.o: split_s390x_1_z4.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_1_n1.o: split_s390x_1_n1.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_1_n2.o: split_s390x_1_n2.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_1_a1.o: split_s390x_1_a1.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_1_a2.o: split_s390x_1_a2.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_2_s.o: split_s390x_2_s.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_2_ns.o: split_s390x_2_ns.s +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_AS) -m64 -o $@ $< +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z1: split_s390x_1_z1.o split_s390x_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z1.o split_s390x_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z1.stdout: split_s390x_z1 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z2: split_s390x_1_z2.o split_s390x_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z2.o split_s390x_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z2.stdout: split_s390x_z2 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z3: split_s390x_1_z3.o split_s390x_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z3.o split_s390x_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z3.stdout: split_s390x_z3 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z4: split_s390x_1_z4.o split_s390x_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z4.o split_s390x_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z4.stdout: split_s390x_z4 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_n1: split_s390x_1_n1.o split_s390x_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n1.o split_s390x_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_n1.stdout: split_s390x_n1 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_n2: split_s390x_1_n2.o split_s390x_2_s.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n2.o split_s390x_2_s.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_n2.stdout: split_s390x_n2 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z1_ns: split_s390x_1_z1.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z1.o split_s390x_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z1_ns.stdout: split_s390x_z1_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z2_ns: split_s390x_1_z2.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z2.o split_s390x_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z2_ns.stdout: split_s390x_z2_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z3_ns: split_s390x_1_z3.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z3.o split_s390x_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z3_ns.stdout: split_s390x_z3_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z4_ns: split_s390x_1_z4.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z4.o split_s390x_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_z4_ns.stdout: split_s390x_z4_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_n1_ns: split_s390x_1_n1.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n1.o split_s390x_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_n1_ns.stdout: split_s390x_n1_ns +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_n2_ns.stdout: split_s390x_1_n2.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o split_s390x_n2 split_s390x_1_n2.o split_s390x_2_ns.o > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_a1.stdout: split_s390x_1_a1.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o split_s390x_a1 split_s390x_1_a1.o split_s390x_2_ns.o > $@ 2>&1 || exit 0 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_a2: split_s390x_1_a2.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_a2.o split_s390x_2_ns.o +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_a2.stdout: split_s390x_a2 +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ $(TEST_OBJDUMP) -d $< > $@ +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@split_s390x_r.stdout: split_s390x_1_z1.o split_s390x_2_ns.o ../ld-new +@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ ../ld-new -r split_s390x_1_z1.o split_s390x_2_ns.o -o split_s390x_r > $@ 2>&1 || exit 0 # Tests for the dwp tool. # We don't want to rely yet on GCC support for -gsplit-dwarf, diff --git a/gold/testsuite/split_s390.sh b/gold/testsuite/split_s390.sh new file mode 100755 index 0000000..a4234e1 --- /dev/null +++ b/gold/testsuite/split_s390.sh @@ -0,0 +1,117 @@ +#!/bin/sh + +# split_s390.sh -- test -fstack-split for s390 + +# Copyright (C) 2009-2015 Free Software Foundation, Inc. +# Written by Marcin Kościelnicki <koriakin@0x04.net>. + +# This file is part of gold. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. + +match() +{ + if ! egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "could not find '$1' in $2" + exit 1 + fi +} + +nomatch() +{ + if egrep "$1" "$2" >/dev/null 2>&1; then + echo 1>&2 "found unexpected '$1' in $2" + exit 1 + fi +} + +match 'jg.*__morestack>?$' split_s390_z1.stdout +match 'long.*0x00100000$' split_s390_z1.stdout +match 'jg.*__morestack>?$' split_s390_z1_ns.stdout +match 'long.*0x00104000$' split_s390_z1_ns.stdout + +match 'ear.*$' split_s390_z2.stdout +match 'jgl.*__morestack>?$' split_s390_z2.stdout +nomatch 'jg .*__morestack>?$' split_s390_z2.stdout +match 'long.*0x00000100$' split_s390_z2.stdout +nomatch 'ear.*$' split_s390_z2_ns.stdout +nomatch 'jgl.*__morestack>?$' split_s390_z2_ns.stdout +match 'jg .*__morestack>?$' split_s390_z2_ns.stdout +match 'long.*0x00004100$' split_s390_z2_ns.stdout + +match 'ear.*$' split_s390_z3.stdout +match 'jgl.*__morestack>?$' split_s390_z3.stdout +nomatch 'jg .*__morestack>?$' split_s390_z3.stdout +match 'long.*0x00001000$' split_s390_z3.stdout +nomatch 'ear.*$' split_s390_z3_ns.stdout +nomatch 'jgl.*__morestack>?$' split_s390_z3_ns.stdout +match 'jg .*__morestack>?$' split_s390_z3_ns.stdout +match 'long.*0x00005000$' split_s390_z3_ns.stdout + +match 'alfi.*%r1,1048576$' split_s390_z4.stdout +match 'jgl.*__morestack>?$' split_s390_z4.stdout +match 'long.*0x00100000$' split_s390_z4.stdout +match 'alfi.*%r1,1064960$' split_s390_z4_ns.stdout +match 'jgl.*__morestack>?$' split_s390_z4_ns.stdout +match 'long.*0x00104000$' split_s390_z4_ns.stdout + +match 'jg.*__morestack>?$' split_s390x_z1.stdout +match 'long.*0x00100000$' split_s390x_z1.stdout +match 'jg.*__morestack>?$' split_s390x_z1_ns.stdout +match 'long.*0x00104000$' split_s390x_z1_ns.stdout + +match 'ear.*$' split_s390x_z2.stdout +match 'jgl.*__morestack>?$' split_s390x_z2.stdout +nomatch 'jg .*__morestack>?$' split_s390x_z2.stdout +match 'long.*0x00000100$' split_s390x_z2.stdout +nomatch 'ear.*$' split_s390x_z2_ns.stdout +nomatch 'jgl.*__morestack>?$' split_s390x_z2_ns.stdout +match 'jg .*__morestack>?$' split_s390x_z2_ns.stdout +match 'long.*0x00004100$' split_s390x_z2_ns.stdout + +match 'ear.*$' split_s390x_z3.stdout +match 'jgl.*__morestack>?$' split_s390x_z3.stdout +nomatch 'jg .*__morestack>?$' split_s390x_z3.stdout +match 'long.*0x00001000$' split_s390x_z3.stdout +nomatch 'ear.*$' split_s390x_z3_ns.stdout +nomatch 'jgl.*__morestack>?$' split_s390x_z3_ns.stdout +match 'jg .*__morestack>?$' split_s390x_z3_ns.stdout +match 'long.*0x00005000$' split_s390x_z3_ns.stdout + +match 'algfi.*%r1,1048576$' split_s390x_z4.stdout +match 'jgl.*__morestack>?$' split_s390x_z4.stdout +match 'long.*0x00100000$' split_s390x_z4.stdout +match 'algfi.*%r1,1064960$' split_s390x_z4_ns.stdout +match 'jgl.*__morestack>?$' split_s390x_z4_ns.stdout +match 'long.*0x00104000$' split_s390x_z4_ns.stdout + +match 'larl' split_s390_n1.stdout +match 'larl' split_s390_n1_ns.stdout +match 'larl' split_s390x_n1.stdout +match 'larl' split_s390x_n1_ns.stdout +match 'j.*fn2' split_s390_n2.stdout +match 'j.*fn2' split_s390x_n2.stdout +match 'failed to match' split_s390_n2_ns.stdout +match 'failed to match' split_s390x_n2_ns.stdout + +match 'failed to match' split_s390_a1.stdout +match 'failed to match' split_s390x_a1.stdout + +match 'brasl.*__morestack>?$' split_s390_a2.stdout +match 'brasl.*__morestack>?$' split_s390x_a2.stdout + +match 'cannot mix' split_s390_r.stdout +match 'cannot mix' split_s390x_r.stdout diff --git a/gold/testsuite/split_s390_1_a1.s b/gold/testsuite/split_s390_1_a1.s new file mode 100644 index 0000000..f1537af --- /dev/null +++ b/gold/testsuite/split_s390_1_a1.s @@ -0,0 +1,27 @@ +# split_s390_1_a1.s: s390 specific, adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + stm %r13, %r15, 0x34(%r15) + .cfi_offset %r13, -0x2c + .cfi_offset %r14, -0x28 + .cfi_offset %r15, -0x24 + ahi %r15, -0x60 + .cfi_adjust_cfa_offset 0x60 + brasl %r14, __morestack + brasl %r14, fn2 + lm %r13, %r15, 0x94(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0x60 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390_1_a2.s b/gold/testsuite/split_s390_1_a2.s new file mode 100644 index 0000000..b5633ff --- /dev/null +++ b/gold/testsuite/split_s390_1_a2.s @@ -0,0 +1,28 @@ +# split_s390_1_a2.s: s390 specific, permitted adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + stm %r13, %r15, 0x34(%r15) + .cfi_offset %r13, -0x2c + .cfi_offset %r14, -0x28 + .cfi_offset %r15, -0x24 + ahi %r15, -0x60 + .cfi_adjust_cfa_offset 0x60 + brasl %r14, __morestack + brasl %r14, fn2 + lm %r13, %r15, 0x94(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0x60 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits + .section .note.GNU-no-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390_1_n1.s b/gold/testsuite/split_s390_1_n1.s new file mode 100644 index 0000000..a0db5b0 --- /dev/null +++ b/gold/testsuite/split_s390_1_n1.s @@ -0,0 +1,16 @@ +# split_s390_1_n1.s: s390 specific test case for -fsplit-stack - +# no stack frame, load function address. + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + larl %r2, fn2 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390_1_n2.s b/gold/testsuite/split_s390_1_n2.s new file mode 100644 index 0000000..3d684ee --- /dev/null +++ b/gold/testsuite/split_s390_1_n2.s @@ -0,0 +1,15 @@ +# split_s390_1_n2.s: s390 specific test case for -fsplit-stack - +# no stack frame, short sibcall (will fail) + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + j fn2 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390_1_z1.s b/gold/testsuite/split_s390_1_z1.s new file mode 100644 index 0000000..42adf55 --- /dev/null +++ b/gold/testsuite/split_s390_1_z1.s @@ -0,0 +1,37 @@ +# split_s390_z3.s: s390 specific test case for -fsplit-stack - +# zarch mode, unconditional call + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + larl %r1, .L1 + jg __morestack + .section .rodata + .align 4 +.L1: + .long 0x100000 + .long 0 + .long .L2-.L1 + .previous +.L2: + stm %r13, %r15, 0x34(%r15) + .cfi_offset %r13, -0x2c + .cfi_offset %r14, -0x28 + .cfi_offset %r15, -0x24 + ahi %r15, -0x60 + .cfi_adjust_cfa_offset 0x60 + brasl %r14, fn2 + lm %r13, %r15, 0x94(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0x60 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390_1_z2.s b/gold/testsuite/split_s390_1_z2.s new file mode 100644 index 0000000..4a9cff3 --- /dev/null +++ b/gold/testsuite/split_s390_1_z2.s @@ -0,0 +1,39 @@ +# split_s390_z2.s: s390 specific test case for -fsplit-stack - +# zarch mode, conditional call, no add + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + ear %r1, %a0 + c %r15, 0x20(%r1) + larl %r1, .L1 + jgl __morestack + .section .rodata + .align 4 +.L1: + .long 0x100 + .long 0 + .long .L2-.L1 + .previous +.L2: + stm %r13, %r15, 0x34(%r15) + .cfi_offset %r13, -0x2c + .cfi_offset %r14, -0x28 + .cfi_offset %r15, -0x24 + ahi %r15, -0x60 + .cfi_adjust_cfa_offset 0x60 + brasl %r14, fn2 + lm %r13, %r15, 0x94(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0x60 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390_1_z3.s b/gold/testsuite/split_s390_1_z3.s new file mode 100644 index 0000000..8f0cb54 --- /dev/null +++ b/gold/testsuite/split_s390_1_z3.s @@ -0,0 +1,41 @@ +# split_s390_z3.s: s390 specific test case for -fsplit-stack - +# zarch mode, conditional call, ahi. + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + ear %r1, %a0 + l %r1, 0x20(%r1) + ahi %r1, 0x1000 + cr %r15, %r1 + larl %r1, .L1 + jgl __morestack + .section .rodata + .align 4 +.L1: + .long 0x1000 + .long 0 + .long .L2-.L1 + .previous +.L2: + stm %r13, %r15, 0x34(%r15) + .cfi_offset %r13, -0x2c + .cfi_offset %r14, -0x28 + .cfi_offset %r15, -0x24 + ahi %r15, -0x60 + .cfi_adjust_cfa_offset 0x60 + brasl %r14, fn2 + lm %r13, %r15, 0x94(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0x60 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390_1_z4.s b/gold/testsuite/split_s390_1_z4.s new file mode 100644 index 0000000..b80bf40 --- /dev/null +++ b/gold/testsuite/split_s390_1_z4.s @@ -0,0 +1,41 @@ +# split_s390_z4.s: s390 specific test case for -fsplit-stack - +# zarch mode, conditional call, alfi. + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + ear %r1, %a0 + l %r1, 0x20(%r1) + alfi %r1, 0x100000 + cr %r15, %r1 + larl %r1, .L1 + jgl __morestack + .section .rodata + .align 4 +.L1: + .long 0x100000 + .long 0 + .long .L2-.L1 + .previous +.L2: + stm %r13, %r15, 0x34(%r15) + .cfi_offset %r13, -0x2c + .cfi_offset %r14, -0x28 + .cfi_offset %r15, -0x24 + ahi %r15, -0x60 + .cfi_adjust_cfa_offset 0x60 + brasl %r14, fn2 + lm %r13, %r15, 0x94(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0x60 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390_2_ns.s b/gold/testsuite/split_s390_2_ns.s new file mode 100644 index 0000000..fb5a993 --- /dev/null +++ b/gold/testsuite/split_s390_2_ns.s @@ -0,0 +1,12 @@ +# split_s390_2_ns.s: s390 specific, -fsplit-stack calling non-split + + .text + + .global fn2 + .type fn2,@function +fn2: + br %r14 + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits diff --git a/gold/testsuite/split_s390_2_s.s b/gold/testsuite/split_s390_2_s.s new file mode 100644 index 0000000..3df8009 --- /dev/null +++ b/gold/testsuite/split_s390_2_s.s @@ -0,0 +1,13 @@ +# split_s390_2_s.s: s390 specific, -fsplit-stack calling -fsplit-stack + + .text + + .global fn2 + .type fn2,@function +fn2: + br %r14 + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_1_a1.s b/gold/testsuite/split_s390x_1_a1.s new file mode 100644 index 0000000..ccc62cb --- /dev/null +++ b/gold/testsuite/split_s390x_1_a1.s @@ -0,0 +1,27 @@ +# split_s390x_1_a1.s: s390x specific, adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + stmg %r13, %r15, 0x68(%r15) + .cfi_offset %r13, -0x38 + .cfi_offset %r14, -0x30 + .cfi_offset %r15, -0x28 + aghi %r15, -0xa0 + .cfi_adjust_cfa_offset 0xa0 + brasl %r14, __morestack + brasl %r14, fn2 + lmg %r13, %r15, 0x108(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0xa0 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_1_a2.s b/gold/testsuite/split_s390x_1_a2.s new file mode 100644 index 0000000..a5c067b --- /dev/null +++ b/gold/testsuite/split_s390x_1_a2.s @@ -0,0 +1,28 @@ +# split_s390x_1_a2.s: s390x specific, permitted adjustment failure + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + stmg %r13, %r15, 0x68(%r15) + .cfi_offset %r13, -0x38 + .cfi_offset %r14, -0x30 + .cfi_offset %r15, -0x28 + aghi %r15, -0xa0 + .cfi_adjust_cfa_offset 0xa0 + brasl %r14, __morestack + brasl %r14, fn2 + lmg %r13, %r15, 0x108(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0xa0 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits + .section .note.GNU-no-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_1_n1.s b/gold/testsuite/split_s390x_1_n1.s new file mode 100644 index 0000000..3b69f25 --- /dev/null +++ b/gold/testsuite/split_s390x_1_n1.s @@ -0,0 +1,16 @@ +# split_s390x_1_n1.s: s390x specific test case for -fsplit-stack - +# no stack frame, load function address. + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + larl %r2, fn2 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_1_n2.s b/gold/testsuite/split_s390x_1_n2.s new file mode 100644 index 0000000..762cd19 --- /dev/null +++ b/gold/testsuite/split_s390x_1_n2.s @@ -0,0 +1,15 @@ +# split_s390x_1_n2.s: s390x specific test case for -fsplit-stack - +# no stack frame, short sibcall (will fail) + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + j fn2 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_1_z1.s b/gold/testsuite/split_s390x_1_z1.s new file mode 100644 index 0000000..4af34cd --- /dev/null +++ b/gold/testsuite/split_s390x_1_z1.s @@ -0,0 +1,37 @@ +# split_s390x_1_z1.s: s390x specific test case for -fsplit-stack - +# unconditional call. + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + larl %r1, .L1 + jg __morestack + .section .rodata + .align 8 +.L1: + .quad 0x100000 + .quad 0 + .quad .L2-.L1 + .previous +.L2: + stmg %r13, %r15, 0x68(%r15) + .cfi_offset %r13, -0x38 + .cfi_offset %r14, -0x30 + .cfi_offset %r15, -0x28 + aghi %r15, -0xa0 + .cfi_adjust_cfa_offset 0xa0 + brasl %r14, fn2 + lmg %r13, %r15, 0x108(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0xa0 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_1_z2.s b/gold/testsuite/split_s390x_1_z2.s new file mode 100644 index 0000000..a184f77 --- /dev/null +++ b/gold/testsuite/split_s390x_1_z2.s @@ -0,0 +1,41 @@ +# split_s390x_1_z2.s: s390x specific test case for -fsplit-stack - +# conditional call, no add. + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + ear %r1, %a0 + sllg %r1, %r1, 32 + ear %r1, %a1 + cg %r15, 0x38(%r1) + larl %r1, .L1 + jgl __morestack + .section .rodata + .align 8 +.L1: + .quad 0x100 + .quad 0 + .quad .L2-.L1 + .previous +.L2: + stmg %r13, %r15, 0x68(%r15) + .cfi_offset %r13, -0x38 + .cfi_offset %r14, -0x30 + .cfi_offset %r15, -0x28 + aghi %r15, -0xa0 + .cfi_adjust_cfa_offset 0xa0 + brasl %r14, fn2 + lmg %r13, %r15, 0x108(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0xa0 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_1_z3.s b/gold/testsuite/split_s390x_1_z3.s new file mode 100644 index 0000000..b0a4b0b --- /dev/null +++ b/gold/testsuite/split_s390x_1_z3.s @@ -0,0 +1,43 @@ +# split_s390x_1_z3.s: s390x specific test case for -fsplit-stack - +# conditional call, ahi. + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + ear %r1, %a0 + sllg %r1, %r1, 32 + ear %r1, %a1 + lg %r1, 0x38(%r1) + aghi %r1, 0x1000 + cgr %r15, %r1 + larl %r1, .L1 + jgl __morestack + .section .rodata + .align 8 +.L1: + .quad 0x1000 + .quad 0 + .quad .L2-.L1 + .previous +.L2: + stmg %r13, %r15, 0x68(%r15) + .cfi_offset %r13, -0x38 + .cfi_offset %r14, -0x30 + .cfi_offset %r15, -0x28 + aghi %r15, -0xa0 + .cfi_adjust_cfa_offset 0xa0 + brasl %r14, fn2 + lmg %r13, %r15, 0x108(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0xa0 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_1_z4.s b/gold/testsuite/split_s390x_1_z4.s new file mode 100644 index 0000000..a3b942e --- /dev/null +++ b/gold/testsuite/split_s390x_1_z4.s @@ -0,0 +1,43 @@ +# split_s390x_1_z4.s: s390x specific test case for -fsplit-stack - +# conditional call, alfi. + + .text + + .global fn1 + .type fn1,@function +fn1: + .cfi_startproc + ear %r1, %a0 + sllg %r1, %r1, 32 + ear %r1, %a1 + lg %r1, 0x38(%r1) + algfi %r1, 0x100000 + cgr %r15, %r1 + larl %r1, .L1 + jgl __morestack + .section .rodata + .align 8 +.L1: + .quad 0x100000 + .quad 0 + .quad .L2-.L1 + .previous +.L2: + stmg %r13, %r15, 0x68(%r15) + .cfi_offset %r13, -0x38 + .cfi_offset %r14, -0x30 + .cfi_offset %r15, -0x28 + aghi %r15, -0xa0 + .cfi_adjust_cfa_offset 0xa0 + brasl %r14, fn2 + lmg %r13, %r15, 0x108(%r15) + .cfi_restore %r13 + .cfi_restore %r14 + .cfi_restore %r15 + .cfi_adjust_cfa_offset -0xa0 + br %r14 + .cfi_endproc + .size fn1,. - fn1 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_2_ns.s b/gold/testsuite/split_s390x_2_ns.s new file mode 100644 index 0000000..f073eee --- /dev/null +++ b/gold/testsuite/split_s390x_2_ns.s @@ -0,0 +1,12 @@ +# split_s390x_2_ns.s: s390x specific, -fsplit-stack calling non-split + + .text + + .global fn2 + .type fn2,@function +fn2: + br %r14 + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits diff --git a/gold/testsuite/split_s390x_2_s.s b/gold/testsuite/split_s390x_2_s.s new file mode 100644 index 0000000..787d2fe --- /dev/null +++ b/gold/testsuite/split_s390x_2_s.s @@ -0,0 +1,13 @@ +# split_s390x_2_s.s: s390x specific, -fsplit-stack calling non-split + + .text + + .global fn2 + .type fn2,@function +fn2: + br %r14 + + .size fn2,. - fn2 + + .section .note.GNU-stack,"",@progbits + .section .note.GNU-split-stack,"",@progbits |