std::vector<Relocation *> morestackCalls;
for (Relocation &rel : relocations) {
- // Local symbols can't possibly be cross-calls, and should have been
- // resolved long before this line.
- if (rel.sym->isLocal())
- continue;
-
// Ignore calls into the split-stack api.
if (rel.sym->getName().startswith("__morestack")) {
if (rel.sym->getName().equals("__morestack"))
retq
.size non_split,. - non_split
+ .global non_split_hidden
+ .hidden non_split_hidden
+ .type non_split_hidden,@function
+non_split_hidden:
+ retq
+ .size non_split_hidden,. - non_split_hidden
+
.global non_function_text_symbol
non_function_text_symbol:
.byte 0x01
prologue2 non_split r11 0x200
+# CHECK: <prologue2_calls_non_split_hiddenr11>:
+# CHECK-NEXT: lea{{.*}} -16896(%rsp),{{.*}}%r11
+# CHECK: cmp{{.*}}%fs:{{[^,]*}},{{.*}}%r11
+# CHECK: jae{{.*$}}
+# CHECK-NEXT: callq{{.*}}<__morestack_non_split>
+
+prologue2 non_split_hidden r11 0x200
+
.section .note.GNU-stack,"",@progbits
.section .note.GNU-split-stack,"",@progbits