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

--- Comment #6 from bzt <bztemail at gmail dot com> ---
Look:

$ cat a.s
.globl _start
.text
_start:
ret
$ riscv64-elf-as -c a.s -o a.o
$ riscv64-elf-readelf -h a.o | grep Flags
  Flags:                             0x4 double-float ABI
$ riscv64-elf-ld a.o -o a
$ riscv64-elf-readelf -h a | grep Flags
  Flags:                             0x4 double-float ABI
$ riscv64-elf-ld -r -b binary -o font.o font.psf
$ riscv64-elf-readelf -h font.o | grep Flags
  Flags:                             0x0
$ riscv64-elf-ld -melf64lriscv -r -b binary -o font.o font.psf
$ riscv64-elf-readelf -h font.o | grep Flags
  Flags:                             0x0
$ riscv64-elf-ld -mlist
riscv64-elf-ld: unrecognized emulation mode: list
Supported emulations: elf64lriscv elf32lriscv
$

I've deliberately used "as" instead of "gcc" this time because "as" is in the
same binutils package, therefore "as" was compiled using the same configure
options and for the same target as "ld". It's only normal to assume they will
produce compatible outputs. "as" outputs with double-float flag (correctly).
"ld" also understands double-float, it has no problems with linking those
objects, and it correctly outputs the executable. Yet "-b binary" doesn't set
the flags in the header (meaning soft-float), which is incorrect, and
specifying the emulation explicitly doesn't help either.

Is this enough information?

Cheers,
bzt

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

Reply via email to