Web lists-archives.com

Re: Defaulting to stabs debug output from AS Cygwin64





On 5/15/2018 12:17 AM, Michael Enright wrote:
> I am working on a little compiler for fun, which generates assembly
> code. At this point I manually invoke as and ld.
> 
> For debugging I added the -g option to the invocation of as, but then
> ld failed with
> 

Years of work tells me to not trust the default of any option.  You
should be specific.

<quote src="https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html";>
-g
Produce debugging information in the operating system’s native format
(stabs, COFF, XCOFF, or DWARF). GDB can work with this debugging
information.

On most systems that use stabs format, -g enables use of extra debugging
information that only GDB can use; this extra information makes
debugging work better in GDB but probably makes other debuggers crash or
refuse to read the program. If you want to control for certain whether
to generate the extra information, use -gstabs+, -gstabs, -gxcoff+,
-gxcoff, or -gvms (see below)
</quote>

>  t.o:t.s:1:(.stab+0x14): relocation truncated to fit: R_X86_64_32
> against `.text'
> 
> Looking into this on Stack Overflow I was taught that stabs is
> obsolete. I think 'obsolete' may not be quite the right
> interpretation, but 'wrong for Cygwin64' could be the right story.
> Practically speaking, without thinking about it too critically,
> -gdwarf2 in place of -g is the solution.
> 

The dwarf format isn't supported by native tools.  I think COFF should
be the default but that is just me and I don't maintain the distribution
of GCC.

> I'm trying to find authority for saying anything exact about the situation:
> 1) Is there a reason why stabs is the default for '-g' with Cygwin64?

I gave one above.

> 1a) Is a patch desired to make dwarf2 the default?

It would have to be at the upstream source level but I don't think so.

> 2) Is there a way within Cygwin64 that a .o file with stabs can be
> properly processed by ld to give proper input to gdb?

Does -gstabs+ help?

> 3) Is stabs fatally flawed for the purposes of Cygwin64 or could it be
> upgraded, within the existing meaning of the stabs specification, so
> that it would work?

That should be asked at the GCC upstream.

> 3a) To put it another way, is this just a stabs bug that could be
> fixed for Cygwin64?

I haven't looked at the source for the compiler to answer that.

> 
> Above when I say Cygwin64, I'm talking about straightforward native
> use of as, ld, and gdb, not cross-compiling to some other platform.

I question your use of Cygwin instead of MinGW for your compiler but
that is just a musing.

-- 
cyg Simple

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple