diff options
author | Jan Vorlicek <janvorli@microsoft.com> | 2016-06-16 15:15:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-16 15:15:08 +0200 |
commit | aaf5e7d6a1fa53576bbaa057eb7b7147281284cf (patch) | |
tree | fa055f15ac3d3f771ac16bd1555a48aad03df11e /src/pal | |
parent | d5a0338ddefc9551f3f573b4950ab046f58d9464 (diff) | |
download | coreclr-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.inc | 3 | ||||
-rw-r--r-- | src/pal/inc/unixasmmacrosamd64.inc | 14 | ||||
-rw-r--r-- | src/pal/inc/unixasmmacrosarm.inc | 8 | ||||
-rw-r--r-- | src/pal/inc/unixasmmacrosarm64.inc | 8 | ||||
-rw-r--r-- | src/pal/src/arch/i386/debugbreak.S | 2 |
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 |