summaryrefslogtreecommitdiff
path: root/src/pal
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2016-06-16 15:15:08 +0200
committerGitHub <noreply@github.com>2016-06-16 15:15:08 +0200
commitaaf5e7d6a1fa53576bbaa057eb7b7147281284cf (patch)
treefa055f15ac3d3f771ac16bd1555a48aad03df11e /src/pal
parentd5a0338ddefc9551f3f573b4950ab046f58d9464 (diff)
downloadcoreclr-aaf5e7d6a1fa53576bbaa057eb7b7147281284cf.tar.gz
coreclr-aaf5e7d6a1fa53576bbaa057eb7b7147281284cf.tar.bz2
coreclr-aaf5e7d6a1fa53576bbaa057eb7b7147281284cf.zip
Remove end labels from regular asm procs on Unix (#5777)
All ASM proc now unnecessarily have xxx_End label marking the end of the proc. This causes confusing stack traces in some cases, especially on OSX, when instead of a name of an actual function, a name of the previous one with the _End attached to it is shown. This change fixes that by modifying the LEAF_END macro to not to be defined as an equivalent of the LEAF_END_MARKED.
Diffstat (limited to 'src/pal')
-rw-r--r--src/pal/inc/unixasmmacros.inc3
-rw-r--r--src/pal/inc/unixasmmacrosamd64.inc14
-rw-r--r--src/pal/inc/unixasmmacrosarm.inc8
-rw-r--r--src/pal/inc/unixasmmacrosarm64.inc8
-rw-r--r--src/pal/src/arch/i386/debugbreak.S2
5 files changed, 22 insertions, 13 deletions
diff --git a/src/pal/inc/unixasmmacros.inc b/src/pal/inc/unixasmmacros.inc
index b372666d2e..7186645b34 100644
--- a/src/pal/inc/unixasmmacros.inc
+++ b/src/pal/inc/unixasmmacros.inc
@@ -20,9 +20,6 @@
#define C_PLTFUNC(name) name@PLT
#endif
-.macro LEAF_END Name, Section
- LEAF_END_MARKED \Name, \Section
-.endm
.macro END_PROLOGUE
.endm
diff --git a/src/pal/inc/unixasmmacrosamd64.inc b/src/pal/inc/unixasmmacrosamd64.inc
index 386b4b3a0e..df9b225604 100644
--- a/src/pal/inc/unixasmmacrosamd64.inc
+++ b/src/pal/inc/unixasmmacrosamd64.inc
@@ -16,10 +16,10 @@
.macro NESTED_END Name, Section
LEAF_END \Name, \Section
#if defined(__APPLE__)
+ .set LOCAL_LABEL(\Name\()_Size), . - C_FUNC(\Name)
.section __LD,__compact_unwind,regular,debug
.quad C_FUNC(\Name)
- .set C_FUNC(\Name\()_Size), C_FUNC(\Name\()_End) - C_FUNC(\Name)
- .long C_FUNC(\Name\()_Size)
+ .long LOCAL_LABEL(\Name\()_Size)
.long 0x04000000 # DWARF
.quad 0
.quad 0
@@ -42,15 +42,19 @@ C_FUNC(\Name):
.cfi_startproc
.endm
-.macro LEAF_END_MARKED Name, Section
-C_FUNC(\Name\()_End):
- .global C_FUNC(\Name\()_End)
+.macro LEAF_END Name, Section
#if !defined(__APPLE__)
.size \Name, .-\Name
#endif
.cfi_endproc
.endm
+.macro LEAF_END_MARKED Name, Section
+C_FUNC(\Name\()_End):
+ .global C_FUNC(\Name\()_End)
+ LEAF_END \Name, \Section
+.endm
+
.macro NOP_3_BYTE
nop dword ptr [rax]
.endm
diff --git a/src/pal/inc/unixasmmacrosarm.inc b/src/pal/inc/unixasmmacrosarm.inc
index 1295967192..a437f18048 100644
--- a/src/pal/inc/unixasmmacrosarm.inc
+++ b/src/pal/inc/unixasmmacrosarm.inc
@@ -27,12 +27,16 @@ C_FUNC(\Name):
C_FUNC(\Name):
.endm
+.macro LEAF_END Name, Section
+ .size \Name, .-\Name
+ .fnend
+.endm
+
.macro LEAF_END_MARKED Name, Section
.thumb_func
.global C_FUNC(\Name\()_End)
C_FUNC(\Name\()_End):
- .size \Name, .-\Name
- .fnend
+ LEAF_END \Name, \Section
.endm
.macro PREPARE_EXTERNAL_VAR Name, HelperReg
diff --git a/src/pal/inc/unixasmmacrosarm64.inc b/src/pal/inc/unixasmmacrosarm64.inc
index 8b54a4ec8a..ae60db4d35 100644
--- a/src/pal/inc/unixasmmacrosarm64.inc
+++ b/src/pal/inc/unixasmmacrosarm64.inc
@@ -25,11 +25,15 @@ C_FUNC(\Name):
.cfi_startproc
.endm
+.macro LEAF_END Name, Section
+ .size \Name, .-\Name
+ .cfi_endproc
+.endm
+
.macro LEAF_END_MARKED Name, Section
.global C_FUNC(\Name\()_End)
C_FUNC(\Name\()_End):
- .size \Name, .-\Name
- .cfi_endproc
+ LEAF_END \Name, \Section
.endm
.macro PREPARE_EXTERNAL_VAR Name, HelperReg
diff --git a/src/pal/src/arch/i386/debugbreak.S b/src/pal/src/arch/i386/debugbreak.S
index 3eac04cdca..3065e4064c 100644
--- a/src/pal/src/arch/i386/debugbreak.S
+++ b/src/pal/src/arch/i386/debugbreak.S
@@ -8,5 +8,5 @@
LEAF_ENTRY DBG_DebugBreak, _TEXT
int3
ret
-LEAF_END DBG_DebugBreak, _TEXT
+LEAF_END_MARKED DBG_DebugBreak, _TEXT