Result Disco:
### Testing suffix '' ###

.code16
push %gs
push %fs
pop %gs
pop %fs
.code32
push %gs
push %fs
pop %gs
pop %fs
.code64
push %gs
push %fs
pop %gs
pop %fs

push.out:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <.text>:
   0:   0f a8                   pushq  %gs
   2:   0f a0                   pushq  %fs
   4:   0f a9                   popq   %gs
   6:   0f a1                   popq   %fs
   8:   0f a8                   pushq  %gs
   a:   0f a0                   pushq  %fs
   c:   0f a9                   popq   %gs
   e:   0f a1                   popq   %fs
  10:   0f a8                   pushq  %gs
  12:   0f a0                   pushq  %fs
  14:   0f a9                   popq   %gs
  16:   0f a1                   popq   %fs


### Testing suffix 'w' ###

.code16
pushw %gs
pushw %fs
popw %gs
popw %fs
.code32
pushw %gs
pushw %fs
popw %gs
popw %fs
.code64
pushw %gs
pushw %fs
popw %gs
popw %fs

push.out:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <.text>:
   0:   0f a8                   pushq  %gs
   2:   0f a0                   pushq  %fs
   4:   0f a9                   popq   %gs
   6:   0f a1                   popq   %fs
   8:   66 0f a8                pushw  %gs
   b:   66 0f a0                pushw  %fs
   e:   66 0f a9                popw   %gs
  11:   66 0f a1                popw   %fs
  14:   66 0f a8                pushw  %gs
  17:   66 0f a0                pushw  %fs
  1a:   66 0f a9                popw   %gs
  1d:   66 0f a1                popw   %fs


### Testing suffix 'l' ###

.code16
pushl %gs
pushl %fs
popl %gs
popl %fs
.code32
pushl %gs
pushl %fs
popl %gs
popl %fs
.code64
pushl %gs
pushl %fs
popl %gs
popl %fs
push.S: Assembler messages:
push.S:12: Error: invalid instruction suffix for `push'
push.S:13: Error: invalid instruction suffix for `push'
push.S:14: Error: invalid instruction suffix for `pop'
push.S:15: Error: invalid instruction suffix for `pop'


### Testing suffix 'q' ###

.code16
pushq %gs
pushq %fs
popq %gs
popq %fs
.code32
pushq %gs
pushq %fs
popq %gs
popq %fs
.code64
pushq %gs
pushq %fs
popq %gs
popq %fs
push.S: Assembler messages:
push.S:2: Error: unsupported instruction `push'
push.S:3: Error: unsupported instruction `push'
push.S:4: Error: unsupported instruction `pop'
push.S:5: Error: unsupported instruction `pop'
push.S:7: Error: unsupported instruction `push'
push.S:8: Error: unsupported instruction `push'
push.S:9: Error: unsupported instruction `pop'
push.S:10: Error: unsupported instruction `pop'

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to binutils in Ubuntu.
https://bugs.launchpad.net/bugs/1843394

Title:
  FTBFS in Eoan - Error: operand type mismatch for `push' - gcc 9.2.1 /
  binutils 2.32.51.20190905-0ubuntu1

Status in binutils package in Ubuntu:
  New
Status in ipxe package in Ubuntu:
  New

Bug description:
  This might be due to new gcc-9 being more strict, but the build that
  worked before now fails with:

  arch/x86_64/core/gdbidt.S: Assembler messages:
  arch/x86_64/core/gdbidt.S:109: Error: operand type mismatch for `push'
  arch/x86_64/core/gdbidt.S:110: Error: operand type mismatch for `push'
  arch/x86_64/core/gdbidt.S:161: Error: operand type mismatch for `pop'
  arch/x86_64/core/gdbidt.S:162: Error: operand type mismatch for `pop'
  make[2]: *** [Makefile.housekeeping:937: bin-x86_64-efi/gdbidt.o] Error 1

  Full log at: https://launchpadlibrarian.net/441262285/buildlog_ubuntu-
  eoan-amd64.ipxe_1.0.0+git-20190109.133f4c4-0ubuntu2_BUILDING.txt.gz

  Now all of this is about push/pop of %fs and %gs.
  That needs to match the size of the registers which depend on the current 
running mode.

  In this particular case in ./src/arch/x86_64/core/gdbidt.S
  The failing file is in ".code64" mode.
  In that I'd expect %gs/%fs to be 64 bit.

  
  Usually we see push/pop "w" in .code16 (word), l in .code32 (long) but in 
that sense here q (quad word) seems right at first (should be what correctly 
matches the .code64).
  That matches what I see throughout the ipxe code but also throughout the 
archive 
https://codesearch.debian.net/search?q=pop%5Ba-z%5D.*%25fs&literal=0&page=2

  Maybe I misread the mode it is in, or it is actually a false positives.
  Or the sizes of FS/GS do not change - haven't touched them in a loooong time.
  Was it that segment registers didn't change size?
  I'll need to do a few checks to first see what the compiler would expect 
there and from there need to understand this.

  The command used also points to AS being in 64 bit mode when this happens:
  gcc -E  -DARCH=x86_64 -DPLATFORM=efi -DSECUREBOOT=0 -fstrength-reduce 
-fomit-frame-pointer -falign-jumps=1 -falign-loops=1 -falign-functions=1 -m64 
-mno-mmx -mno-sse -fshort-wchar -Ui386 -Ulinux -DNVALGRIND -fpie -mno-red-zone 
-Iinclude -I. -Iarch/x86/include -Iarch/x86_64/include 
-Iarch/x86_64/include/efi -Os -g -ffreestanding -Wall -W -Wformat-nonliteral  
-fno-stack-protector -fno-dwarf2-cfi-asm -fno-exceptions  -fno-unwind-tables 
-fno-asynchronous-unwind-tables -Wno-address -Wno-stringop-truncation   
-ffunction-sections -fdata-sections -include include/compiler.h -DASM_TCHAR='@' 
-DASM_TCHAR_OPS='@' -DASSEMBLY  -DOBJECT=gdbidt arch/x86_64/core/gdbidt.S | as  
--64    -o bin-x86_64-efi/gdbidt.o

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/1843394/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to