From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6132 invoked by alias); 7 Sep 2007 22:45:18 -0000 Received: (qmail 6114 invoked by uid 22791); 7 Sep 2007 22:45:16 -0000 X-Spam-Check-By: sourceware.org Received: from hq.tensilica.com (HELO mailapp.tensilica.com) (65.205.227.29) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 07 Sep 2007 22:45:09 +0000 Received: from localhost ([127.0.0.1]) by mailapp.tensilica.com with esmtp (Exim 4.34) id 1ITmZX-0002I1-Jy; Fri, 07 Sep 2007 15:45:07 -0700 Received: from mailapp.tensilica.com ([127.0.0.1]) by localhost (mailapp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 07609-08; Fri, 7 Sep 2007 15:45:07 -0700 (PDT) Received: from maxim_fc5.hq.tensilica.com ([192.168.11.68]) by mailapp.tensilica.com with esmtp (Exim 4.34) id 1ITmZX-0002Hw-6c; Fri, 07 Sep 2007 15:45:07 -0700 Message-ID: <46E1D494.2010409@hq.tensilica.com> Date: Fri, 07 Sep 2007 22:45:00 -0000 From: Maxim Grigoriev User-Agent: Thunderbird 1.5.0.9 (X11/20070102) MIME-Version: 1.0 To: Pierre Muller , gdb-patches@sources.redhat.com Subject: Re: [RFC] adding gdb.pascal subdir: updated version References: <000601c77c0a$26b91750$742b45f0$@u-strasbg.fr> <20070412154722.GA4189@caradoc.them.org> <001201c77de2$008bc7b0$01a35710$@u-strasbg.fr> <002a01c7b3cf$1cd594f0$5680bed0$@u-strasbg.fr> <000601c77c0a$26b91750$742b45f0$@u-strasbg.fr> <2007041215472 <001901c7f19f$db34e780$919eb680$@u-strasbg.fr> In-Reply-To: <001901c7f19f$db34e780$919eb680$@u-strasbg.fr> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-09/txt/msg00097.txt.bz2 Try adding patches as an attachment. -- Maxim Pierre Muller wrote: > I don't understand what is going on with my email program, > but if I check before sending, every line of the headers > is OK (all header diff lines start with '+#') > But as soon as I send the email, it gets transformed > and mangled. > > I attached the diff file, > hoping that this will avoid my troubles. > > Pierre Muller > Pascal language maintainer > > > PS: Even more strangely, the generated mess > in the headers disappears as soon as I do a Reply, > There is probably some hidden feature of Outlook that I still did > not understand and disable :( > > >> Index: lib/pascal.exp >> =================================================================== >> RCS file: lib/pascal.exp >> diff -N lib/pascal.exp >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ lib/pascal.exp 7 Sep 2007 21:46:32 -0000 >> @@ -0,0 +1,152 @@ >> +# Copyright 2007 Free Software Foundation, Inc. >> +# >> +# This program is free software; you can redistribute it and/or modify >> +# it under the terms of the GNU General Public License as published by >> +# the Free Software Foundation; either version 3 of the License, or >> +# (at your option) any later version. >> +# >> +# This program is distributed in the hope that it will be useful, >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +# GNU General Public License for more details. >> +# >> +# You should have received a copy of the GNU General Public License >> +# along with this program. If not, see >> . >> + >> +load_lib libgloss.exp >> > > It is almost perfectly restored, just the last line containing the web > address is still wrongly splitted. If someone can explain how to disable > Outlook from poking around my lines, I would appreciate greatly. > > ------------------------------------------------------------------------ > > 2007-09-08 Pierre Muller > Daniel Jacobowitz > > * Makefile.in (ALL_SUBDIRS): Add gdb.pascal. > * configure.ac (AC_OUTPUT): Add gdb.pascal/Makefile. > * configure: Regenerated. > * gdb.pascal/Makefile.in, gdb.pascal/hello.exp, gdb.pascal/hello.pas, > gdb.pascal/types.exp, lib/pascal.exp: New files. > > > Index: Makefile.in > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/Makefile.in,v > retrieving revision 1.18 > diff -u -p -r1.18 Makefile.in > --- Makefile.in 27 Mar 2007 18:09:35 -0000 1.18 > +++ Makefile.in 7 Sep 2007 21:46:12 -0000 > @@ -37,7 +37,7 @@ RPATH_ENVVAR = @RPATH_ENVVAR@ > ALL_SUBDIRS = gdb.ada gdb.arch gdb.asm gdb.base gdb.cp gdb.disasm \ > gdb.dwarf2 \ > gdb.fortran gdb.server gdb.java gdb.mi \ > - gdb.objc gdb.threads gdb.trace gdb.xml \ > + gdb.objc gdb.pascal gdb.threads gdb.trace gdb.xml \ > $(SUBDIRS) > > EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \ > Index: configure > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/configure,v > retrieving revision 1.23 > diff -u -p -r1.23 configure > --- configure 23 Jan 2007 17:11:54 -0000 1.23 > +++ configure 7 Sep 2007 21:46:24 -0000 > @@ -3102,7 +3102,7 @@ done > > > > - ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.fortran/Makefile gdb.server/Makefile gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" > + ac_config_files="$ac_config_files Makefile gdb.ada/Makefile gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile gdb.fortran/Makefile gdb.server/Makefile gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile gdb.pascal/Makefile gdb.threads/Makefile gdb.trace/Makefile gdb.xml/Makefile" > cat >confcache <<\_ACEOF > # This file is a shell script that caches the results of configure > # tests run on this system so they can be shared between configure > Index: configure.ac > =================================================================== > RCS file: /cvs/src/src/gdb/testsuite/configure.ac,v > retrieving revision 1.7 > diff -u -p -r1.7 configure.ac > --- configure.ac 23 Aug 2007 17:58:44 -0000 1.7 > +++ configure.ac 7 Sep 2007 21:46:24 -0000 > @@ -113,6 +113,6 @@ AC_OUTPUT([Makefile \ > gdb.arch/Makefile gdb.asm/Makefile gdb.base/Makefile \ > gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile \ > gdb.fortran/Makefile gdb.server/Makefile \ > - gdb.java/Makefile gdb.mi/Makefile \ > - gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile \ > + gdb.java/Makefile gdb.mi/Makefile gdb.objc/Makefile \ > + gdb.pascal/Makefile gdb.threads/Makefile gdb.trace/Makefile \ > gdb.xml/Makefile]) > Index: gdb.pascal/Makefile.in > =================================================================== > RCS file: gdb.pascal/Makefile.in > diff -N gdb.pascal/Makefile.in > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ gdb.pascal/Makefile.in 7 Sep 2007 21:46:31 -0000 > @@ -0,0 +1,24 @@ > +VPATH = @srcdir@ > +srcdir = @srcdir@ > + > +EXECUTABLES = hello/hello > + > +MISCELLANEOUS = > + > +all info install-info dvi install uninstall installcheck check: > + @echo "Nothing to be done for $@..." > + > +clean mostlyclean: > + -find . -name '*.o' -print | xargs rm -f > + -find . -name '*.ali' -print | xargs rm -f > + -find . -name 'b~*.ad[sb]' -print | xargs rm -f > + -rm -f *~ a.out xgdb *.x *.ci *.tmp > + -rm -f *~ *.o a.out xgdb *.x *.ci *.tmp > + -rm -f core core.coremaker coremaker.core corefile $(EXECUTABLES) > + -rm -f $(MISCELLANEOUS) twice-tmp.c > + > +distclean maintainer-clean realclean: clean > + -rm -f *~ core > + -rm -f Makefile config.status config.log > + -rm -f *-init.exp > + -rm -fr *.log summary detail *.plog *.sum *.psum site.* > Index: gdb.pascal/hello.exp > =================================================================== > RCS file: gdb.pascal/hello.exp > diff -N gdb.pascal/hello.exp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ gdb.pascal/hello.exp 7 Sep 2007 21:46:31 -0000 > @@ -0,0 +1,72 @@ > +# Copyright 2007 Free Software Foundation, Inc. > +# > +# This program is free software; you can redistribute it and/or modify > +# it under the terms of the GNU General Public License as published by > +# the Free Software Foundation; either version 3 of the License, or > +# (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program. If not, see . > + > +if $tracelevel then { > + strace $tracelevel > +} > + > +load_lib "pascal.exp" > + > +set testfile "hello" > +set srcfile ${testfile}.pas > +set binfile ${objdir}/${subdir}/${testfile} > + > +if {[gdb_compile_pascal "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug ]] != "" } { > + return -1 > +} > + > +gdb_exit > +gdb_start > +gdb_reinitialize_dir $srcdir/$subdir > +gdb_load ${binfile} > +set bp_location1 [gdb_get_line_number "set breakpoint 1 here"] > +set bp_location2 [gdb_get_line_number "set breakpoint 2 here"] > + > +if { [gdb_breakpoint ${srcfile}:${bp_location1}] } { > + pass "setting breakpoint 1" > +} > +if { [gdb_breakpoint ${srcfile}:${bp_location2}] } { > + pass "setting breakpoint 2" > +} > + > +# Verify that "start" lands inside the right procedure. > +if { [gdb_start_cmd] < 0 } { > + untested start > + return -1 > +} > + > +# This test fails for gpc > +# because debug information for 'main' > +# is in some > +gdb_test "" \ > + ".* at .*hello.pas.*" \ > + "start" > + > +gdb_test "cont" \ > + "Breakpoint .*:${bp_location1}.*" \ > + "Going to first breakpoint" > +gdb_test "print st" \ > + ".* = ''.*" \ > + "Empty string check" > + > +# This test also fails for gpc because the program > +# stops after the string has been written > +# while it should stop before writing it > +gdb_test "cont" \ > + "Breakpoint .*:${bp_location2}.*" \ > + "Going to second breakpoint" > +gdb_test "print st" \ > + ".* = 'Hello, world!'.*" \ > + "String after assignment check" > Index: gdb.pascal/hello.pas > =================================================================== > RCS file: gdb.pascal/hello.pas > diff -N gdb.pascal/hello.pas > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ gdb.pascal/hello.pas 7 Sep 2007 21:46:31 -0000 > @@ -0,0 +1,15 @@ > +program hello; > + > +var > + st : string; > + > +procedure print_hello; > +begin > + Writeln('Before assignment'); { set breakpoint 1 here } > + st:='Hello, world!'; > + writeln(st); {set breakpoint 2 here } > +end; > + > +begin > + print_hello; > +end. > Index: gdb.pascal/types.exp > =================================================================== > RCS file: gdb.pascal/types.exp > diff -N gdb.pascal/types.exp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ gdb.pascal/types.exp 7 Sep 2007 21:46:31 -0000 > @@ -0,0 +1,109 @@ > +# Copyright 1994, 1995, 1997, 1998, 2007 Free Software Foundation, Inc. > +# Copyright 2007 Free Software Foundation, Inc. > +# > +# This program is free software; you can redistribute it and/or modify > +# it under the terms of the GNU General Public License as published by > +# the Free Software Foundation; either version 3 of the License, or > +# (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program. If not, see . > + > +# Please email any bugs, comments, and/or additions to this file to: > +# bug-gdb@prep.ai.mit.edu > + > +# This file was adapted from old Chill tests by Stan Shebs > +# (shebs@cygnus.com). > +# Adapted to pascal by Pierre Muller > + > +if $tracelevel then { > + strace $tracelevel > +} > + > +set prms_id 0 > +set bug_id 0 > + > +# Set the current language to pascal. This counts as a test. If it > +# fails, then we skip the other tests. > + > +proc set_lang_pascal {} { > + global gdb_prompt > + > + if [gdb_test "set language pascal" ""] { > + return 0; > + } > + > + if ![gdb_test "show language" ".* source language is \"pascal\".*"] { > + return 1; > + } else { > + return 0; > + } > +} > + > +proc test_integer_literal_types_accepted {} { > + global gdb_prompt > + > + # Test various decimal values. > + # Should be integer*4 probably. > + gdb_test "pt 123" "type = int" > +} > +proc test_character_literal_types_accepted {} { > + global gdb_prompt > + > + # Test various character values. > + > + gdb_test "pt 'a'" "type = char" > +} > + > +proc test_string_literal_types_accepted {} { > + global gdb_prompt > + > + # Test various character values. > + > + gdb_test "pt 'a simple string'" "type = string" > +} > + > +proc test_logical_literal_types_accepted {} { > + global gdb_prompt > + > + # Test the only possible values for a logical, TRUE and FALSE. > + > + gdb_test "pt TRUE" "type = bool" > + gdb_test "pt FALSE" "type = bool" > +} > + > +proc test_float_literal_types_accepted {} { > + global gdb_prompt > + > + # Test various floating point formats > + > + # this used to guess whether to look for "real*4" or > + # "real*8" based on a target config variable, but noone > + # maintained it properly. > + > + gdb_test "pt .44" "type = double" > + gdb_test "pt 44.0" "type = double" > + gdb_test "pt 10e20" "type = double" > + gdb_test "pt 10E20" "type = double" > +} > + > +# Start with a fresh gdb. > + > +gdb_exit > +gdb_start > +gdb_reinitialize_dir $srcdir/$subdir > + > +if [set_lang_pascal] then { > + test_integer_literal_types_accepted > + test_logical_literal_types_accepted > + test_character_literal_types_accepted > + test_string_literal_types_accepted > + test_float_literal_types_accepted > +} else { > + warning "$test_name tests suppressed." 0 > +} > Index: lib/pascal.exp > =================================================================== > RCS file: lib/pascal.exp > diff -N lib/pascal.exp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ lib/pascal.exp 7 Sep 2007 21:46:32 -0000 > @@ -0,0 +1,152 @@ > +# Copyright 2007 Free Software Foundation, Inc. > +# > +# This program is free software; you can redistribute it and/or modify > +# it under the terms of the GNU General Public License as published by > +# the Free Software Foundation; either version 3 of the License, or > +# (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program. If not, see . > + > +load_lib libgloss.exp > + > +set pascal_init_done 0 > + > +# This procedure looks for a suitable pascal compiler > +# For now only GNU pascal compiler and Free Pascal compiler > +# are searched. > +# First, environment variable GPC is checked > +# if present, GPC compiler is assumed to be the value of > +# that environment variable. > +# Second, environment variable FPC is checked > +# if present, Free Pascal compiler is assumed to be the value of > +# that environment variable. > +# Third, gpc executable is searched using `which gpc` > +# Lastly, fpc executable is searched using `which fpc` > +# Using environment variable allows to force > +# which compiler is used in testsuite > + > +proc pascal_init {} { > + global pascal_init_done > + global pascal_compiler_is_gpc > + global pascal_compiler_is_fpc > + global gpc_compiler > + global fpc_compiler > + global env > + > + if { $pascal_init_done == 1 } { > + return > + } > + > + set pascal_compiler_is_gpc 0 > + set pascal_compiler_is_fpc 0 > + set gpc_compiler [transform gpc] > + set fpc_compiler [transform fpc] > + > + if ![is_remote host] { > + if { [info exists env(GPC)] } { > + set pascal_compiler_is_gpc 1 > + set gpc_compiler $env(GPC) > + verbose -log "Assuming GNU Pascal ($gpc_compiler)" > + } elseif { [info exists env(FPC)] } { > + set pascal_compiler_is_fpc 1 > + set fpc_compiler $env(FPC) > + verbose -log "Assuming Free Pascal ($fpc_compiler)" > + } elseif { [which $gpc_compiler] != 0 } { > + set pascal_compiler_is_gpc 1 > + verbose -log "GNU Pascal compiler found" > + } elseif { [which $fpc_compiler] != 0 } { > + set pascal_compiler_is_fpc 1 > + verbose -log "Free Pascal compiler found" > + } > + } > + set pascal_init_done 1 > +} > + > +proc gpc_compile {source dest type options} { > + global gpc_compiler > + set add_flags "" > + if {$type == "object"} { > + append add_flags " -c" > + } > + > + if { $type == "preprocess" } { > + append add_flags " -E" > + } > + > + if { $type == "assembly" } { > + append add_flags " -S" > + } > + > + foreach i $options { > + if { $i == "debug" } { > + if [board_info $dest exists debug_flags] { > + append add_flags " [board_info $dest debug_flags]"; > + } else { > + append add_flags " -g" > + } > + } > + } > + > + set result [remote_exec host $gpc_compiler "-o $dest --automake $add_flags $source"] > + return $result > +} > + > +proc fpc_compile {source dest type options} { > + global fpc_compiler > + set add_flags "" > + if {$type == "object"} { > + append add_flags " -Cn" > + } > + > + if { $type == "preprocess" } { > + return "Free Pascal can not preprocess" > + } > + > + if { $type == "assembly" } { > + append add_flags " -al" > + } > + > + foreach i $options { > + if { $i == "debug" } { > + if [board_info $dest exists debug_flags] { > + append add_flags " [board_info $dest debug_flags]"; > + } else { > + append add_flags " -g" > + } > + } > + } > + > + set result [remote_exec host $fpc_compiler "-o$dest $add_flags $source"] > + return $result > +} > + > +proc gdb_compile_pascal {source dest type options} { > + global pascal_init_done > + global pascal_compiler_is_gpc > + global pascal_compiler_is_fpc > + > + if { $pascal_init_done == 0 } { > + pascal_init > + } > + > + if { $pascal_compiler_is_fpc == 1 } { > + set result [fpc_compile $source $dest $type $options] > + } elseif { $pascal_compiler_is_gpc == 1 } { > + set result [gpc_compile $source $dest $type $options] > + } else { > + unsupported "No pascal compiler found" > + return "No pascal compiler. Compilation failed." > + } > + > + if ![file exists $dest] { > + unsupported "Pascal compilation failed: $result" > + return "Pascal compilation failed." > + } > +} > + > >