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