diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 6a82698648c..ca73a71a01b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,14 @@
+Thu Mar 20 12:39:02 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+	* elflink.h (elf_bfd_final_link): Set the value of a section
+	symbol to the section address unless doing a relocateable link.
+
+Tue Mar 18 23:03:17 1997  Richard Henderson  <rth@tamu.edu>
+
+	* elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't create
+	.plt entry if we've taken the function's address.
+	(elf64_alpha_merge_gots): Merge collected flags info as well.
+
 Tue Mar 18 22:40:09 1997  H.J. Lu  <hjl@lucon.org>
 
 	* Many files: Add function prototypes.
diff --git a/bfd/elflink.h b/bfd/elflink.h
index dee5a8a66f6..6207595678c 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -3328,7 +3328,6 @@ elf_bfd_final_link (abfd, info)
      outputting relocs.  */
   if (info->strip != strip_all || info->relocateable)
     {
-      elfsym.st_value = 0;
       elfsym.st_size = 0;
       elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
       elfsym.st_other = 0;
@@ -3338,6 +3337,10 @@ elf_bfd_final_link (abfd, info)
 	  if (o != NULL)
 	    o->target_index = abfd->symcount;
 	  elfsym.st_shndx = i;
+	  if (info->relocateable || o == NULL)
+	    elfsym.st_value = 0;
+	  else
+	    elfsym.st_value = o->vma;
 	  if (! elf_link_output_sym (&finfo, (const char *) NULL,
 				     &elfsym, o))
 	    goto error_return;