Merge "Fix overlapping cfi ranges in mterp"
diff --git a/runtime/interpreter/mterp/arm/entry.S b/runtime/interpreter/mterp/arm/entry.S
index ce14b54..5781414 100644
--- a/runtime/interpreter/mterp/arm/entry.S
+++ b/runtime/interpreter/mterp/arm/entry.S
@@ -19,8 +19,6 @@
.text
.align 2
- .global ExecuteMterpImpl
- .type ExecuteMterpImpl, %function
/*
* On entry:
diff --git a/runtime/interpreter/mterp/arm64/close_cfi.S b/runtime/interpreter/mterp/arm64/close_cfi.S
new file mode 100644
index 0000000..7ba0486
--- /dev/null
+++ b/runtime/interpreter/mterp/arm64/close_cfi.S
@@ -0,0 +1,4 @@
+// Close out the cfi info. We're treating mterp as a single function.
+
+END ExecuteMterpImpl
+
diff --git a/runtime/interpreter/mterp/arm64/entry.S b/runtime/interpreter/mterp/arm64/entry.S
index 73c5a88..7306e4e 100644
--- a/runtime/interpreter/mterp/arm64/entry.S
+++ b/runtime/interpreter/mterp/arm64/entry.S
@@ -25,12 +25,7 @@
* x3 JValue* result_register
*
*/
- .global ExecuteMterpImpl
- .type ExecuteMterpImpl, %function
- .balign 16
-
-ExecuteMterpImpl:
- .cfi_startproc
+ENTRY ExecuteMterpImpl
SAVE_TWO_REGS_INCREASE_FRAME xPROFILE, x27, 80
SAVE_TWO_REGS xIBASE, xREFS, 16
SAVE_TWO_REGS xSELF, xINST, 32
diff --git a/runtime/interpreter/mterp/arm64/footer.S b/runtime/interpreter/mterp/arm64/footer.S
index 388fc8d..fafa606 100644
--- a/runtime/interpreter/mterp/arm64/footer.S
+++ b/runtime/interpreter/mterp/arm64/footer.S
@@ -305,6 +305,3 @@
RESTORE_TWO_REGS_DECREASE_FRAME xPROFILE, x27, 80
ret
- .cfi_endproc
- .size ExecuteMterpImpl, .-ExecuteMterpImpl
-
diff --git a/runtime/interpreter/mterp/arm64/header.S b/runtime/interpreter/mterp/arm64/header.S
index 7125d5a..cedfa49 100644
--- a/runtime/interpreter/mterp/arm64/header.S
+++ b/runtime/interpreter/mterp/arm64/header.S
@@ -330,3 +330,20 @@
.cfi_restore \reg2
.cfi_adjust_cfa_offset -(\frame_adjustment)
.endm
+
+/*
+ * cfi support macros.
+ */
+.macro ENTRY name
+ .type \name, #function
+ .global \name
+ /* Cache alignment for function entry */
+ .balign 16
+\name:
+ .cfi_startproc
+.endm
+
+.macro END name
+ .cfi_endproc
+ .size \name, .-\name
+.endm
diff --git a/runtime/interpreter/mterp/config_arm64 b/runtime/interpreter/mterp/config_arm64
index 0831c3b..590363f 100644
--- a/runtime/interpreter/mterp/config_arm64
+++ b/runtime/interpreter/mterp/config_arm64
@@ -301,3 +301,6 @@
# emit alternate entry stubs
alt-ops
+
+# finish by closing .cfi info
+import arm64/close_cfi.S
diff --git a/runtime/interpreter/mterp/gen_mterp.py b/runtime/interpreter/mterp/gen_mterp.py
index 5839b5f..1c9af30 100755
--- a/runtime/interpreter/mterp/gen_mterp.py
+++ b/runtime/interpreter/mterp/gen_mterp.py
@@ -284,7 +284,6 @@
# point MterpAsmInstructionStart at the first handler or stub
asm_fp.write("\n .global %s\n" % start_label)
- asm_fp.write(" " + (function_type_format % start_label) + "\n");
asm_fp.write("%s = " % start_label + label_prefix + "_op_nop\n")
asm_fp.write(" .text\n\n")
@@ -310,7 +309,6 @@
asm_fp.write(label_prefix + "_op_nop: /* dummy */\n");
emitAlign()
- asm_fp.write(" " + (function_size_format % (start_label, start_label)) + "\n")
asm_fp.write(" .global %s\n" % end_label)
asm_fp.write("%s:\n" % end_label)
@@ -319,12 +317,10 @@
end_sister_label = global_name_format % "artMterpAsmSisterEnd"
emitSectionComment("Sister implementations", asm_fp)
asm_fp.write(" .global %s\n" % start_sister_label)
- asm_fp.write(" " + (function_type_format % start_sister_label) + "\n");
asm_fp.write(" .text\n")
asm_fp.write(" .balign 4\n")
asm_fp.write("%s:\n" % start_sister_label)
asm_fp.writelines(sister_list)
- asm_fp.write("\n " + (function_size_format % (start_sister_label, start_sister_label)) + "\n")
asm_fp.write(" .global %s\n" % end_sister_label)
asm_fp.write("%s:\n\n" % end_sister_label)
@@ -351,7 +347,6 @@
# point MterpAsmInstructionStart at the first handler or stub
asm_fp.write("\n .global %s\n" % start_label)
- asm_fp.write(" " + (function_type_format % start_label) + "\n");
asm_fp.write(" .text\n\n")
asm_fp.write("%s = " % start_label + label_prefix + "_ALT_op_nop\n")
@@ -364,7 +359,6 @@
loadAndEmitAltStub(source, i)
emitAlign()
- asm_fp.write(" " + (function_size_format % (start_label, start_label)) + "\n")
asm_fp.write(" .global %s\n" % end_label)
asm_fp.write("%s:\n" % end_label)
diff --git a/runtime/interpreter/mterp/out/mterp_arm.S b/runtime/interpreter/mterp/out/mterp_arm.S
index 393a9cc..8ca5bd4 100644
--- a/runtime/interpreter/mterp/out/mterp_arm.S
+++ b/runtime/interpreter/mterp/out/mterp_arm.S
@@ -338,8 +338,6 @@
.text
.align 2
- .global ExecuteMterpImpl
- .type ExecuteMterpImpl, %function
/*
* On entry:
@@ -398,7 +396,6 @@
.global artMterpAsmInstructionStart
- .type artMterpAsmInstructionStart, %function
artMterpAsmInstructionStart = .L_op_nop
.text
@@ -7510,7 +7507,6 @@
.balign 128
- .size artMterpAsmInstructionStart, .-artMterpAsmInstructionStart
.global artMterpAsmInstructionEnd
artMterpAsmInstructionEnd:
@@ -7520,7 +7516,6 @@
* ===========================================================================
*/
.global artMterpAsmSisterStart
- .type artMterpAsmSisterStart, %function
.text
.balign 4
artMterpAsmSisterStart:
@@ -7586,14 +7581,11 @@
mov r0, #0
mov r1, #0
bx lr @ return 0 for NaN
-
- .size artMterpAsmSisterStart, .-artMterpAsmSisterStart
.global artMterpAsmSisterEnd
artMterpAsmSisterEnd:
.global artMterpAsmAltInstructionStart
- .type artMterpAsmAltInstructionStart, %function
.text
artMterpAsmAltInstructionStart = .L_ALT_op_nop
@@ -11950,7 +11942,6 @@
b MterpCheckBefore @ (self, shadow_frame, dex_pc_ptr) @ Tail call.
.balign 128
- .size artMterpAsmAltInstructionStart, .-artMterpAsmAltInstructionStart
.global artMterpAsmAltInstructionEnd
artMterpAsmAltInstructionEnd:
/* File: arm/footer.S */
diff --git a/runtime/interpreter/mterp/out/mterp_arm64.S b/runtime/interpreter/mterp/out/mterp_arm64.S
index 80a7f12..d4423ab 100644
--- a/runtime/interpreter/mterp/out/mterp_arm64.S
+++ b/runtime/interpreter/mterp/out/mterp_arm64.S
@@ -338,6 +338,23 @@
.cfi_adjust_cfa_offset -(\frame_adjustment)
.endm
+/*
+ * cfi support macros.
+ */
+.macro ENTRY name
+ .type \name, #function
+ .global \name
+ /* Cache alignment for function entry */
+ .balign 16
+\name:
+ .cfi_startproc
+.endm
+
+.macro END name
+ .cfi_endproc
+ .size \name, .-\name
+.endm
+
/* File: arm64/entry.S */
/*
* Copyright (C) 2016 The Android Open Source Project
@@ -366,12 +383,7 @@
* x3 JValue* result_register
*
*/
- .global ExecuteMterpImpl
- .type ExecuteMterpImpl, %function
- .balign 16
-
-ExecuteMterpImpl:
- .cfi_startproc
+ENTRY ExecuteMterpImpl
SAVE_TWO_REGS_INCREASE_FRAME xPROFILE, x27, 80
SAVE_TWO_REGS xIBASE, xREFS, 16
SAVE_TWO_REGS xSELF, xINST, 32
@@ -413,7 +425,6 @@
.global artMterpAsmInstructionStart
- .type artMterpAsmInstructionStart, %function
artMterpAsmInstructionStart = .L_op_nop
.text
@@ -7060,7 +7071,6 @@
.balign 128
- .size artMterpAsmInstructionStart, .-artMterpAsmInstructionStart
.global artMterpAsmInstructionEnd
artMterpAsmInstructionEnd:
@@ -7070,12 +7080,9 @@
* ===========================================================================
*/
.global artMterpAsmSisterStart
- .type artMterpAsmSisterStart, %function
.text
.balign 4
artMterpAsmSisterStart:
-
- .size artMterpAsmSisterStart, .-artMterpAsmSisterStart
.global artMterpAsmSisterEnd
artMterpAsmSisterEnd:
@@ -7387,13 +7394,9 @@
RESTORE_TWO_REGS_DECREASE_FRAME xPROFILE, x27, 80
ret
- .cfi_endproc
- .size ExecuteMterpImpl, .-ExecuteMterpImpl
-
.global artMterpAsmAltInstructionStart
- .type artMterpAsmAltInstructionStart, %function
.text
artMterpAsmAltInstructionStart = .L_ALT_op_nop
@@ -11750,6 +11753,11 @@
b MterpCheckBefore // (self, shadow_frame, dex_pc_ptr) Note: tail call.
.balign 128
- .size artMterpAsmAltInstructionStart, .-artMterpAsmAltInstructionStart
.global artMterpAsmAltInstructionEnd
artMterpAsmAltInstructionEnd:
+/* File: arm64/close_cfi.S */
+// Close out the cfi info. We're treating mterp as a single function.
+
+END ExecuteMterpImpl
+
+
diff --git a/runtime/interpreter/mterp/out/mterp_mips.S b/runtime/interpreter/mterp/out/mterp_mips.S
index 74fee39..e830835 100644
--- a/runtime/interpreter/mterp/out/mterp_mips.S
+++ b/runtime/interpreter/mterp/out/mterp_mips.S
@@ -809,7 +809,6 @@
.global artMterpAsmInstructionStart
- .type artMterpAsmInstructionStart, %function
artMterpAsmInstructionStart = .L_op_nop
.text
@@ -7871,7 +7870,6 @@
.balign 128
- .size artMterpAsmInstructionStart, .-artMterpAsmInstructionStart
.global artMterpAsmInstructionEnd
artMterpAsmInstructionEnd:
@@ -7881,7 +7879,6 @@
* ===========================================================================
*/
.global artMterpAsmSisterStart
- .type artMterpAsmSisterStart, %function
.text
.balign 4
artMterpAsmSisterStart:
@@ -7941,14 +7938,11 @@
.Lop_ushr_long_2addr_finish:
SET_VREG64_GOTO(v1, zero, t3, t0) # vA/vA+1 <- rlo/rhi
-
- .size artMterpAsmSisterStart, .-artMterpAsmSisterStart
.global artMterpAsmSisterEnd
artMterpAsmSisterEnd:
.global artMterpAsmAltInstructionStart
- .type artMterpAsmAltInstructionStart, %function
.text
artMterpAsmAltInstructionStart = .L_ALT_op_nop
@@ -12561,7 +12555,6 @@
jalr zero, t9 # Tail call to Mterp(self, shadow_frame, dex_pc_ptr)
.balign 128
- .size artMterpAsmAltInstructionStart, .-artMterpAsmAltInstructionStart
.global artMterpAsmAltInstructionEnd
artMterpAsmAltInstructionEnd:
/* File: mips/footer.S */
diff --git a/runtime/interpreter/mterp/out/mterp_mips64.S b/runtime/interpreter/mterp/out/mterp_mips64.S
index 27fa318..b6af040 100644
--- a/runtime/interpreter/mterp/out/mterp_mips64.S
+++ b/runtime/interpreter/mterp/out/mterp_mips64.S
@@ -429,7 +429,6 @@
.global artMterpAsmInstructionStart
- .type artMterpAsmInstructionStart, %function
artMterpAsmInstructionStart = .L_op_nop
.text
@@ -7297,7 +7296,6 @@
.balign 128
- .size artMterpAsmInstructionStart, .-artMterpAsmInstructionStart
.global artMterpAsmInstructionEnd
artMterpAsmInstructionEnd:
@@ -7307,18 +7305,14 @@
* ===========================================================================
*/
.global artMterpAsmSisterStart
- .type artMterpAsmSisterStart, %function
.text
.balign 4
artMterpAsmSisterStart:
-
- .size artMterpAsmSisterStart, .-artMterpAsmSisterStart
.global artMterpAsmSisterEnd
artMterpAsmSisterEnd:
.global artMterpAsmAltInstructionStart
- .type artMterpAsmAltInstructionStart, %function
.text
artMterpAsmAltInstructionStart = .L_ALT_op_nop
@@ -12187,7 +12181,6 @@
jalr zero, t9 # (self, shadow_frame, dex_pc_ptr) Note: tail call.
.balign 128
- .size artMterpAsmAltInstructionStart, .-artMterpAsmAltInstructionStart
.global artMterpAsmAltInstructionEnd
artMterpAsmAltInstructionEnd:
/* File: mips64/footer.S */
diff --git a/runtime/interpreter/mterp/out/mterp_x86.S b/runtime/interpreter/mterp/out/mterp_x86.S
index 984ecfa..514ecac 100644
--- a/runtime/interpreter/mterp/out/mterp_x86.S
+++ b/runtime/interpreter/mterp/out/mterp_x86.S
@@ -401,7 +401,6 @@
.global SYMBOL(artMterpAsmInstructionStart)
- FUNCTION_TYPE(SYMBOL(artMterpAsmInstructionStart))
SYMBOL(artMterpAsmInstructionStart) = .L_op_nop
.text
@@ -6465,7 +6464,6 @@
.balign 128
- SIZE(SYMBOL(artMterpAsmInstructionStart),SYMBOL(artMterpAsmInstructionStart))
.global SYMBOL(artMterpAsmInstructionEnd)
SYMBOL(artMterpAsmInstructionEnd):
@@ -6475,18 +6473,14 @@
* ===========================================================================
*/
.global SYMBOL(artMterpAsmSisterStart)
- FUNCTION_TYPE(SYMBOL(artMterpAsmSisterStart))
.text
.balign 4
SYMBOL(artMterpAsmSisterStart):
-
- SIZE(SYMBOL(artMterpAsmSisterStart),SYMBOL(artMterpAsmSisterStart))
.global SYMBOL(artMterpAsmSisterEnd)
SYMBOL(artMterpAsmSisterEnd):
.global SYMBOL(artMterpAsmAltInstructionStart)
- FUNCTION_TYPE(SYMBOL(artMterpAsmAltInstructionStart))
.text
SYMBOL(artMterpAsmAltInstructionStart) = .L_ALT_op_nop
@@ -12635,7 +12629,6 @@
jmp .L_op_nop+(255*128)
.balign 128
- SIZE(SYMBOL(artMterpAsmAltInstructionStart),SYMBOL(artMterpAsmAltInstructionStart))
.global SYMBOL(artMterpAsmAltInstructionEnd)
SYMBOL(artMterpAsmAltInstructionEnd):
/* File: x86/footer.S */
diff --git a/runtime/interpreter/mterp/out/mterp_x86_64.S b/runtime/interpreter/mterp/out/mterp_x86_64.S
index 84f8b52..cfee2b8 100644
--- a/runtime/interpreter/mterp/out/mterp_x86_64.S
+++ b/runtime/interpreter/mterp/out/mterp_x86_64.S
@@ -383,7 +383,6 @@
.global SYMBOL(artMterpAsmInstructionStart)
- FUNCTION_TYPE(SYMBOL(artMterpAsmInstructionStart))
SYMBOL(artMterpAsmInstructionStart) = .L_op_nop
.text
@@ -6212,7 +6211,6 @@
.balign 128
- SIZE(SYMBOL(artMterpAsmInstructionStart),SYMBOL(artMterpAsmInstructionStart))
.global SYMBOL(artMterpAsmInstructionEnd)
SYMBOL(artMterpAsmInstructionEnd):
@@ -6222,18 +6220,14 @@
* ===========================================================================
*/
.global SYMBOL(artMterpAsmSisterStart)
- FUNCTION_TYPE(SYMBOL(artMterpAsmSisterStart))
.text
.balign 4
SYMBOL(artMterpAsmSisterStart):
-
- SIZE(SYMBOL(artMterpAsmSisterStart),SYMBOL(artMterpAsmSisterStart))
.global SYMBOL(artMterpAsmSisterEnd)
SYMBOL(artMterpAsmSisterEnd):
.global SYMBOL(artMterpAsmAltInstructionStart)
- FUNCTION_TYPE(SYMBOL(artMterpAsmAltInstructionStart))
.text
SYMBOL(artMterpAsmAltInstructionStart) = .L_ALT_op_nop
@@ -11870,7 +11864,6 @@
jmp .L_op_nop+(255*128)
.balign 128
- SIZE(SYMBOL(artMterpAsmAltInstructionStart),SYMBOL(artMterpAsmAltInstructionStart))
.global SYMBOL(artMterpAsmAltInstructionEnd)
SYMBOL(artMterpAsmAltInstructionEnd):
/* File: x86_64/footer.S */