libelf/
2006-04-04  Roland McGrath  <roland@redhat.com>

	* elf32_updatefile.c (updatemmap): Handle other-endian case.


tests/
2006-04-04  Roland McGrath  <roland@redhat.com>

	* run-bug1-test.sh: Test a second case, to cover both byte orders.
	* testfile29.bz2: New file.
	* testfile29.rdwr.bz2: New file.
	* Makefile.am (EXTRA_DIST): Add them.

diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index c69b3d3..4608325 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,7 @@
+2006-04-04  Roland McGrath  <roland@redhat.com>
+
+	* elf32_updatefile.c (updatemmap): Handle other-endian case.
+
 2006-04-04  Ulrich Drepper  <drepper@redhat.com>
 
 	* elf32_updatefile.c (updatemmap): Cleanups.  Remove shdr_dest
diff --git a/libelf/elf32_updatefile.c b/libelf/elf32_updatefile.c
index 5fa2ae7..5997350 100644
--- a/libelf/elf32_updatefile.c
+++ b/libelf/elf32_updatefile.c
@@ -224,7 +224,8 @@
 	{
 	  Elf_Scn *scn = scns[cnt];
 
-	  if ((scn->shdr_flags & ELF_F_MALLOCED) == 0
+	  if (!elf->state.ELFW(elf,LIBELFBITS).shdr_malloced
+	      && (scn->shdr_flags & ELF_F_MALLOCED) == 0
 	      && scn->shdr.ELFW(e,LIBELFBITS) != &shdr_dest[scn->index])
 	    {
 	      assert ((char *) elf->map_address + elf->start_offset
@@ -348,10 +349,11 @@
 	      /* If we previously made a copy of the section header
 		 entry we now have to adjust the pointer again so
 		 point to new place in the mapping.  */
-	      if ((scn->shdr_flags & ELF_F_MALLOCED) == 0)
+	      if (!elf->state.ELFW(elf,LIBELFBITS).shdr_malloced
+		  && (scn->shdr_flags & ELF_F_MALLOCED) == 0)
 		scn->shdr.ELFW(e,LIBELFBITS) = &shdr_dest[scn->index];
 
-	      scn->shdr_flags  &= ~ELF_F_DIRTY;
+	      scn->shdr_flags &= ~ELF_F_DIRTY;
 	    }
 	}
     }
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 16b1491..cbb4ac7 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,10 @@
+2006-04-04  Roland McGrath  <roland@redhat.com>
+
+	* run-bug1-test.sh: Test a second case, to cover both byte orders.
+	* testfile29.bz2: New file.
+	* testfile29.rdwr.bz2: New file.
+	* Makefile.am (EXTRA_DIST): Add them.
+
 2006-04-04  Ulrich Drepper  <drepper@redhat.com>
 
 	* Makefile.am: Add rules to run run-bug1-test.sh.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d53614c..0ceef1b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -112,7 +112,8 @@
 	     testfile22.bz2 testfile23.bz2 testfile24.bz2 testfile25.bz2 \
 	     testfile26.bz2 testfile27.bz2 \
 	     coverage.sh test-subr.sh test-wrapper.sh run-readelf-test1.sh \
-	     run-bug1-test.sh testfile28.bz2 testfile28.rdwr.bz2
+	     run-bug1-test.sh testfile28.bz2 testfile28.rdwr.bz2 \
+	     testfile29.bz2 testfile29.rdwr.bz2
 
 installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir) \
 			      bindir=$(DESTDIR)$(bindir) \
diff --git a/tests/run-bug1-test.sh b/tests/run-bug1-test.sh
index 2682d00..7367a4e 100755
--- a/tests/run-bug1-test.sh
+++ b/tests/run-bug1-test.sh
@@ -31,4 +31,12 @@
 
 cmp testfile28 testfile28.rdwr
 
+test_cleanup
+
+testfiles testfile29 testfile29.rdwr
+
+testrun ./rdwrmmap testfile29
+
+cmp testfile29 testfile29.rdwr
+
 exit 0
diff --git a/tests/testfile29.bz2 b/tests/testfile29.bz2
new file mode 100644
index 0000000..b46451b
--- /dev/null
+++ b/tests/testfile29.bz2
Binary files differ
diff --git a/tests/testfile29.rdwr.bz2 b/tests/testfile29.rdwr.bz2
new file mode 100644
index 0000000..42eadc7
--- /dev/null
+++ b/tests/testfile29.rdwr.bz2
Binary files differ