archive/tar: when writing tar Headers write hdr.Linkname

This should allow symlinks in tar files. Where previously
as far as I can see they were skipped completely.

R=golang-dev, dsymonds, rsc, bradfitz, bradfitz
CC=golang-dev, mike.rosset
https://golang.org/cl/4973044
diff --git a/src/pkg/archive/tar/testdata/writer.tar b/src/pkg/archive/tar/testdata/writer.tar
index 0358f91..e6d816a 100644
--- a/src/pkg/archive/tar/testdata/writer.tar
+++ b/src/pkg/archive/tar/testdata/writer.tar
Binary files differ
diff --git a/src/pkg/archive/tar/writer.go b/src/pkg/archive/tar/writer.go
index 8673bad..c6ce224 100644
--- a/src/pkg/archive/tar/writer.go
+++ b/src/pkg/archive/tar/writer.go
@@ -134,7 +134,7 @@
 	tw.numeric(s.next(12), hdr.Mtime)      // 136:148
 	s.next(8)                              // chksum (148:156)
 	s.next(1)[0] = hdr.Typeflag            // 156:157
-	s.next(100)                            // linkname (157:257)
+	tw.cString(s.next(100), hdr.Linkname)  // linkname (157:257)
 	copy(s.next(8), []byte("ustar\x0000")) // 257:265
 	tw.cString(s.next(32), hdr.Uname)      // 265:297
 	tw.cString(s.next(32), hdr.Gname)      // 297:329
diff --git a/src/pkg/archive/tar/writer_test.go b/src/pkg/archive/tar/writer_test.go
index 838cb7e..6cc9386 100644
--- a/src/pkg/archive/tar/writer_test.go
+++ b/src/pkg/archive/tar/writer_test.go
@@ -24,6 +24,10 @@
 }
 
 var writerTests = []*writerTest{
+	// The writer test file was produced with this command:
+	// tar (GNU tar) 1.26
+	//   ln -s small.txt link.txt
+	//   tar -b 1 --format=ustar -c -f writer.tar small.txt small2.txt link.txt
 	&writerTest{
 		file: "testdata/writer.tar",
 		entries: []*writerTestEntry{
@@ -55,6 +59,21 @@
 				},
 				contents: "Google.com\n",
 			},
+			&writerTestEntry{
+				header: &Header{
+					Name:     "link.txt",
+					Mode:     0777,
+					Uid:      1000,
+					Gid:      1000,
+					Size:     0,
+					Mtime:    1314603082,
+					Typeflag: '2',
+					Linkname: "small.txt",
+					Uname:    "strings",
+					Gname:    "strings",
+				},
+				// no contents
+			},
 		},
 	},
 	// The truncated test file was produced using these commands: