From cce4c4c5bd0cccfa17c5b7695f6199f5ce4d467b Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 18 Jan 2000 23:58:58 +0000 Subject: [PATCH] Apply H.J.'s patch to fix NOLOAD section sizes and dot updates --- ld/ChangeLog | 5 +++++ ld/ldlang.c | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 4b8107f..0ff05f6 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2000-01-18 H.J. Lu + + * ldlang.c (lang_size_sections): Also update the current + address of a region if the SEC_NEVER_LOAD bit is not set. + 2000-01-10 Philip Blundell * configure.tgt (arm*-*-conix*): New target. diff --git a/ld/ldlang.c b/ld/ldlang.c index 5e93f94..d38d837 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -2823,10 +2823,15 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax) /* Update dot in the region ? We only do this if the section is going to be allocated, since unallocated sections do not contribute to the region's - overall size in memory. */ + + If the SEC_NEVER_LOAD bit is not set, it will affect the + addresses of sections after it. We have to update + dot. */ if (os->region != (lang_memory_region_type *) NULL - && (bfd_get_section_flags (output_bfd, os->bfd_section) - & (SEC_ALLOC | SEC_LOAD))) + && ((bfd_get_section_flags (output_bfd, os->bfd_section) + & SEC_NEVER_LOAD) == 0 + || (bfd_get_section_flags (output_bfd, os->bfd_section) + & (SEC_ALLOC | SEC_LOAD)))) { os->region->current = dot; -- 2.7.4