diff options
author | Mark Wielaard <mjw@redhat.com> | 2014-05-26 22:35:30 +0200 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2014-05-27 22:00:46 +0200 |
commit | bd1a0d1293e3cdc2a81370a39df5f55bf08bcbb6 (patch) | |
tree | eedd8981d75bb46291a1d1e24b2ac65cea2f8e6f | |
parent | 22497096e8759b7c73233f2c2f9adff9d2db9ce7 (diff) | |
download | elfutils-bd1a0d1293e3cdc2a81370a39df5f55bf08bcbb6.tar.gz |
unstrip: Allow prelinked, but non-split .bss section.
If the section sh_size of the original and undo section are equal then
match them and don't set split_bss. This is also what prelink's
undo_sections allows.
Signed-off-by: Mark Wielaard <mjw@redhat.com>
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/unstrip.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 4067583a..4062fc7f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2014-05-26 Mark Wielaard <mjw@redhat.com> + * unstrip.c (find_alloc_sections_prelink): Allow non-split .bss + section when sh_size of the original and undo .bss section are equal. + +2014-05-26 Mark Wielaard <mjw@redhat.com> + * unstrip.c (options): Add --force, -F. (struct arg_info): Add bool force. (parse_opt): Handle 'F', set force. diff --git a/src/unstrip.c b/src/unstrip.c index 65bb2516..f6af4500 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -1125,10 +1125,11 @@ find_alloc_sections_prelink (Elf *debug, Elf_Data *debug_shstrtab, && (sec->shdr.sh_type == undo_sec->shdr.sh_type || (sec->shdr.sh_type == SHT_PROGBITS && undo_sec->shdr.sh_type == SHT_NOBITS)) - && sec->shdr.sh_size < undo_sec->shdr.sh_size + && sec->shdr.sh_size <= undo_sec->shdr.sh_size && (!strcmp (sec->name, ".bss") || !strcmp (sec->name, ".sbss")) - && (split_bss = sec) > sections))) + && (sec->shdr.sh_size == undo_sec->shdr.sh_size + || (split_bss = sec) > sections)))) { sec->outscn = undo_sec->outscn; undo_sec = NULL; |