diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index dd13130f0ef..0e705e6e0ae 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+Mon Oct 17 11:38:16 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
+
+	* srec.c (pass_over): Set the start address for S7, S8 or S9.
+
 Fri Oct 14 19:15:46 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>
 
 	* VERSION: Updated to 2.5.
diff --git a/bfd/srec.c b/bfd/srec.c
index a2be04ff501..22f9eff5cbb 100644
--- a/bfd/srec.c
+++ b/bfd/srec.c
@@ -246,7 +246,7 @@ fillup_symbols (abfd, buf, len, val)
       abfd->tdata.srec_data->string_idx += len + 1;
       p->value = val;
       p->flags = BSF_EXPORT | BSF_GLOBAL;
-      p->section = &bfd_abs_section;
+      p->section = bfd_abs_section_ptr;
       p->udata = 0;
     }
 }
@@ -460,6 +460,24 @@ pass_over (abfd, func, symbolfunc, section)
 	      bytes_on_line -= 2;
 	      func (abfd, section, address, src, bytes_on_line);
 	      break;
+
+	    case '7':
+	      address = HEX (src);
+	      src += 2;
+	      bytes_on_line--;
+	    case '8':
+	      address = HEX (src) | (address << 8);
+	      src += 2;
+	      bytes_on_line--;
+	    case '9':
+	      address = HEX (src) | (address << 8);
+	      src += 2;
+	      address = HEX (src) | (address << 8);
+	      src += 2;
+	      bytes_on_line -= 2;
+	      abfd->start_address = address;
+	      return;
+
 	    default:
 	      return;
 	    }