gc: fix pc/line table
gc: fix pc/line table

When a line directive was encountered we would push a new 'z' entry into
the history to indicate the start of new file attributation, and a 'Z'
entry to change line numbering.  However we didn't pop the 'z' entry, so
we were actually corrupting the history stack.  The most obvious
occurance of this was in the code that build the symbol tables for the
DWARF information - where an internal stack in the linker would overflow
when more than a few line directives were encountered in a single stack
(Issue 1878).  So now we pop the 'z' entry when we encounter the end of
the file that the directive was in, which maintains the history stack
integrity.

Also, although new 'z' entries for new files had relative paths
expanded, the same was not done for line directives.  Now we do it for
line directives also - so that the now correct DWARF information has the
full path available.

Fixes issue 1878.

R=rsc
CC=golang-dev
http://codereview.appspot.com/4938042

Committer: Russ Cox <5ad239cb8a44f659eaaee0aa1ea5b94947abe557@golang.org>

Triskite/willstone-goclone,scirelli/scirelli-go,npe9/noahevans-go9,mhennings/marcohennings-go,mhennings/marcohennings-go,sanjosh/sanjos100-tipc,npe9/noahevans-go9,glycerine/jeaten-go-arrayof-structof,npe9/noahevans-go9,npe9/noahevans-go9,rflanagan/reginaldflanagan-project1,rflanagan/reginaldflanagan-project1,sanjosh/sanjos100-tipc,scirelli/scirelli-go,bryanxu/go-zh,rflanagan/reginaldflanagan-project1,mhennings/marcohennings-go,webfd/go-zh,rflanagan/reginaldflanagan-project1,glycerine/jeaten-go-arrayof-structof,webfd/go-zh,rflanagan/reginaldflanagan-project1,scirelli/scirelli-go,npe9/noahevans-go9,npe9/noahevans-go9,scirelli/scirelli-go,rdp/rogerpack2005-golang,rdp/rogerpack2005-golang,mhennings/marcohennings-go,rflanagan/reginaldflanagan-project1,mhennings/marcohennings-go,rflanagan/reginaldflanagan-project1,scirelli/scirelli-go,bryanxu/go-zh,npe9/noahevans-go9,webfd/go-zh,rdp/rogerpack2005-golang,glycerine/jeaten-go-arrayof-structof,d0f/go-zh,scirelli/scirelli-go,d0f/go-zh,d0f/go-zh,bryanxu/go-zh,rdp/rogerpack2005-golang,Triskite/willstone-goclone,mhennings/marcohennings-go,webfd/go-zh,sanjosh/sanjos100-tipc,Triskite/willstone-goclone,rdp/rogerpack2005-golang,bryanxu/go-zh,webfd/go-zh,rdp/rogerpack2005-golang,Triskite/willstone-goclone,webfd/go-zh,webfd/go-zh,sanjosh/sanjos100-tipc,rdp/rogerpack2005-golang,glycerine/jeaten-go-arrayof-structof,sanjosh/sanjos100-tipc,bryanxu/go-zh,bryanxu/go-zh,mhennings/marcohennings-go,npe9/noahevans-go9,Triskite/willstone-goclone,d0f/go-zh,sanjosh/sanjos100-tipc,rdp/rogerpack2005-golang,bryanxu/go-zh,mhennings/marcohennings-go,glycerine/jeaten-go-arrayof-structof,bryanxu/go-zh,glycerine/jeaten-go-arrayof-structof,sanjosh/sanjos100-tipc,scirelli/scirelli-go,Triskite/willstone-goclone,d0f/go-zh,d0f/go-zh,sanjosh/sanjos100-tipc,Triskite/willstone-goclone,Triskite/willstone-goclone,webfd/go-zh,glycerine/jeaten-go-arrayof-structof,scirelli/scirelli-go,d0f/go-zh,glycerine/jeaten-go-arrayof-structof,rflanagan/reginaldflanagan-project1,d0f/go-zh