public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-5760] testsuite, Darwin: Add support for Mach-O function body scans.
@ 2023-11-22 14:50 Iain D Sandoe
  0 siblings, 0 replies; only message in thread
From: Iain D Sandoe @ 2023-11-22 14:50 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:2a46e0e7e20e6e9095708704ac0180859e258b7d

commit r14-5760-g2a46e0e7e20e6e9095708704ac0180859e258b7d
Author: Iain Sandoe <iain@sandoe.co.uk>
Date:   Thu Oct 26 09:52:04 2023 +0100

    testsuite, Darwin: Add support for Mach-O function body scans.
    
    We need to process the source slightly differently from ELF, especially
    in that we have __USER_LABEL_PREFIX__ and there are no function start
    and end assembler directives.  This means we cannot delineate functions
    when frame output is switched off.
    
    TODO: consider adding -mtest-markers or something similar to inject
    assembler comments that can be scanned for.
    
    gcc/testsuite/ChangeLog:
    
            * lib/scanasm.exp: Initial handling for Mach-O function body scans.
    
    Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
    Co-authored-by: Richard Sandiford <richard.sandiford@arm.com>

Diff:
---
 gcc/testsuite/lib/scanasm.exp | 34 +++++++++++++++++++++++++++-------
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
index 16b5198d38b..85ee54ff9a8 100644
--- a/gcc/testsuite/lib/scanasm.exp
+++ b/gcc/testsuite/lib/scanasm.exp
@@ -804,23 +804,34 @@ proc configure_check-function-bodies { config } {
 
     # Regexp for the start of a function definition (name in \1).
     if { [istarget nvptx*-*-*] } {
-	set up_config(start) {^// BEGIN(?: GLOBAL|) FUNCTION DEF: ([a-zA-Z_]\S+)$}
+	set up_config(start) {
+	    {^// BEGIN(?: GLOBAL|) FUNCTION DEF: ([a-zA-Z_]\S+)$}
+	}
+    } elseif { [istarget *-*-darwin*] } {
+	set up_config(start) {
+	    {^_([a-zA-Z_]\S+):$}
+	    {^LFB[0-9]+:}
+	}
     } else {
-	set up_config(start) {^([a-zA-Z_]\S+):$}
+	set up_config(start) {{^([a-zA-Z_]\S+):$}}
     }
 
     # Regexp for the end of a function definition.
     if { [istarget nvptx*-*-*] } {
 	set up_config(end) {^\}$}
+    } elseif { [istarget *-*-darwin*] } {
+	set up_config(end) {^LFE[0-9]+}
     } else {
 	set up_config(end) {^\s*\.size}
     }
- 
+
     # Regexp for lines that aren't interesting.
     if { [istarget nvptx*-*-*] } {
 	# Skip lines beginning with '//' comments ('-fverbose-asm', for
 	# example).
 	set up_config(fluff) {^\s*(?://)}
+    } elseif { [istarget *-*-darwin*] } {
+	set up_config(fluff) {^\s*(?:\.|//|@)|^L[0-9ACESV]}
     } else {
 	# Skip lines beginning with labels ('.L[...]:') or other directives
 	# ('.align', '.cfi_startproc', '.quad [...]', '.text', etc.), '//' or
@@ -852,9 +863,19 @@ proc parse_function_bodies { config filename result } {
     set fd [open $filename r]
     set in_function 0
     while { [gets $fd line] >= 0 } {
-	if { [regexp $up_config(start) $line dummy function_name] } {
-	    set in_function 1
-	    set function_body ""
+	if { $in_function == 0 } {
+	    if { [regexp [lindex $up_config(start) 0] \
+			 $line dummy function_name] } {
+		set in_function 1
+		set function_body ""
+	    }
+	} elseif { $in_function < [llength $up_config(start)] } {
+	    if { [regexp [lindex $up_config(start) $in_function] $line] } {
+		incr in_function
+	    } else {
+		verbose "parse_function_bodies: skipped $function_name"
+		set in_function 0
+	    }
 	} elseif { $in_function } {
 	    if { [regexp $up_config(end) $line] } {
 		verbose "parse_function_bodies: $function_name:\n$function_body"
@@ -957,7 +978,6 @@ proc check-function-bodies { args } {
     set start_expected {^(\S+):$}
 
     configure_check-function-bodies config
-
     set have_bodies 0
     if { [is_remote host] } {
 	remote_upload host "$filename"

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-11-22 14:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-22 14:50 [gcc r14-5760] testsuite, Darwin: Add support for Mach-O function body scans Iain D Sandoe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).