mips: section .note.gnu.build-id can't be allocated in segment

Message ID ahLelwz89ecd39ec@squeak.grove.modra.org
State New
Headers
Series mips: section .note.gnu.build-id can't be allocated in segment |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply

Commit Message

Alan Modra May 24, 2026, 11:18 a.m. UTC
  After modifying test_build_id_debuglink, mips-linux fails
objcopy --only-keep-debug tmpdir/testprog tmpdir/testprog.debug
with the above error.  This is due to .MIPS.abiflags and .reginfo
being made SHT_NOBITS but the .note.gnu.build-id which follows is
SHT_PROGBITS.  That tickles a bug in file offset tracking.

	* elf.c (assign_file_positions_for_load_sections): When
	resetting "off_adjust" for sections with contents following
	sections without contents, put back "off" too.
  

Patch

diff --git a/bfd/elf.c b/bfd/elf.c
index dcf8f61e043..1c88c379ea0 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -6335,6 +6335,7 @@  assign_file_positions_for_load_sections (bfd *abfd,
 		{
 		  if (this_hdr->sh_type != SHT_NOBITS)
 		    {
+		      off -= off_adjust;
 		      off_adjust = 0;
 		      if (p->p_filesz + adjust < p->p_memsz)
 			{