This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Wed, Feb 25, 2004 at 03:17:49PM -0500, Daniel Jacobowitz wrote: > On Wed, Feb 25, 2004 at 10:32:11AM -0800, Joel Brobecker wrote: > > Continuing my fascinating monologous with myself :) > > > > > - Object files are placed in the testsuite directory. I'd rather > > > see them being placed in gdb.ada. > > > > > > I managed to do this, but I a not completely sure that it's such > > > a good idea after all. See patch below. On the one hand, the object > > > files et al are placed in gdb.ada rather than gdb/testsuite, but > > > on the other hand this has a slight impact in the debug info generated > > > by the compiler, since the source file name is no longer absolute. > > > So this change is not completely transparent for the debugger... > > > What do you think? > > > > Actually, I just noticed that the few tests that do generate object > > files and other compilation artifacts actually leave them in the > > testsuite directory, not inside the gdb.* directories. > > > > So I would be tempted to discard the idea above of making sure that > > all these artifacts be placed in the gdb.ada directory for all Ada > > testcases. Hence the attached patch. One note, however: contrary to > > C where temporary .o files are automatically deleted, gnatmake leaves > > behind. This is to allow incremental builds, similar what make does. > > This will cause a much higher number of object files to be created > > in the testsuite directory. I hope this is fine? Otherwise, we'll > > can use the previous approach, but I believe it should be done > > consistently across all languages. > > I would prefer to have them placed in the subdirectory. Can't you > specify an output directory for gnatmake? It seems like a terrible > limitation. Normally, gnatmake is just a tool like make which job is to call the compiler with the appropriate switches. It actually does a "little more" since is also evaluates the dependencies and determines which files need to be recompiled, but the general idea is that gnatmake = make for GNAT. That being said, it just occured to me that there is a very simple way to control the location of the files generated by gnatmake: the GNAT project files. I created a new file gnat_ada.gpr.in in gdb.ada which contains the following: << -- This project files allows us to control the loation where the -- compilation artifacts produced when building the Ada examples -- are stored. project Gnat_Ada is for Source_Dirs use ("@srcdir@"); -- No need to set the Object_Dir, it is set to "." by default. end Gnat_Ada; >> And then building a typical Ada program will be done using the following command: % gnatmake -P$objdir/gdb.ada/gnat_ada -g <src_file> -o <dest> where <src_file> is the name of the Ada file (*basename* only) and <dest> is the name of the executable (can be basename or fullname, it doesn't matter) > Also, gdb_compile_ada may want to remove the incremental files in this > case, since the testsuite will not use them. gnatmake will. For instance gnatmake won't recompile the test programs on subsequent runs, unless the sources have changes. Or if we have two test programs depending on the same unit, this unit will only be compiled once. I think we should keep them, they are useful. > > + lappend options "compiler=gnatmake" > > See find_gcc in dejagnu's libgloss.exp. Could you explain a bit more what you mean (sorry, dejagnu is still new to me, and I have allergic reactions to tcl and expect :-/)? Do you means that I should create a new find_gnatmake function and then do lappend options "compiler=[find_gnatmake]" instead? I think this is the last sticky point to look at before being able to properly submit these changes for inclusion. Here is a small preview of where I current am, adding our first ada testcase to our dejagnu testsuite. This is with our debugger based on 6.0, but should be fairly close to apply to head as well. * lib/gdb.exp (gdb_compile_ada): New function. * lib/ada.exp: New file. * gdb.ada/Makefile.in: New file. * gdb.ada/gnat_ada.gpr.in: New file. * Makefile.in (ALL_SUBDIRS): Add gdb.ada. * configure.in: Generate gdb.ada/Makefile and gdb.ada/gnat_ada.gpr. And the new testcase: * gdb.ada/bar.ads: New file. * gdb.ada/bar.adb: New file. * gdb.ada/null_record.adb: New file. * gdb.ada/null_record.exp: New file. Am I on the right track? Thanks, -- Joel
Attachment:
lib-gdb.exp.diff
Description: Text document
Attachment:
ada.exp
Description: Text document
Attachment:
Makefile.in
Description: Text document
Attachment:
gnat_ada.gpr.in
Description: Text document
Attachment:
dejagnu.ada.diff
Description: Text document
Attachment:
bar.ads
Description: Text document
Attachment:
bar.adb
Description: Text document
Attachment:
null_record.adb
Description: Text document
Attachment:
null_record.exp
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |