[RFA,2/3,V2] Add "class" option for pascal compiler

Message ID 000301d0300b$65acc7a0$310656e0$@muller@ics-cnrs.unistra.fr
State New, archived
Headers

Commit Message

Pierre Muller Jan. 14, 2015, 3:04 p.m. UTC
  > -----Message d'origine-----
> De : gdb-patches-owner@sourceware.org [mailto:gdb-patches-
> owner@sourceware.org] De la part de Doug Evans
> Envoyé : samedi 10 janvier 2015 22:23
> À : Pierre Muller
> Cc : Pedro Alves; gdb-patches
> Objet : Re: [RFA PATCH 2/3] Add debug-stabs debug-dwarf and class
> option for pascal compiler
> 
> On Fri, Jan 9, 2015 at 4:55 PM, Pierre Muller
> <pierre.muller@ics-cnrs.unistra.fr> wrote:
> >> Hi.
> >> This patch makes me uncomfortable.
> >> It's to a pascal specific file, so at least the discomfort is
> contained
> >> :-),
> >> but I wouldn't want this spreading.
> >>
> >> How to select debug information should be
> >> orthogonal to compilation language,
> >> and there are a myriad of ways to select what kind of dwarf debug
> info
> >> to get (with/without type units, with/without .gdb_index,
> with/without
> >> dwz, and so on).  I have board files to help me drive the various
> >> combinations I'm interested in.  This won't work if gdb.pascal/*
> >> starts hardcoding debug info into the test.
> >>
> >> Maybe there's a good reason to do it this way for pascal,
> >> but I need more data.
> >
> >  Hi Doug, the reasons of this patch are:
> >
> > 1) the particular problem that the series fixes is strictly limited
> > to stabs debugging information.
> >
> >   Thus to really test that this bug has been fixed, I need to compile
> > the test code using stabs debugging format (which I now realize
> > I did not do in the third part of the patch series).
> >
> > 2) the pascal language support tries to support both
> > GNU pascal compiler (aka GPC) and Free Pascal Compiler (aka FPC).
> >
> >   These two compilers have very different options,
> > so the submitted patch purpose is to unify the selection of stabs
> versus dwarf
> > debug format independently from the used pascal compiler.
> >
> >  For other pascal tests, only debug is used, which results in the
> default
> > format according to the target architecture and operating system.
> >
> > I hope that the explanations above are sufficient to ease your
> discomfort.
> 
> Yeah, I figured those are the reasons, but I dunno.
> We're inventing something new here when existing mechanisms
> can already handle this.
> 
> One *could* have the test be debug-format agnostic,
> and to test with stabs just do
> make check RUNTESTFLAGS=--target_board=stabs
> 
> If you're using stabs you'll want to run the whole testsuite with stabs
> anyway.
> 
> Plus if a compiler has a different spelling for -gstabs, one could
> have another board file for that compiler: you'll want to run the
> whole testsuite
> with that compiler anyway.
> 
> make check RUNTESTFLAGS="gdb.pascal/*.exp --target_board=fpc-stabs"
> 
> or some such.
> 
> Obviously, by "whole testsuite" I mean the pascal parts.
> So that raises a question that may help guide the discussion.
> When testing with fpc, how do you run the testsuite?
> Do you just run the pascal subset, gdb.pascal/*.exp?
> Or do you run the WHOLE testsuite (i.e., gdb.*/*.exp),
> e.g., just a plain "make check"
> and expect the test harness to pick up fpc and DTRT.
> How do other languages handle this I wonder.
> 
> I'm not totally opposed to this (I don't like to say "No."),
> but I'm still uncomfortable with the patch.

  OK, 

so let's do it that way:
I removed the part you are uncomfortable with
and simplify the part 2 to only add the new "class" option,
see updated patch below.

  I can always resubmit this later
if I really feel that it is useful,
but I admit that your point about the default 
debug mode is valid.

  Is the modified patch series
OK for you?

Pierre Muller
as pascal language maintainer



gdb/testsuite ChangeLog entry:

2015-01-14  Pierre Muller  <muller@soureware.org>

	* lib/pascal.exp (gpc_compile): Add new option "class".
	(fpc_compile): Likewise.
---
 gdb/testsuite/lib/pascal.exp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
  

Patch

diff --git a/gdb/testsuite/lib/pascal.exp b/gdb/testsuite/lib/pascal.exp
index 994e3da..7b8b0e0 100644
--- a/gdb/testsuite/lib/pascal.exp
+++ b/gdb/testsuite/lib/pascal.exp
@@ -91,6 +91,13 @@  proc gpc_compile {source dest type options} {
 		append add_flags " -g"
 	    }
 	}
+	if { $i == "class" } {
+	    if [board_info $dest exists pascal_class_flags] {
+		append add_flags " [board_info $dest pscal_class_flags]"
+	    } else {
+		append add_flags " --extended-syntax"
+	    }
+	}
     }
 
     set result [remote_exec host $gpc_compiler "-o $dest --automake $add_flags $source"]
@@ -120,6 +127,13 @@  proc fpc_compile {source dest type options} {
 		append add_flags " -g"
 	    }
 	}
+	if { $i == "class" } {
+	    if [board_info $dest exists pascal_class_flags] {
+		append add_flags " [board_info $dest pscal_class_flags]"
+	    } else {
+		append add_flags " -Mobjfpc"
+	    }
+	}
     }
 
     set result [remote_exec host $fpc_compiler "-o$dest $add_flags $source"]