[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gas bug: out-of-order .file directives do not work
From: |
Alan Modra |
Subject: |
Re: gas bug: out-of-order .file directives do not work |
Date: |
Tue, 28 Feb 2006 11:09:13 +1030 |
User-agent: |
Mutt/1.4i |
On Wed, Feb 22, 2006 at 02:22:40PM -0500, address@hidden wrote:
> This happens on x86-linux in gas 2.14 and 2.16, and the bug
> is still in the source code in the latest CVS version.
>
> .file directives do not work unless they are emitted in numerical
> order. For example, this fails:
>
> .file 2 "/something_else"
> .loc 2 402 1
> .file 1 "/something"
> .loc 2 402 1
>
> $ as bar.s
> bar.s: Assembler messages:
> bar.s:4: Error: unassigned file number 2
>
>
> It looks like a 'get_filenum' bug. 'get_filenum' tries to correctly
> handle file numbers being declared out of order, e.g. it understands
> there may be "holes" in the numbering space containing NULL
> filenames. But it always sets files_in_use to one beyond the latest
> number it has seen, effectively forgetting about any higher-numbered
> file that was already declared.
>
> Fortunately, the patch is trivial.
>
>
> --- dwarf2dbg.c.orig 2006-01-11 11:16:47.000000000 -0500
> +++ dwarf2dbg.c 2006-02-22 13:38:53.000000000 -0500
> @@ -415,19 +415,20 @@
> files_allocated = i + 32;
> files = (struct file_entry *)
> xrealloc (files, (i + 32) * sizeof (struct file_entry));
>
> memset (files + old, 0, (i + 32 - old) * sizeof (struct file_entry));
> }
>
> files[i].filename = num ? file : xstrdup (file);
> files[i].dir = dir;
> - files_in_use = i + 1;
> + if (i + 1 > files_in_use)
> + files_in_use = i + 1;
> last_used = i;
> last_used_dir_len = dir_len;
>
> return i;
> }
>
> /* Handle two forms of .file directive:
> - Pass .file "source.c" to s_app_file
> - Handle .file 1 "source.c" by adding an entry to the DWARF-2 file table
Thanks. I've applied this to mainline sources.
--
Alan Modra
IBM OzLabs - Linux Technology Centre
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: gas bug: out-of-order .file directives do not work,
Alan Modra <=