(lang_leave_overlay): Don't set lma_region when load_base is specified.
authorAlan Modra <amodra@gmail.com>
Thu, 25 Jan 2001 02:31:42 +0000 (02:31 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 25 Jan 2001 02:31:42 +0000 (02:31 +0000)
ld/ChangeLog
ld/ldlang.c

index cdd999c47e2a1c07a4284aaa3fcab4eecd0094ea..d8e79b53898dbdd68916481311235626dc83a6b9 100644 (file)
@@ -1,3 +1,8 @@
+2001-01-25  Jim Driftmyer <jdrift@stny.rr.com>
+
+       * ldlang.c (lang_leave_overlay): Don't set lma_region when
+       load_base is specified.
+
 2001-01-24  Hans-Peter Nilsson  <hp@axis.com>
 
        * emultempl/elf32.em: Correct spelling in comments and listed
index 2baf13b85dfb141a0a0e10849020a2b7503f1b1a..32097faf69406871ba36e307b1ea3e3097413bc1 100644 (file)
@@ -4782,8 +4782,12 @@ lang_leave_overlay (fill, memspec, phdrs, lma_memspec)
        l->os->region = region;
       /* We only set lma_region for the first overlay section, as
         subsequent overlay sections will have load_base set relative
-        to the first section.  */
-      if (lma_region != NULL && l->os->lma_region == NULL && l->next == NULL)
+        to the first section.  Also, don't set lma_region if
+        load_base is specified.  FIXME:  There should really be a test
+        that `AT ( LDADDR )' doesn't conflict with `AT >LMA_REGION'
+        rather than letting LDADDR simply override LMA_REGION.  */
+      if (lma_region != NULL && l->os->lma_region == NULL
+         && l->next == NULL && l->os->load_base == NULL)
        l->os->lma_region = lma_region;
       if (phdrs != NULL && l->os->phdrs == NULL)
        l->os->phdrs = phdrs;