From 6a68800512ce80689efbf43e639e7c1f38371636 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Mon, 18 Jul 2022 16:07:26 +0200 Subject: [PATCH] Fix handling of newly added non-rebaseable DLLs Reset needs_rebasing flag to avoid that such a DLL is later removed from the list due to rebase failure. Add related verbose messages. --- rebase.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/rebase.c b/rebase.c index 39759a9..56d743d 100644 --- a/rebase.c +++ b/rebase.c @@ -705,6 +705,16 @@ merge_image_info () if (verbose) fprintf (stderr, "rebasing %s because not in database yet\n", img_info_list[i].name); } + else if (img_info_list[i].flag.cannot_rebase == 1) + { + /* Not in database yet and not rebaseable. Add without rebasing. */ + img_info_list[i].flag.needs_rebasing = 0; + if (verbose) + fprintf (stderr, "adding %s without rebasing because file is not writable\n", + img_info_list[i].name); + /* FIXME: Overlaps of DLLs in the database with this DLL will + not be detected below. */ + } } } if (!img_info_rebase_start || force_rebase_flag) @@ -715,7 +725,12 @@ merge_image_info () { /* Test DLLs already in database for writability. */ if (i < img_info_rebase_start) - set_cannot_rebase (&img_info_list[i]); + { + set_cannot_rebase (&img_info_list[i]); + if (img_info_list[i].flag.cannot_rebase == 1 && verbose) + fprintf (stderr, "not rebasing %s because file is not writable\n", + img_info_list[i].name); + } if (!img_info_list[i].flag.cannot_rebase) { img_info_list[i].base = 0; -- 2.37.1