https://sourceware.org/bugzilla/show_bug.cgi?id=33401

            Bug ID: 33401
           Summary: SFrame assertion when linking gav-0.9.1
           Product: binutils
           Version: 2.45
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: sam at gentoo dot org
                CC: doko at debian dot org, indu.bhagat at oracle dot com
  Target Milestone: ---

Reported by doko from https://bugs.debian.org/1114114.

```
$ x86_64-pc-linux-gnu-g++ -Wl,-O1 -o gav Ball.o Configuration.o ControlsArray.o
FrameSeq.o GameRenderer.o InputState.o LogicalFrameSeq.o Player.o PlayerAI.o
ResizeSurface.o ScreenFont.o Sound.o SoundMgr.o Theme.o globals.o main.o
menu/menu_module.o automa/automa_module.o net/net_module.o -L/usr/lib64 -lSDL
-lSDL_image -lSDL_net -lm
/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../x86_64-pc-linux-gnu/bin/ld: BFD
(Gentoo 9999 p1) 2.45.50.20250907 assertion fail
/var/tmp/portage/sys-devel/binutils-9999/work/binutils/bfd/elf-sframe.c:140
collect2: error: ld returned 1 exit status
```

```
(gdb) r
Starting program: /usr/x86_64-pc-linux-gnu/bin/ld -plugin
/usr/libexec/gcc/x86_64-pc-linux-gnu/16/liblto_plugin.so
-plugin-opt=/usr/libexec/gcc/x86_64-pc-linux-gnu/16/lto-wrapper
-plugin-opt=-fresolution=/tmp/ccfK56NF.res -plugin-opt=-pass-through=-lgcc_s
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc
-plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id
--eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie
-z now -o gav /usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../lib64/Scrt1.o
/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../lib64/crti.o
/usr/lib/gcc/x86_64-pc-linux-gnu/16/crtbeginS.o -L/usr/lib64
-L/usr/lib/gcc/x86_64-pc-linux-gnu/16
-L/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../lib64 -L/lib/../lib64
-L/usr/lib/../lib64
-L/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../x86_64-pc-linux-gnu/lib
-L/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../.. -L/lib -L/usr/lib -O1 Ball.o
Configuration.o ControlsArray.o FrameSeq.o GameRenderer.o InputState.o
LogicalFrameSeq.o Player.o PlayerAI.o ResizeSurface.o ScreenFont.o Sound.o
SoundMgr.o Theme.o globals.o main.o menu/menu_module.o automa/automa_module.o
net/net_module.o -lSDL -lSDL_image -lSDL_net -v -lstdc++ -lm -lgcc_s -lgcc -lc
-lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/16/crtendS.o
/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../lib64/crtn.o
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib64/libthread_db.so.1".
GNU ld (Gentoo 9999 p1) 2.45.50.20250907

Breakpoint 1, sframe_decoder_init_func_bfdinfo (abfd=<optimized out>,
sec=0x555555910c00, sfd_info=0x555555912048, cookie=<optimized out>)
    at /usr/src/debug/sys-devel/binutils-9999/binutils/bfd/elf-sframe.c:140
140       BFD_ASSERT (rel == cookie->relend);
(gdb) bt
#0  sframe_decoder_init_func_bfdinfo (abfd=<optimized out>, sec=0x555555910c00,
sfd_info=0x555555912048, cookie=<optimized out>)
    at /usr/src/debug/sys-devel/binutils-9999/binutils/bfd/elf-sframe.c:140
#1  _bfd_elf_parse_sframe (abfd=<optimized out>, info=<optimized out>,
sec=0x555555910c00, cookie=<optimized out>)
    at /usr/src/debug/sys-devel/binutils-9999/binutils/bfd/elf-sframe.c:246
#2  0x00007ffff768c3b8 in bfd_elf_discard_info (output_bfd=0x55555589d4a0,
info=<optimized out>) at
/usr/src/debug/sys-devel/binutils-9999/binutils/bfd/elflink.c:15313
#3  bfd_elf_discard_info (output_bfd=0x55555589d4a0, info=<optimized out>) at
/usr/src/debug/sys-devel/binutils-9999/binutils/bfd/elflink.c:15187
#4  0x0000555555696f84 in gldelf_i386_after_allocation () at
/usr/src/debug/sys-devel/binutils-9999/build/ld/eelf_i386.c:151
#5  0x000055555567de20 in lang_process () at
/usr/src/debug/sys-devel/binutils-9999/binutils/ld/ldlang.c:8644
#6  0x000055555568d4ee in main (argc=66, argv=0x7fffffffdb98) at
/usr/src/debug/sys-devel/binutils-9999/binutils/ld/ldmain.c:875
```

```
/* Initialize the set of additional information in CFD_INFO,
   needed for linking SEC.  Returns TRUE if setup is done successfully.  */

static bool
sframe_decoder_init_func_bfdinfo (bfd *abfd,
                                  const asection *sec,
                                  struct sframe_dec_info *sfd_info,
                                  const struct elf_reloc_cookie *cookie)
{
...

  /* If there are more relocation entries, they must be R_*_NONE which
     may be generated from relocations against discarded sections by
     ld -r.  */
  for (; rel < cookie->relend; rel++)
   if (rel->r_info != 0)
     break;
  BFD_ASSERT (rel == cookie->relend);

}
```

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to