[patch]change dwarf2_start_subfile() to adapt inappropriate dir name

JuYoung Kim j0.kim@samsung.com
Mon Nov 15 01:21:00 GMT 2010


Hello, My name is Kim, Juyoung at TmaxCore co. in south korea.
I've sent this email last week but haven't receive any reply or inform.
Today I found the email was encoded in korean and maybe you could not read it.
So, I send this mail again, and I hope you reply me as possible as you can, please.

It is about subfile for DWARF.
When you see the function dwarf2_start_subfile() in the source, there is a comment about source's file name.
Some compiler ( like RCVT3.1 ) include '/' at the end of dir name.

For example,
in case, DW_AT_name: /srcdir/list0.c
you expect
     files.files[0].name: list0.h
     files.files[0].dir: /srcdir
but, the DWARF made by RVCT3.1 is like this.
    files.files[0].name: list0.h
    files.files[0].dir: /srcdir/

then the function dwarf2_start_subfile(); make the fullname "/srcdir//list0.c"
, which result in the gdb cannot find the source's debugging information.

The function dwarf2_start_subfile() is at gdb/dwarf2read.c:8650.

The original source code is

.........
  if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL) {
    fullname = concat (dirname, SLASH_STRING, filename, (char *)NULL);
  }
  else
    fullname = filename;
........

I changed it as below.

........
  if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL) {
     if (dirname[strlen(dirname)-1] == '/' || dirname[strlen(dirname)-1] == '')
        fullname = concat (dirname, filename, (char *)NULL);
     else fullname = concat (dirname, SLASH_STRING, filename, (char *)NULL);
  }
  else
     fullname = filename;
..........

This is my first time to report the patch.
So please, inform me if my way of reporting is not proper.

Thanks.


More information about the Gdb-patches mailing list