+gdb debugging of assembly sources:
+ write a function linestab() that generates a .stabd symbol
+ independently of the input
+ write a function filestab() to generate a .stabs symbol
+ we need to take especial care with #line directives
+ since we want to handle locore, and locore is passed thru cpp
+ this could be tough
+ outline of a solution:
+ cpp sends us lines of the form
+ # logical-line "logical-file" trash
+ these lines are interpreted ahead of the gas preprocess pass
+ in the starting state, the logical filename is the same
+ as the real filename (in case there're no #lines)
+ the initial logical line number is 1
+ every time we're ready to process a new instruction line,
+ if the source file has changed,
+ emit a .stabs for the logical file
+ emit a .stabd for the logical line
+ bump the logical line number
+ can gas eat multiple actual lines in one insn?
+
+i386 nits:
+ jmp *$foo produces a short relative branch
+ string quotes in comments
+ Bill says gas eats text across newlines to find matches
+ works fine for me
+ I think it's most likely due to cpp
+ make / no longer be a comment char
+ it's now like the VAX: # is the only comment char
+ incorrectly assembles lcall, int3, into, bsr/f instructions
+ constant expressions fail if more than a few terms
+ gives (low+2)*3+4*5 as an example
+ works fine for me
+ cpp seems to think $ is a valid literal
+ use -$ in /usr/bin/cpp