From: Baurzhan Ismagulov <baurzhan.ismagulov@sbs.com.tr>
To: gdb-patches@sources.redhat.com
Subject: Re: testcase for "absolute source" patch
Date: Wed, 18 Aug 2004 13:03:00 -0000 [thread overview]
Message-ID: <20040818130626.GB1411@ata.cs.hun.edu.tr> (raw)
In-Reply-To: <412107B7.nailE7I1XJVIH@mindspring.com>
[-- Attachment #1: Type: text/plain, Size: 1120 bytes --]
Hello, Michael!
Attached is the new version.
I've got a couple of questions:
1. Just for my knowledge: I've found the "int main" requirement in C99
5.1.2.2.1. But I couldn't find anything about function definitions
without a return type defaulting to int (i.e., should the compiler
treat the return type as int if it isn't specified?). Does C99 and
previous standards say anything about that? Is it different for
declarations and definitions?
2. As far as I could see, remote_exec host starts a new shell each time.
How should one do the following right?
remote_exec host cd ...
remote_exec host gdb_compile ...
remote_exec host cd ...
I'm reluctant to write scripts since I have to do the same with
gdb_test, too.
Changes:
* Remove the obsolete e-mail address.
* Add partial build != host support.
* Add comments before each proc.
* Fix indentation.
* Check for errors on system calls.
* Remove excessive quoting.
* Name the variables better.
* Save openp.c as a file.
* Make openp.c ANSI-compliant.
* Drop removing the test directory hierarchy.
With kind regards,
Baurjan.
[-- Attachment #2: openp.exp --]
[-- Type: text/plain, Size: 14454 bytes --]
# Copyright (C) 2004 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# This file was written by Baurjan Ismagulov <ibr@ata.cs.hun.edu.tr>.
# $Id: openp.exp,v 1.4 2004/08/18 12:45:58 ibr Exp $
# This file tests whether gdb finds the files properly given the
# following file names:
# 1. basename: file
# 2. absolute: /dir/file
# 3. relative: dir/file
# 4. in current: ./file
# 5. in upper: ../file
# Called in case of error.
proc handle_error {msg} {
perror $msg
}
# Resolve possibe /./ and /../ within the given path. We are paranoid
# about cases like "mkdir -p a/../b" (although GNU coreutils and Solaris
# 8 seem to handle this particular case).
# XXX: Can this be replaced with tcl path manipulation routines?
proc canonize_path {dir} {
set old_dir [pwd]
cd $dir
set new_dir [pwd]
cd $old_dir
return $new_dir
}
# Compile $src to $bin in $cdir.
# XXX: build == host.
proc cdir_compile {cdir src bin} {
if [catch {set old_dir [pwd]} msg] {
handle_error $msg
}
if [catch {cd $cdir} msg] {
handle_error $msg
}
if {[gdb_compile $src $bin executable debug] != ""} {
gdb_suppress_entire_file "Testcase compile failed."
}
if [catch {cd $old_dir} msg] {
handle_error $msg
}
}
# Move the binary to $bin_dir, add $path_dir to PATH, gdb_test in the
# $gdb_wd directory.
# XXX: build == host.
proc test_bin {gdb_wd bin_dir path_dir gdb_test_cmd gdb_resp txt} {
global binname
global binfile
global env
if {$bin_dir != ""} {
remote_exec host "mv $binfile $bin_dir"
}
if {$path_dir != "" && [info exists env(PATH)]} {
if [catch {set old_path $env(PATH)} msg] {
handle_error $msg
}
# XXX: Directory separator in PATH?
if [catch {set env(PATH) $env(PATH):$path_dir} msg] {
handle_error $msg
}
}
if [catch {set old_dir [pwd]} msg] {
handle_error $msg
}
if [catch {cd $gdb_wd} msg] {
handle_error $msg
}
gdb_start
gdb_test $gdb_test_cmd $gdb_resp $txt
gdb_exit
if [catch {cd $old_dir} msg] {
handle_error $msg
}
if [info exists old_path] {
if [catch {set env(PATH) $old_path} msg] {
handle_error $msg
}
}
if {$bin_dir != ""} {
remote_exec host "mv $bin_dir/$binname $binfile"
}
}
# Compile in $comp_dir, move the source to $srcfile_dir, perform $cmd1
# and $cmd2, gdb_test in gdb_wd.
# XXX: build == host.
proc test_src {comp_dir comp_srcfile comp_binfile srcfile_dir
gdb_wd cmd1 cmd2 gdb_test_cmd gdb_resp txt} {
global srcname;
global srcfile;
if [catch {set old_dir [pwd]} msg] {
handle_error $msg
}
cdir_compile $comp_dir $comp_srcfile $comp_binfile
if {$srcfile_dir != ""} {
remote_exec host "mv $srcfile $srcfile_dir"
}
if [catch {cd $gdb_wd} msg] {
handle_error $msg
}
gdb_start
if {$cmd1 != ""} {
gdb_test $cmd1 ""
}
if {$cmd2 != ""} {
gdb_test $cmd2 ""
}
gdb_test $gdb_test_cmd $gdb_resp $txt
gdb_exit
if [catch {cd $old_dir} msg] {
handle_error $msg
}
if {$srcfile_dir != ""} {
remote_exec host "mv $srcfile_dir/$srcname $srcfile"
}
}
if $tracelevel then {
strace $tracelevel
}
set prms_id 0
set bug_id 0
set testname "openp"
set srcname $testname.c
set binname $testname.bin
set testtmpdir [canonize_path $objdir/$subdir]/$testname
set srcfile $testtmpdir/subdir/src/$srcname
set binfile $testtmpdir/subdir/bin/$binname
set src_txt {1.int main\(\){return 0;}.*}
remote_exec host "mkdir -p $testtmpdir/subdir/src/subdir"
remote_exec host "mkdir -p $testtmpdir/subdir/bin/subdir"
remote_exec host "mkdir -p $testtmpdir/subdir/cwd/bin"
remote_exec host "mkdir -p $testtmpdir/subdir/cwd/src"
remote_exec host "mkdir -p $testtmpdir/subdir/dir$testtmpdir/subdir/src/subdir"
remote_exec host "mkdir -p $testtmpdir/subdir/dir$testtmpdir/subdir/bin"
remote_exec host "mkdir -p $testtmpdir/subdir/dir/src"
remote_exec host "mv $objdir/$subdir/$testname.c $srcfile"
cdir_compile $testtmpdir $srcfile $binfile
# b1+
test_bin $testtmpdir/subdir/bin \
"" \
"" \
"file $binname" \
"Reading symbols from $binfile\\.\\.\\.done\\..*" \
"openp b1+ (existing binary, basename)"
# b1-
test_bin $testtmpdir/subdir/cwd \
"" \
$testtmpdir/subdir/bin \
"file $binname" \
"Reading symbols from $binfile\\.\\.\\..*done\\..*" \
"openp b1- (non-existent binary, basename, find in PATH)"
# b2+
test_bin $testtmpdir/subdir/cwd \
"" \
"" \
"file $binfile" \
"Reading symbols from $binfile\\.\\.\\.done\\..*" \
"openp b2+ (existing binary, absolute name)"
# b2-a
# XXX: Should we match locale-specific messages?
test_bin $testtmpdir/subdir/cwd \
$testtmpdir/subdir/dir$testtmpdir/subdir/bin \
$testtmpdir/subdir/dir \
"file $binfile" \
"$binfile: .*" \
"openp b2-a (non-existent binary, absolute name, don't look in <PATH_dir>/absolute)"
# b2-
# XXX: Should we match locale-specific messages?
test_bin $testtmpdir/subdir/cwd \
$testtmpdir/subdir/dir \
$testtmpdir/subdir/dir \
"file $binfile" \
"$binfile: .*" \
"openp b2- (non-existent binary, absolute name, don't look for <PATH_dir>/basename)"
# b3+
test_bin $testtmpdir/subdir \
"" \
"" \
"file bin/$binname" \
"Reading symbols from $binfile\\.\\.\\.done\\..*" \
"openp b3+ (existing binary, relative name)"
# b3-r
# XXX: locale
test_bin $testtmpdir/subdir/cwd \
"" \
$testtmpdir/subdir \
"file bin/$binname" \
"bin/$binname: .*" \
"openp b3-r (non-existent binary, relative name, don't look in <PATH_dir>/relative)"
# b3-
# XXX: locale
test_bin $testtmpdir/subdir/cwd \
"" \
$testtmpdir/subdir/bin \
"file bin/$binname" \
"bin/$binname: .*" \
"openp b3- (non-existent binary, relative name, don't look in <PATH_dir>/basename)"
# b4+
test_bin $testtmpdir/subdir/bin \
"" \
"" \
"file ./$binname" \
"Reading symbols from $binfile\\.\\.\\.done\\..*" \
"openp b4+ (existing binary, in the current dir)"
# b4-
# XXX: locale
test_bin $testtmpdir/subdir/cwd \
"" \
$testtmpdir/subdir/bin \
"file ./$binname" \
"\\./$binname: .*" \
"openp b4- (non-existent binary, in the current dir, don't look in PATH)"
# b5+
test_bin $testtmpdir/subdir/bin/subdir \
"" \
"" \
"file ../$binname" \
"Reading symbols from $binfile\\.\\.\\.done\\..*" \
"openp b5+ (existing binary, in the upper dir)"
# b5-r
# XXX: locale
test_bin $testtmpdir/subdir/cwd \
"" \
$testtmpdir/subdir/bin/subdir \
"file ../$binname" \
"\\.\\./$binname: .*" \
"openp b5-r (non-existent binary, in the upper dir name, don't look in <PATH_dir>/relative)"
# b5-
# XXX: locale
test_bin $testtmpdir/subdir/cwd \
"" \
$testtmpdir/subdir/bin \
"file ../$binname" \
"\\.\\./$binname: .*" \
"openp b5- (non-existent binary, in the upper dir name, don't look in <PATH_dir>/basename)"
# s1+
test_src $testtmpdir/subdir/src $srcname $binfile \
"" \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s1+ (existing source, basename)"
# s1-.
test_src $testtmpdir/subdir/src $srcname $binfile \
$testtmpdir/subdir/cwd \
$testtmpdir/subdir/cwd \
"file $binfile" ""\
"l main" \
$src_txt \
"openp s1-. (non-existent source, basename, find in \$cwd/basename)"
# s1-da
test_src $testtmpdir/subdir/src $srcname $binfile \
$testtmpdir/subdir/dir$testtmpdir/subdir/src \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s1-da (non-existent source, basename, find in <dir>/\$cdir/basename)"
# s1-d
test_src $testtmpdir/subdir/src $srcname $binfile \
$testtmpdir/subdir/dir \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s1-d (non-existent source, basename, find in <dir>/basename)"
# s2+
test_src $testtmpdir $srcfile $binfile \
"" \
$testtmpdir/subdir/cwd \
"file $binfile" ""\
"l main" \
$src_txt \
"openp s2+ (existing source, absolute name)"
# s2-.
test_src $testtmpdir $srcfile $binfile \
$testtmpdir/subdir/cwd \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s2-. (non-existent source, absolute name, find in \$cwd/basename)"
# s2-da
test_src $testtmpdir $srcfile $binfile \
$testtmpdir/subdir/dir$testtmpdir/subdir/src \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s2-da (non-existent source, absolute name, find in <dir>/absolute)"
# s2-d
test_src $testtmpdir $srcfile $binfile \
$testtmpdir/subdir/dir \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s2-d (non-existent source, absolute name, find in <dir>/basename)"
# s3+
test_src $testtmpdir/subdir src/$srcname $binfile \
"" \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s3+ (existing source, relative name)"
# s3-.r
test_src $testtmpdir/subdir src/$srcname $binfile \
$testtmpdir/subdir/cwd/src \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s3-.r (non-existent source, relative name, find in \$cwd/relative)"
# s3-c
test_src $testtmpdir/subdir src/$srcname $binfile \
$testtmpdir/subdir \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s3-c (non-existent source, relative name, find in \$cdir/basename)"
# s3-.
test_src $testtmpdir/subdir src/$srcname $binfile \
$testtmpdir/subdir/cwd \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s3-. (non-existent source, relative name, find in \$cwd/basename)"
# s3-da
test_src $testtmpdir/subdir src/$srcname $binfile \
$testtmpdir/subdir/dir$testtmpdir/subdir \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s3-da (non-existent source, relative name, find in <dir>/\$cdir/relative)"
# s3-dr
test_src $testtmpdir/subdir src/$srcname $binfile \
$testtmpdir/subdir/dir/src \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s3-dr (non-existent source, relative name, find in <dir>/relative)"
# s3-d
test_src $testtmpdir/subdir src/$srcname $binfile \
$testtmpdir/subdir/dir \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s3-d (non-existent source, relative name, find in <dir>/basename)"
# s4+
test_src $testtmpdir/subdir/src ./$srcname $binfile \
"" \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s4+ (existing source, in the current dir)"
# s4-.
test_src $testtmpdir/subdir/src ./$srcname $binfile \
$testtmpdir/subdir/cwd \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s4-. (non-existent source, in the current dir, find in \$cwd/basename)"
# s4-da
test_src $testtmpdir/subdir/src ./$srcname $binfile \
$testtmpdir/subdir/dir$testtmpdir/subdir/src \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s4-da (non-existent source, in the current dir, find in <dir>/\$cdir/basename)"
# s4-d
test_src $testtmpdir/subdir/src ./$srcname $binfile \
$testtmpdir/subdir/dir \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s4-d (non-existent source, in the current dir, find in <dir>/basename)"
# s5+
test_src $testtmpdir/subdir/src/subdir ../$srcname $binfile \
"" \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s5+ (existing source, in the upper dir)"
# s5-.r
test_src $testtmpdir/subdir/src/subdir ../$srcname $binfile \
$testtmpdir/subdir \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s5-.r (non-existent source, in the upper dir, find in \$cwd/relative)"
# s5-c
test_src $testtmpdir/subdir/src/subdir ../$srcname $binfile \
$testtmpdir/subdir/src/subdir \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s5-c (non-existent source, in the upper dir, find in \$cdir/basename)"
# s5-.
test_src $testtmpdir/subdir/src/subdir ../$srcname $binfile \
$testtmpdir/subdir/cwd \
$testtmpdir/subdir/cwd \
"file $binfile" "" \
"l main" \
$src_txt \
"openp s5-. (non-existent source, in the upper dir, find in \$cdir/basename)"
# s5-da
test_src $testtmpdir/subdir/src/subdir ../$srcname $binfile \
$testtmpdir/subdir/dir$testtmpdir/subdir/src/subdir \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s5-da (non-existent source, in the upper dir, find in <dir>/\$cdir/relative)"
# s5-dr
test_src $testtmpdir/subdir/src/subdir ../$srcname $binfile \
$testtmpdir/subdir \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s5-dr (non-existent source, in the upper dir, find in <dir>/relative)"
# s5-d
test_src $testtmpdir/subdir/src/subdir ../$srcname $binfile \
$testtmpdir/subdir/dir \
$testtmpdir/subdir/cwd \
"dir $testtmpdir/subdir/dir" "file $binfile" \
"l main" \
$src_txt \
"openp s5-d (non-existent source, in the upper dir, find in <dir>/basename)"
remote_exec host "mv $srcfile $objdir/$subdir"
[-- Attachment #3: openp.c --]
[-- Type: text/x-csrc, Size: 22 bytes --]
int main(){return 0;}
next prev parent reply other threads:[~2004-08-18 13:03 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-16 14:41 Baurzhan Ismagulov
2004-08-16 15:56 ` Michael Chastain
2004-08-16 18:21 ` Baurjan Ismagulov
2004-08-16 19:15 ` Michael Chastain
2004-08-16 20:38 ` Andreas Schwab
2004-08-18 13:03 ` Baurzhan Ismagulov [this message]
2004-08-18 15:31 ` Michael Chastain
2004-08-18 15:50 ` Daniel Jacobowitz
2004-08-18 15:56 ` Baurjan Ismagulov
2004-08-18 16:04 ` Andreas Schwab
2004-08-18 15:50 ` Baurzhan Ismagulov
2004-08-18 17:10 ` Michael Chastain
2004-08-18 19:00 ` Michael Chastain
2004-08-18 22:03 ` Baurjan Ismagulov
2004-08-18 22:46 ` Michael Chastain
2004-08-18 23:33 ` Michael Chastain
2004-08-19 4:03 ` Eli Zaretskii
2004-08-19 8:34 ` Michael Chastain
2004-08-19 8:56 ` Michael Chastain
2004-08-19 9:37 ` Baurjan Ismagulov
2004-08-19 9:34 ` Baurjan Ismagulov
2004-08-19 9:55 ` Michael Chastain
2004-08-19 10:10 ` Baurjan Ismagulov
2004-08-19 10:20 ` Michael Chastain
2004-08-26 20:36 ` Baurjan Ismagulov
2004-08-26 20:52 ` Michael Chastain
2004-08-26 20:32 ` Baurjan Ismagulov
2004-08-27 14:16 ` Michael Chastain
2004-08-27 16:45 ` Baurjan Ismagulov
2004-08-29 11:56 ` Michael Chastain
2004-08-31 15:01 ` Michael Chastain
2004-09-25 21:12 ` Baurjan Ismagulov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040818130626.GB1411@ata.cs.hun.edu.tr \
--to=baurzhan.ismagulov@sbs.com.tr \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox