[Bug gas/29005] ASAN error: in pa_chk_field_selector /home/marxin/buildworker/zen2-cross-binutils-sanitizers/build/gas/config/tc-hppa.c:2448

2022-03-28 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29005

--- Comment #2 from Jan Beulich  ---
With the function deliberately (albeit with a FIXME comment) parsing past line
ends, I'd rather leave the fixing of this to hppa maintainers. Not knowing
their assembly language (and having found a couple of comments hinting at
quirks there) the risk is just too high for me to introduce new issues.

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


[Bug gas/29120] New: conversion to .linefile is dependent upon # being a line comment char

2022-05-05 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29120

Bug ID: 29120
   Summary: conversion to .linefile is dependent upon # being a
line comment char
   Product: binutils
   Version: 2.39 (HEAD)
Status: NEW
  Severity: normal
  Priority: P2
 Component: gas
  Assignee: unassigned at sourceware dot org
  Reporter: jbeulich at suse dot com
  Target Milestone: ---

The code doing the conversion sits inside a "case LEX_IS_LINE_COMMENT_START:"
code block and hence won't be reached by targets where # doesn't make it there.
It is, however, unclear whether correcting this is a good idea, as targets
(primarily tic30, but also ns32k when SEQUENT_COMPATABILITY is defined) may not
like these sequences suddenly obtaining a meaning.

I notice that neither of the two mentioned targets is supported by gcc, which
might explain why the issue so far has gone unnoticed. I did notice it only
because I'm about to introduce a (generic) test for this conversion actually
occurring (and not being ignored inside the "false" branches of conditionals).

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


[Bug gas/29183] Inconsistent behaviors of Types with PTR operator

2022-05-26 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29183

--- Comment #1 from Jan Beulich  ---
I see only two choices: Make this an error (like MASM does), or accept it as we
do now (as e.g. TASM does). I'm strongly in favor of retaining current behavior
to avoid the anomaly of

mov al, 1[eax]
mov al, [1+eax]
mov al, [eax+1]

all meaning the same but then out of

mov al, byte[eax]
mov al, [byte+eax]
mov al, [eax+byte]

only the latter two being accepted. (Note that I do not see any room at all for
making a difference of whether "byte" and "[" are separated by whitespace.)

IOW the presence / absence of "ptr" really does have a meaning.

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


[Bug gas/29451] gas-2.39 started adding 0-sized DIEs to functions without .size

2022-08-09 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29451

--- Comment #8 from Jan Beulich  ---
(In reply to Mark Wielaard from comment #7)
> > and the symbol size is also 0 in the table:
> > $ readelf -s crti.o
> >
> > Symbol table '.symtab' contains 11 entries:
> >Num:Value  Size TypeBind   Vis  Ndx Name
> > ...
> >  9:  0 FUNCGLOBAL HIDDEN 5 _init
> 
> So if the size really is zero than high_pc should be one larger than low_pc
> (if expressed as addr in DWARF < 4) and 1 if expressed as unsigned constant
> (for DWARF >=4)
> 
> Having the addresses equal or high_pc zero does not express the zero sized
> region.

Doesn't high_pc being one larger than low_pc express a 1-byte region?

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


[Bug gas/29451] gas-2.39 started adding 0-sized DIEs to functions without .size

2022-08-09 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29451

--- Comment #9 from Jan Beulich  ---
The commit in question actually tries to avoid emitting zero-sized regions, so
the question is why

  if (S_GET_SIZE (symp) == 0)
{
  if (!IS_ELF || symbol_get_obj (symp)->size == NULL)
continue;
}

doesn't have the intended effect in the case at hand. With no .size directive I
don't see why / how ->size could be non-NULL.

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


[Bug gas/29451] gas-2.39 started adding 0-sized DIEs to functions without .size

2022-08-09 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29451

--- Comment #12 from Jan Beulich  ---
Yeah, I can certainly see my thinko. Making a patch ...

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


[Bug gas/29451] gas-2.39 started adding 0-sized DIEs to functions without .size

2022-08-09 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29451

--- Comment #13 from Jan Beulich  ---
See patch at https://sourceware.org/pipermail/binutils/2022-August/122322.html.

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


[Bug gas/29451] gas-2.39 started adding 0-sized DIEs to functions without .size

2022-08-10 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29451

Jan Beulich  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|UNCONFIRMED |RESOLVED

--- Comment #16 from Jan Beulich  ---
Should be taken care of then.

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


[Bug gas/29517] DWARF subprograms output by gas-2.39 have a 'void' return type

2022-08-24 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29517

--- Comment #1 from Jan Beulich  ---
(In reply to Kevin Buettner from comment #0)
> Note that there's no DW_AT_type attribute (which would specify the return
> type) for the munmap subprogram. As I understand it, this causes the return
> type to be void.  In section 3.3.2 of the DWARF 5 doc, it says "Debugging
> information entries for C void functions should not have an attribute for
> the return type."
> 
> However, a potential fix is suggested by section 5.2: "An unspecified
> (implicit, unknown, ambiguous or nonexistent) type is represented by a
> debugging information entry with the tag DW_TAG_unspecified_type."

Well, that's the route to take then for Dwarf3 and newer, I guess. I don't
currently see what we could do about it for Dwarf2, though.

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


[Bug gas/29524] New: x86: move-with-sign-extend inconsistent with move-with-zero-extend

2022-08-26 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29524

Bug ID: 29524
   Summary: x86: move-with-sign-extend inconsistent with
move-with-zero-extend
   Product: binutils
   Version: unspecified
Status: NEW
  Severity: normal
  Priority: P2
 Component: gas
  Assignee: unassigned at sourceware dot org
  Reporter: jbeulich at suse dot com
  Target Milestone: ---

AT&T syntax, at least in its GNU interpretation, has always been permitting
sizing suffixes to be omitted when register operands allow proper sizing of an
insn. This principle is violated for move-with-sign-extend, as can be easily
seen with

movsb   %al, %ax
movsb   %al, %eax
movsb   %al, %rax

movsb   (%rax), %ax
movsb   (%rax), %eax
movsb   (%rax), %rax

movzb   %al, %ax
movzb   %al, %eax
movzb   %al, %rax

movzb   (%rax), %ax
movzb   (%rax), %eax
movzb   (%rax), %rax

movsw   %ax, %eax
movsw   %ax, %rax

movsw   (%rax), %eax
movsw   (%rax), %rax

movzw   %ax, %eax
movzw   %ax, %rax

movzw   (%rax), %eax
movzw   (%rax), %rax

movsl   %eax, %rax

movsl   (%rax), %rax

See the v1 posting of patches addressing this:
https://sourceware.org/pipermail/binutils/2022-August/122458.html
https://sourceware.org/pipermail/binutils/2022-August/122459.html

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


[Bug gas/29525] New: x86: CMPSD and MOVSD wrongly accepted in AT&T mode

2022-08-26 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29525

Bug ID: 29525
   Summary: x86: CMPSD and MOVSD wrongly accepted in AT&T mode
   Product: binutils
   Version: unspecified
Status: NEW
  Severity: normal
  Priority: P2
 Component: gas
  Assignee: unassigned at sourceware dot org
  Reporter: jbeulich at suse dot com
  Target Milestone: ---

'd' is not a valid insn sizing suffix in AT&T mode; the proper one is 'l'.
Observe the anomalies when assembling

cmpsd
iretd
lodsd
movsd
scasd
stosd

See the v1 posting of a patch addressing this:
https://sourceware.org/pipermail/binutils/2022-August/122458.html

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


[Bug gas/29526] New: x86: inconsistent suffix recognition in Intel syntax mode

2022-08-26 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29526

Bug ID: 29526
   Summary: x86: inconsistent suffix recognition in Intel syntax
mode
   Product: binutils
   Version: unspecified
Status: NEW
  Severity: normal
  Priority: P2
 Component: gas
  Assignee: unassigned at sourceware dot org
  Reporter: jbeulich at suse dot com
  Target Milestone: ---

While generally insn suffixes are used for sizing in only very few cases for
Intel syntax, we've been accepting such forever. But this then needs to be
consistent - observe the anomaly for MOVD when assembling

notw[rbx]
notd[rbx]

nopw[rbx]
nopd[rbx]

addw[rbx], 5
addd[rbx], 5

movw[rbx], 5
movd[rbx], 5

See the v1 posting of a patch addressing this:
https://sourceware.org/pipermail/binutils/2022-August/122458.html

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


[Bug gas/29527] New: x86: ambiguous operands silently accepted in AT&T mode

2022-08-26 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29527

Bug ID: 29527
   Summary: x86: ambiguous operands silently accepted in AT&T mode
   Product: binutils
   Version: unspecified
Status: NEW
  Severity: normal
  Priority: P2
 Component: gas
  Assignee: unassigned at sourceware dot org
  Reporter: jbeulich at suse dot com
  Target Milestone: ---

Note the warnings on the first three insns but their absence on the latter ones
(sizing suffixes ought to be used to disambiguate):

neg (%rax)
not (%rax)
nop (%rax)

movsx   (%rax), %ax
movsx   (%rax), %eax
movsx   (%rax), %rax

movzx   (%rax), %ax
movzx   (%rax), %eax
movzx   (%rax), %rax

cvtsi2ss (%rax), %xmm0
vcvtsi2ss (%rax), %xmm0, %xmm0
vcvtusi2ss (%rax), %xmm0, %xmm0

For MOVSX / MOVZX the first case each is the only one where going silently is
reasonable, as a 16-bit source is very unlikely to be meant (albeit possible to
encode).

Patches addressing these were posted previously, but rejected for questionable
reasons.

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


[Bug gas/29527] x86: ambiguous operands silently accepted in AT&T mode

2022-09-06 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29527

--- Comment #3 from Jan Beulich  ---
(In reply to H.J. Lu from comment #2)
> (In reply to Jan Beulich from comment #0)
> > cvtsi2ss (%rax), %xmm0
> > vcvtsi2ss (%rax), %xmm0, %xmm0
> > vcvtusi2ss (%rax), %xmm0, %xmm0
> > 
> 
> They default to 32 bits because when SSE was introduced, it was 32-bit only.

How does "32-bit only" at introduction time matter for 64-bit? When 64-bit was
introduced, disambiguation should have been required (and 32-bit code would
have remained unaffected). In fact the lack thereof had allowed a gcc bug to go
unnoticed for quite some time.

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


[Bug gas/29551] Wrong relocations against _GLOBAL_OFFSET_TABLE_

2022-09-07 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29551

--- Comment #4 from Jan Beulich  ---
If that also allows _GLOBAL_OFFSET_TABLE_-. to work as expected, perhaps that's
the way to go. It's been a long time, but I expect that form of expression was
what I had in mind when adding the check for BFD_RELOC_32_PCREL.

What I'm unsure about is whether _GLOBAL_OFFSET_TABLE_@GOTPCREL is actually a
legitimate construct. We're way to lax with (not) rejecting invalid
@ constructs anyway, so us not currently rejecting this means
about nothing.

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


[Bug binutils/29457] Consider making --disassembler-color=color default if terminal

2022-10-19 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29457

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com

--- Comment #6 from Jan Beulich  ---
(In reply to Martin Liska from comment #2)
> Yes, thanks for it. I've just tested the patch and it looks nice!

I'm afraid I disagree. It not only doesn't look nice, especially register names
are close to unreadable on a terminal with a black background. Nick - I'd like
to ask that this be reconsidered. When Andrew first introduced the feature, I
specifically asked that coloring not be made the default. And now it suddenly
is (the patch wasn't even sent to the list afaics, which is likely part of the
reason why I didn't notice until now). I would have been kind of okay if the
envvar override had been accepted, but now I need to always remember to add a
pretty long option to objdump, just for its output to be at least readable?

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


[Bug binutils/29457] Consider making --disassembler-color=color default if terminal

2022-10-19 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29457

--- Comment #8 from Jan Beulich  ---
(In reply to Nick Clifton from comment #7)
> What do think would be better: using an environment variable to
> set the colours or having a configure time option which decides upon the
> default behaviour ?  Or both ?

Having both would of course be most flexible. I recall though that you had (imo
valid) concerns regarding the use of an envvar.

For a possible configure option, I'd like to ask that even that default to off.
At the very least until colored output is readable regardless of terminal
settings.

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


[Bug binutils/29457] Consider making --disassembler-color=color default if terminal

2022-10-24 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29457

--- Comment #10 from Jan Beulich  ---
Looks okay to me, with perhaps two remarks: "color" and "colour" are aliases of
"on" according to the code. Documentation may want to reflect this. And then,
with my observation of output potentially being (close to?) unreadable, I guess
there may want to be a warning (for the time being) in this regard? I admit
it's not really clear to me where such a warning would best go.

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


[Bug gas/29525] x86: CMPSD and MOVSD wrongly accepted in AT&T mode

2022-12-01 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29525

Jan Beulich  changed:

   What|Removed |Added

 Resolution|WONTFIX |---
 Status|RESOLVED|REOPENED

--- Comment #2 from Jan Beulich  ---
Your response doesn't justify the "won't fix" at all. In fact we did discuss a
compromise on the mailing list, and that's what I think we should follow:

There are known uses of MOVSD (without operands) in otherwise AT&T code.
Clang's integrated assembler also accepts this as an exception. So we want top
keep that, but it looks more than reasonable to warn about such uses.

Despite e.g. Clang's integrated assembler _not_ accepting CMPSD, we may want to
retain support for its no-operands form as well (again with a warning).
Nevertheless that's inconsistent with the other string insns (where we don't
accept *SD), so doing so is strictly optional (and you saying "For other string
instructions" is simply not stating the truth).

There is no point in retaining _bogus_ support for the two-operand forms of
MOVSD / CMPSD.

As a general remark - please don't close bug reports lightly as "won't fix".
Doing so needs to be based on objective reasons, not personal taste. This
includes qualifying some issues as "minor" (and then using just that as a
justification). It may be acceptable to not invest time in fixing such, but if
a fix is available and isn't entirely unreasonable, it shouldn't be rejected.

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


[Bug gas/29524] x86: move-with-sign-extend inconsistent with move-with-zero-extend

2022-12-01 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29524

Jan Beulich  changed:

   What|Removed |Added

 Resolution|WONTFIX |---
 Status|RESOLVED|REOPENED

--- Comment #2 from Jan Beulich  ---
(In reply to H.J. Lu from comment #1)
> Since movsX is used as string instructions, this is expected.

It may be expected by you, but that's not an objective reason to mark a report
as "won't fix". Like just said in 29525, please don't close bug reports lightly
as "won't fix". Doing so needs to be based on objective reasons, not personal
taste. This includes qualifying some issues as "minor" (and then using just
that as a justification). It may be acceptable to not invest time in fixing
such, but if a fix is available and isn't entirely unreasonable, it shouldn't
be rejected.

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


[Bug gas/29525] x86: CMPSD and MOVSD wrongly accepted in AT&T mode

2022-12-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29525

Jan Beulich  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Jan Beulich  ---
Fixed, with the (intentional) exception noted in #2.

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


[Bug gas/29526] x86: inconsistent suffix recognition in Intel syntax mode

2022-12-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29526

Jan Beulich  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #3 from Jan Beulich  ---
Now done (hopefully there aren't further anomalies).

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


[Bug gas/29524] x86: move-with-sign-extend inconsistent with move-with-zero-extend

2022-12-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29524

Jan Beulich  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Jan Beulich  ---
Now things are in line with MOVZ*, so marking as resolved.

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


[Bug gas/29940] fails to correctly assemble the JAL instruction on riscv64

2023-01-03 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29940

--- Comment #5 from Jan Beulich  ---
IOW it's not a relocation which is being emitted, but there are stray (and
unused) symbol table entries now (referencing register names).

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


[Bug gas/29940] fails to correctly assemble the JAL instruction on riscv64

2023-01-11 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=29940

Jan Beulich  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #8 from Jan Beulich  ---
Fixed on master as well as the branch.

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


[Bug gas/30117] internal error in parse_register at tc-i386.c:13060

2023-02-13 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30117

Jan Beulich  changed:

   What|Removed |Added

   Assignee|unassigned at sourceware dot org   |jbeulich at suse dot com

--- Comment #1 from Jan Beulich  ---
I'll look into that.

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


[Bug gas/30117] internal error in parse_register at tc-i386.c:13060

2023-02-13 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30117

Jan Beulich  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

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


[Bug gas/30120] x87: fucomp assembled as fucom

2023-02-13 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30120

Jan Beulich  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

--- Comment #3 from Jan Beulich  ---
(In reply to Michael Matz from comment #2)
> Came in with bd7828084 "x86: use ModR/M for FPU insns with operands".
> 
> The proper Reg field of ModRM for the popping variant of fucom is '5' not
> '4'.
> So this:
> 
> --- a/opcodes/i386-opc.tbl
> +++ b/opcodes/i386-opc.tbl
> @@ -651,7 +651,7 @@ fcompp, 0xded9, FP, NoSuf, {}
>  fucom, 0xdd/4, i387, Modrm|NoSuf, { FloatReg }
>  // alias for fucom %st(1)
>  fucom, 0xdde1, i387, NoSuf, {}
> -fucomp, 0xdd/4, i387, Modrm|NoSuf, { FloatReg }
> +fucomp, 0xdd/5, i387, Modrm|NoSuf, { FloatReg }
>  // alias for fucomp %st(1)
>  fucomp, 0xdde9, i387, NoSuf, {}
>  fucompp, 0xdae9, i387, NoSuf, {}

Would you mind simply committing your change?

> (didn't check the other insns touched by the patch)

I've just gone through using a pattern I didn't use when composing the change,
and I didn't find any other similar issue.

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


[Bug gas/30117] internal error in parse_register at tc-i386.c:13060

2023-02-16 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30117

Jan Beulich  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #3 from Jan Beulich  ---
Sorted.

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


[Bug gas/27217] aarch64 as Internal error in md_apply_fix at ....../gas/config/tc-aarch64.c:8330.

2023-03-22 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=27217

Jan Beulich  changed:

   What|Removed |Added

 Resolution|FIXED   |---
 Status|RESOLVED|REOPENED

--- Comment #24 from Jan Beulich  ---
(In reply to Kinsey Moore from comment #22)
> To be clear, the "no symbol" error has returned.

Since the testcase that was originally added doesn't cover this case (which is
why it wasn't noticed), can you please supply an example code fragment where
the bad behavior is observed?

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


[Bug gas/27217] aarch64 as Internal error in md_apply_fix at ....../gas/config/tc-aarch64.c:8330.

2023-03-22 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=27217

--- Comment #26 from Jan Beulich  ---
(In reply to Kinsey Moore from comment #25)
> The original test case should show it provided that you also attempt to link
> it as per Nick's comment:
> https://sourceware.org/bugzilla/show_bug.cgi?id=27217#c4

Oh, I'm sorry for not paying attention. I can indeed observe the issue there.

Quoting from the description of r_info in the ELF spec: "If the index is
STN_UNDEF, the undefined symbol index, the relocation uses 0 as the ``symbol
value''." Which makes me think we're dealing with a linker issue here, as this
is precisely the situation we're in. I'll see to find time to go hunt, but I'm
far less familiar with ld than with gas. (If others agree this is a separate
issue, I guess this would better be handled in a fresh bug report.)

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


[Bug gas/27217] aarch64 as Internal error in md_apply_fix at ....../gas/config/tc-aarch64.c:8330.

2023-03-22 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=27217

--- Comment #27 from Jan Beulich  ---
Another question is: Can't we suppress emitting of relocations when the value
is absolute? (Of course really the relocation in the testcase should reference
"bar", but as we've seen arranging for that by simply avoiding to evaluate
expressions produces other fallout. In the corresponding email conversation I
did suggest yet another expression evaluation mode as a possible route. But
that would look more like another hack than a solution, to me at least.)

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


[Bug gas/27217] aarch64 as Internal error in md_apply_fix at ....../gas/config/tc-aarch64.c:8330.

2023-03-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=27217

--- Comment #28 from Jan Beulich  ---
(In reply to Jan Beulich from comment #26)
> Quoting from the description of r_info in the ELF spec: "If the index is
> STN_UNDEF, the undefined symbol index, the relocation uses 0 as the ``symbol
> value''." Which makes me think we're dealing with a linker issue here, as
> this is precisely the situation we're in. I'll see to find time to go hunt,
> but I'm far less familiar with ld than with gas. (If others agree this is a
> separate issue, I guess this would better be handled in a fresh bug report.)

See https://sourceware.org/pipermail/binutils/2023-March/126759.html

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


[Bug gas/30248] Internal error in i386_att_operand

2023-03-30 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30248

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com

--- Comment #3 from Jan Beulich  ---
This needs dealing with differently; see
https://sourceware.org/pipermail/binutils/2023-March/126908.html

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


[Bug gas/30317] .insn directive did not swap sources

2023-04-06 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30317

Jan Beulich  changed:

   What|Removed |Added

 Resolution|--- |INVALID
 Status|UNCONFIRMED |RESOLVED

--- Comment #2 from Jan Beulich  ---
(In reply to Haochen Jiang from comment #0)
> For the current AMX and AMX-FP16 bad testcases, we got testcases like this:
> 
> #tdpfp16ps %tmm5,%tmm4,%tmm3 set VEX.W = 1 (illegal value).
> .insn VEX.128.F2.0F38.W1 0x5c, %tmm4, %tmm5, %tmm3
> .fill 0x05, 0x01, 0x90
> 
> #tdpfp16ps %tmm5,%tmm4,%tmm3 set VEX.L = 1 (illegal value).
> .insn VEX.256.F2.0F38.W0 0x5c, %tmm4, %tmm5, %tmm3
> .fill 0x05, 0x01, 0x90
> 
> The operand order is reversed for operand 2 and 3.

And intentionally so.

> I did not fully root cause the reason but I guess the highest possibility is
> the AMX instructions are using SwapSources which swaps operand 2 and 3.

SwapSources can only sensibly be present / in use for real insn templates.
.insn has to assume some specified ordering of operands, no matter what order
they ought to be in for the real (properly mnemonic-ized) insn. Please read the
documentation, which specifically states this aspect.

Of course syntax of .insn could be extended to allow specifying such, but I'm
afraid that would become unwieldy, because _all_ possible permutations would
then need to be expressable.

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


[Bug gas/30248] Internal error in i386_att_operand

2023-04-19 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30248

Jan Beulich  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #5 from Jan Beulich  ---
Should be okay now.

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


[Bug gas/30292] Unbounded recursion/infinite loop in eqv expansion since 4faaa10f3fabb345aca006ed67a8be97dc924e9c

2023-04-19 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30292

Jan Beulich  changed:

   What|Removed |Added

   Assignee|unassigned at sourceware dot org   |jbeulich at suse dot com
 CC|jbeulich at suse dot com   |
   Target Milestone|--- |2.41

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


[Bug gas/30292] Unbounded recursion/infinite loop in eqv expansion since 4faaa10f3fabb345aca006ed67a8be97dc924e9c

2023-04-20 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30292

--- Comment #3 from Jan Beulich  ---
Created attachment 14842
  --> https://sourceware.org/bugzilla/attachment.cgi?id=14842&action=edit
tentative fix

I'm afraid this is a result of a misuse of .eqv, which previously went
un-diagnosed by mistake. Both .eqv and .equiv are clearly documented to guard
the resulting symbol against re-definition. While plain register names (i.e.
ones target specific code may insert in the symbol table) are meant to be
excluded from this, it was imo a mistake to also exclude equates of registers
from this. The attached draft patch addresses this, but it hasn't been run
against a wide set of targets yet, so there may end up being obstacles to going
that route.

Independent of that, however, .eqv also pretty clearly isn't meant here in the
first place: You don't want forward reference equates, but normal ones. And
indeed by properly switching to .equ all equates involved in the two macros
rotate_Xs and ROTATE_ARGS, things work with both plain gas 2.40 as well as
patched 2.40.50 (producing the same code 2.38 did generate). What I can't
exclude is that this won't work with gas where .eqv / .equiv weren't known yet
(but the code in question won't work there anyway for the lack of those
directives), as along with introducing the secondary directives handling of
.equ symbols was changed (to take into account the value at the time of use
[for already defined symbols], rather than the eventual final value).

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


[Bug gas/30292] Unbounded recursion/infinite loop in eqv expansion since 4faaa10f3fabb345aca006ed67a8be97dc924e9c

2023-04-20 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30292

Jan Beulich  changed:

   What|Removed |Added

   Last reconfirmed||2023-04-20
 Ever confirmed|0   |1
 Status|UNCONFIRMED |ASSIGNED

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


[Bug gas/30292] Unbounded recursion/infinite loop in eqv expansion since 4faaa10f3fabb345aca006ed67a8be97dc924e9c

2023-04-20 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30292

Jan Beulich  changed:

   What|Removed |Added

  Attachment #14842|0   |1
is obsolete||

--- Comment #4 from Jan Beulich  ---
Created attachment 14843
  --> https://sourceware.org/bugzilla/attachment.cgi?id=14843&action=edit
tentative fix (v2)

Further adjustments were necessary, but not as intrusive as I feared. Then
again testsuite coverage may not be sufficient to spot all possible fallout ...

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


[Bug gas/30292] Unbounded recursion/infinite loop in eqv expansion since 4faaa10f3fabb345aca006ed67a8be97dc924e9c

2023-05-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30292

Jan Beulich  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #5 from Jan Beulich  ---
Fixed by commit d50c498a1ba7 in so far as gas won't crash anymore, but instead
would reject the invalid equate re-definition.

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


[Bug gas/30578] libavcodec/x86/mathops.h:125: Error: operand type mismatch for ` shr'

2023-07-19 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30578

Jan Beulich  changed:

   What|Removed |Added

   Last reconfirmed||2023-07-20
 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW

--- Comment #2 from Jan Beulich  ---
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108941. The cast in
(uint8_t)(-s) isn't honored by gcc when s can be determined to be a plain
number, making it emit a negative value. Negative shift counts of course make
no sense (on x86 at least). See the description of the referenced binutils
patch as to the resulting misbehavior for RCL and RCR. For SHL/SHR etc the
behavior would still be correct, but (dis)allowing negative shift counts there
is a matter of consistency.

I won't mark this "invalid" right away, to allow for discussion to happen here
that should have happened on the patch submission (if need be).

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


[Bug gas/30688] [2.41 regression] Warning: size (8) out of range, ignored

2023-07-27 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30688

Jan Beulich  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Last reconfirmed||2023-07-27
 CC||amodra at gmail dot com

--- Comment #1 from Jan Beulich  ---
In commit a0ea3e1db8c4 uses of X_unsigned were added. Aiui absence of
X_unsigned doesn't indicate though whether a value is negative; it merely
indicates that the value is to be considered a signed number. (A similar use
appears to exist in parse_align().)

I'll make a patch amending those, but I'd appreciate input as I might easily be
missing something.

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


[Bug gas/30688] [2.41 regression] Warning: size (8) out of range, ignored

2023-07-27 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30688

--- Comment #2 from Jan Beulich  ---
Created attachment 15015
  --> https://sourceware.org/bugzilla/attachment.cgi?id=15015&action=edit
tentative fix

(still pending testing results, especially for the testsuite additions)

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


[Bug binutils/30703] New: bfd doc doesn't build anymore with makeinfo 4.12

2023-07-31 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30703

Bug ID: 30703
   Summary: bfd doc doesn't build anymore with makeinfo 4.12
   Product: binutils
   Version: 2.41
Status: NEW
  Severity: normal
  Priority: P2
 Component: binutils
  Assignee: unassigned at sourceware dot org
  Reporter: jbeulich at suse dot com
  Target Milestone: ---

As was pointed out on the list, commit 8bb23cdbb498 raises the minimum makeinfo
version required, yet top-level configure.ac continues to be happy with 4.7,
thus causing the build to fail with (in my case) 4.12. While possible to work
around by passing MAKEINFO=true on all make command lines, it would of course
be nice if a fresh release built out of the box.

(Note that Component: is wrong, for there not being "bfd" in the list. Afaict
only bfd is affected at this point.)

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


[Bug gas/30688] [2.41 regression] Warning: size (8) out of range, ignored

2023-07-31 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30688

Jan Beulich  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #6 from Jan Beulich  ---
Thanks for confirming.

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


[Bug binutils/28909] 2.38 tarball (once again) requires makeinfo

2023-07-31 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=28909

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com

--- Comment #9 from Jan Beulich  ---
Sadly this breaks the build on Cygwin, for me at least:

  GEN  doc/asconfig.texi
cp: failed to preserve ownership for 'doc/asconfig.texi': Permission denied
  CC   config/tc-aarch64.o
make[4]: *** [Makefile:2233: doc/asconfig.texi] Error 1
make[4]: *** Waiting for unfinished jobs
make[3]: *** [Makefile:1663: all-recursive] Error 1
make[2]: *** [Makefile:1009: all] Error 2
make[1]: *** [Makefile:5477: all-gas] Error 2
make: *** [Makefile:1009: all] Error 2

Which is even more unfortunate because with the use of "cp -p" we aren't really
after preserving ownership here.

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


[Bug gas/11601] Solaris assembler compatibility doesn't work

2023-08-01 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=11601

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com

--- Comment #6 from Jan Beulich  ---
Just to mention it: This regresses certain Arm code. Linux had switched to GNU
syntax already a while ago [1], but older kernel builds would be affected. Xen,
which inherited some of Linux'es code, has had a patch submitted only just now
[2], and hence all published versions are affected.

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=790756c7e0229dedc83bf058ac69633045b1000e
[2] https://lists.xen.org/archives/html/xen-devel/2023-08/msg0.html

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


[Bug binutils/30703] bfd doc doesn't build anymore with makeinfo 4.12

2023-08-01 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30703

--- Comment #2 from Jan Beulich  ---
(In reply to Nick Clifton from comment #1)
> What is the minimum version now required ?

I don't know. My vague recollection from the earlier mail thread is that the
author of that patch also didn't really know the exact minimum.

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


[Bug binutils/30747] New: objcopy changes section sizes / contents for COFF

2023-08-11 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30747

Bug ID: 30747
   Summary: objcopy changes section sizes / contents for COFF
   Product: binutils
   Version: 2.41
Status: NEW
  Severity: normal
  Priority: P2
 Component: binutils
  Assignee: unassigned at sourceware dot org
  Reporter: jbeulich at suse dot com
  Target Milestone: ---

MASM-generated COFF objects are copied successfully by objcopy, but at least
.text and .data are zero-padded to the next 16-byte boundary. Imo section
contents and sizes should remain unaltered. Otoh changing the order of symbol
table entries (which can also be observed) is likely okay.

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


[Bug ld/28231] relocation truncated to fit: R_X86_64_32S against `.text'

2023-08-16 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=28231

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com

--- Comment #2 from Jan Beulich  ---
Your testcase doesn't match anything in the referenced source; the closest I
can see there is 

"leaq   1f(%%rip),  %%rax"  "\n\t"

yet the difference (whether or not (%%rip) is appended to 1f) is what I would
expect to make things work. In fact that code was changed in this very way
almost three years ago.

I'm inclined to conclude: Not an issue anymore with the code brought into
proper shape. Please confirm.

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


[Bug binutils/30703] bfd doc doesn't build anymore with makeinfo 4.12

2023-08-16 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30703

--- Comment #4 from Jan Beulich  ---
(In reply to Nick Clifton from comment #3)
>   So the next question is - are you asking that commit 8bb23cdbb498 be
>   reverted, so that the docs will build with older versions of texinfo,
>   or that the top level configure.ac be updated to check for at least
>   texinfo 6.8 ?

Well, reverting is what I'm doing locally right now, but I don't view this as a
good option. Whether to encode the higher version requirement in the top level
configury I'm also not sure of - that largely depends if other sub-components'
doc would also soon require newer versions. Plus of course wouldn't that
require sync-ing with at least gcc? Would it be possible to limit this to bfd's
doc for now?

But of course all I really care about is that things build cleanly when
configure claims to be happy. I'm not sure what the policy is - it would of
course be nice for configure to not fail with too old makeinfo, but for it to
instead simply disable doc building (with an appropriate warning).

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


[Bug ld/28231] relocation truncated to fit: R_X86_64_32S against `.text'

2023-08-29 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=28231

Jan Beulich  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #4 from Jan Beulich  ---
Thanks for confirming.

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


[Bug gas/30856] Regression: operand size mismatch for `push'

2023-09-21 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30856

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com
 Ever confirmed|0   |1
 Status|UNCONFIRMED |ASSIGNED
   Assignee|unassigned at sourceware dot org   |jbeulich at suse dot com
   Last reconfirmed||2023-09-21

--- Comment #3 from Jan Beulich  ---
I'll look into why this happens, but:

1) I'm not sure we do ourselves (and our users) much good if we allow this
again. The referenced symbol is severely constrained in where in the address
space it may live. Nevertheless similar symbol uses (with e.g. MOV or ADD)
still work, so it is likely necessary to fix this at least for consistency
reasons, and for --x32.

2) I'm not convinced the compiler should actually emit such code. It can't know
where the linker script (which may be a custom one) would put the executable.
When put outside of the low 2G of address space and outside of the high 2G of
address space, linking would fail from what I can tell. The emitted code looks
to be legitimate only when -mcmodel=kernel is in effect, or in --x32 mode.

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


[Bug gas/30856] Regression: operand size mismatch for `push'

2023-09-21 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30856

--- Comment #5 from Jan Beulich  ---
(In reply to Antoni Boucher from comment #4)
> I attached the ATT version (produced by gcc) that still works.

Well, only partly: PUSHQ works, but PUSH (no suffix) doesn't according to my
testing.

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


[Bug gas/30856] Regression: operand size mismatch for `push'

2023-09-21 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30856

--- Comment #7 from Jan Beulich  ---
(In reply to Antoni Boucher from comment #6)
> Do you mean that gcc produces invalid asm when using the Intel syntax and
> should be using pushq?

No. "push offset ..." is the correct form in Intel syntax. What I'm saying is
that it is wrong to emit such code without -mcmodel=kernel, for there not being
any guarantee that the resulting code will actually link. (At the same time an
assembly programmer may write such code, knowing the target environment.)

> I was under the impression that suffixes like q was ATT syntax, but I
> couldn't find any reference of the intel syntax allowed in GNU as. It does
> seem to allow pushq even for the Intel syntax, though.

It does, but more by mistake than deliberately.

> Other assemblers allow "push qword".

That's a different form of push, with a memory operand (here we're talking
about immediate / address operands).

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


[Bug gas/30856] Regression: operand size mismatch for `push'

2023-09-22 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30856

--- Comment #8 from Jan Beulich  ---
https://sourceware.org/pipermail/binutils/2023-September/129587.html

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


[Bug gas/30856] Regression: operand size mismatch for `push'

2023-09-27 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30856

Jan Beulich  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #11 from Jan Beulich  ---
Sorted on master and 2.41.

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


[Bug ld/30722] ld tests 'Build property 3', 'Build property 4', 'Build property 5' fail (glibc-2.38?)

2023-11-02 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30722

--- Comment #13 from Jan Beulich  ---
While I can't say it has become entirely clear to me, it looks as if our
testcase expectations, to some degree, depend on properties of the underlying
platform. Perhaps that's a mistake that wants addressing beyond just papering
over the effects visible here? The purpose of the tests is undermined, after
all, if platform properties can affect their outcome: What if, say, a v4 marker
appeared for property-5 not because of the binutils side handling and inputs,
but because of a platform property? Then the test might wrongly pass.

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


[Bug ld/30722] ld tests 'Build property 3', 'Build property 4', 'Build property 5' fail (glibc-2.38?)

2023-11-02 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30722

--- Comment #15 from Jan Beulich  ---
(In reply to Nick Clifton from comment #14)
> Except that in such a scenario the linker will still have executed correctly.
> The fact that the v4 marker was found in a system object file rather than a
> test created object file is irrelevant.  The test still shows that if a v4
> marker is found in one or more input files, then it will be present in the
> output file.  The only real failure mode is if the v4 marker is absent from
> the output despite the fact that it is present in at least one of the input
> files.

Not exactly, no. What e.g. property-4 checks is that an object with baseline+v2
and an object with v2+v4 correctly combine to baseline+v2+v4. Them combining to
baseline+v2+v3+v4 is something that should fail the test.

And yes, such a test very likely should not involved system supplied objects
and as a result likely shouldn't use the C compiler to drive the linking.

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


[Bug gas/31043] Poor error message for wrong number of registers

2023-11-07 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31043

--- Comment #2 from Jan Beulich  ---
Hmm, both in 2.41 and in master I'm seeing "operand size mismatch", not
"unsupported instruction". That's still not ideal, but imo quite a bit better.
Yet I'm at a loss to explain why I would see a different error message than you
do.

Then again I'm also uncertain I properly understand your complaint: The title
says "wrong number of registers" when from description and the gcc bug I'd
rather infer "wrong register numbers".

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


[Bug gas/31043] Poor error message for wrong register numbers

2023-11-09 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31043

--- Comment #4 from Jan Beulich  ---
(In reply to Sam James from comment #3)
> (In reply to Jan Beulich from comment #2)
> > Hmm, both in 2.41 and in master I'm seeing "operand size mismatch", not
> > "unsupported instruction". That's still not ideal, but imo quite a bit
> > better. Yet I'm at a loss to explain why I would see a different error
> > message than you do.
> 
> Andrew got the same error message as me which is curious...

Well, apologies, that was because of an embarrassing mistake of mine.

Is https://sourceware.org/pipermail/binutils/2023-November/130465.html going to
make this any better, do you think?

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


[Bug gas/31178] [2.42 regression] Crash when building Valgrind tests (Internal error in build_vex_prefix in tc-i386.c:376)

2024-01-05 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31178

Jan Beulich  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at sourceware dot org   |jbeulich at suse dot com

--- Comment #4 from Jan Beulich  ---
I can see what I overlooked (the C attribute aliases StaticRounding); working
on a fix.

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


[Bug gas/31178] [2.42 regression] Crash when building Valgrind tests (Internal error in build_vex_prefix in tc-i386.c:376)

2024-01-05 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31178

--- Comment #5 from Jan Beulich  ---
https://sourceware.org/pipermail/binutils/2024-January/131582.html

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


[Bug gas/31178] [2.42 regression] Crash when building Valgrind tests (Internal error in build_vex_prefix in tc-i386.c:376)

2024-01-09 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31178

Jan Beulich  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #7 from Jan Beulich  ---
And thus fixed.

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


[Bug gas/31319] [2.42 regression]: `.arch i386` is rejected by `x86_64` target: 4bit mode not supported on `i386'.

2024-01-31 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31319

Jan Beulich  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Last reconfirmed||2024-01-31
 Status|UNCONFIRMED |WAITING

--- Comment #2 from Jan Beulich  ---
So this is precisely the case that the new behavior is intended to catch: It is
meaningless to restrict ISA to i386 when trying to build 64-bit code. In the
kexec example, the .code32 comes too late anyway (would have wanted to be at
least before the label already before); wants moving ahead of the .arch.

IOW for now I view this as neither a bug nor a regression; earlier gas simply
was to lax. I'm open to be convinced otherwise ...

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


[Bug gas/31319] [2.42 regression]: `.arch i386` is rejected by `x86_64` target: 4bit mode not supported on `i386'.

2024-01-31 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31319

--- Comment #4 from Jan Beulich  ---
(In reply to Sergei Trofimovich from comment #3)
> Aha, adapting kexec-tools sounds fine as well.
> 
> Does the `.code16` use look fine in the rest of the file?

They're all okay, as there's no other .arch directive. Ordering there would be
a problem only if you had e.g. ".arch i286" ahead of ".code16".

> SO far I made it build as:
>[...]
> Does it look about right?

Yes.

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


[Bug gas/31388] There is no documentation for -moperand-check

2024-02-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31388

Jan Beulich  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #2 from Jan Beulich  ---
And thus taken care of.

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


[Bug gas/31115] [ARM] The minimalistic DWARF DIE for function has wrong address in Thumb mode

2024-03-21 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31115

--- Comment #8 from Jan Beulich  ---
(In reply to Nick Clifton from comment #5)
> > There's another thing I just discovered : I can reproduce GDB's bad
> > behavior on an ELF executable (produced by GCC from the .S file), but
> > not on a .o file produced directly by gas:
> 
> Or one that is produced by using gcc to invoke just gas.  ie compiling with
> "-c".

Doesn't this ...

> > Both the executable and the .o file have the LSB bit set in main's
> > DW_AT_low_pc:
> 
> > So for some reason GDB is fine with an object file containing the wrong
> > DW_AT_low_pc in main's DIE, but not when it's with a "full blown"
> > executable.
> 
> My guess - totally unproven - is that GDB has special code to mask thumb
> addresses for object files, but for some reason this code is not applied
> to linked executables.

... suggest there's an issue in the linking step?

But I'm actually confused by the mention of the .o having the low bits set. If
that was the case, the way gcc invokes as would provoke the odd behavior, and
that ought to then be reproducible by invoking as directly, with whatever
necessary options and/or directives in place. In my testing I cannot observe
the low bits set in .o, no matter how they're created.

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


[Bug gas/31752] gas: Support \+ in .rept/.irp/.irpc directives

2024-06-10 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31752

Jan Beulich  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #4 from Jan Beulich  ---
Should be all set now.

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


[Bug gas/31903] Asan heap-buffer-overflow in test gas/elf/dwarf-5-irp.s in cross-assember to aarch64-elf

2024-06-18 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31903

--- Comment #2 from Jan Beulich  ---
https://sourceware.org/pipermail/binutils/2024-June/134878.html

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


[Bug gas/31903] Asan heap-buffer-overflow in test gas/elf/dwarf-5-irp.s in cross-assember to aarch64-elf

2024-06-20 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31903

Jan Beulich  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Jan Beulich  ---
And thus (supposedly) all done.

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


[Bug ld/32003] Specifying --package-metadata might not be possible and is too fragile

2024-07-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32003

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com

--- Comment #4 from Jan Beulich  ---
(In reply to H.J. Lu from comment #3)
> One possibility is to treat "\comma" as ','.

Yet introducing another escape character would come with further complexity. It
also looks to me as if the %-encoding of double-quotes dominated that of commas
in the example provided.

I'm inclined to suggest to extend the %-encoding scheme instead; that way
what's going to be in 2.43 is not at risk of subtle breakage when support
further escaping sequences is added. All that needs to be made sure is for
existing escaping sequences to retain their original meaning.

What the best scheme here would be is likely better determined by people who
make active use of the feature (knowing what set of characters it is that
frequently would need escaping one way or the other). I'd be inclined to borrow
naming e.g. from HTML's Named Character References, and then use, say,
"%[comma]" or "%comma;" to have proper delimiting on both ends.

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


[Bug ld/32003] Specifying --package-metadata might not be possible and is too fragile

2024-07-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32003

--- Comment #15 from Jan Beulich  ---
(In reply to Benjamin Drung from comment #6)
> That linker testcase snippet is evaluated to:
> 
> --package-metadata='{"foo":"bar"}'
> 
> Passing that to a shell or makefile works, because the singe quotes protect
> the JSON content inside. But this escaping protects this snippet from
> evaluating only once. The problem is that the linker flag can be passed
> around and evaluated multiple times. This will happen easily during Debian
> package build, where debian/rules is a Makefile that calls the project build
> system (that can use makefiles as well).

That, however, is a problem of the build system. Passing around potentially
quoted strings needs special care, to retain quotation. The issue isn't unique
to Debian; see e.g. the Linux kernel's "escsq" and its uses (and how it further
protects e.g. # and $$).

Imo it's just the commas which are the main problem here, as -Wl,... in the
compiler has - afaik - no way of escaping them.

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


[Bug ld/32003] Specifying --package-metadata might not be possible and is too fragile

2024-07-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32003

--- Comment #16 from Jan Beulich  ---
(In reply to H.J. Lu from comment #14)
> It should be %[quote]".  Will adding support for "%[string]" to existing
> --package-metadata option break anything?

You won't know until someone reports a problem. We simply don't know what
people might be using.

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


[Bug gas/32022] Assembler shouldn't accept invalid TLS instructions

2024-07-29 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32022

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com

--- Comment #5 from Jan Beulich  ---
(In reply to H.J. Lu from comment #0)
> [hjl@gnu-tgl-3 tmp]$ ld y.o
> ld: warning: cannot find entry symbol _start; defaulting to 00401000
> ld: y.o: TLS transition from R_X86_64_GOTTPOFF to R_X86_64_TPOFF32 against
> `foo' at 0x3 in section `.text' failed
> ld: final link failed: bad value

And why exactly does linking need to fail is such a situation? The TLS
transitions are optional, aren't they? Not being able to do carry one out may
indeed deserve a warning (with a control to silence), but not more.

(In reply to H.J. Lu from comment #1)
> An assembler option should be provided to control the behavior.

Having an option to control this is fine with me. Yet then, if enabled, it
should really diagnose all suspicious constructs, not just a (random) subset.

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


[Bug gas/32022] Assembler shouldn't accept invalid TLS instructions

2024-07-29 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32022

--- Comment #7 from Jan Beulich  ---
(In reply to Sam James from comment #6)
> We would need a way to make it error out by default when invoked by GCC
> then, given it exposed an x86 backend issue.

I'm afraid I can't make the connection: These are orthogonal aspects. Plus,
assuming gcc has a suitable testcase in its testsuite, a warning ought to make
that fail anyway, wouldn't it?

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


[Bug gas/32022] Assembler shouldn't accept invalid TLS instructions

2024-07-29 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32022

--- Comment #9 from Jan Beulich  ---
By paying attention to the warning that I indicated would better be emitted
instead. If need be (and if nothing like that exists yet), I'm sure ld could be
taught to have behavior along the lines of the compiler's -Werror.

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


[Bug gas/32073] [2.44 Regression] gas failed to build x86-64 Linux kernel

2024-08-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32073

Jan Beulich  changed:

   What|Removed |Added

   Assignee|unassigned at sourceware dot org   |jbeulich at suse dot com
 Status|NEW |ASSIGNED

--- Comment #2 from Jan Beulich  ---
While this use of macros may be in widespread use, that doesn't make it correct
(and the gas/NEWS entry actually mentions a macro invocation of this same
form). Macro arguments (and parameters) don't require commas as separators.
Hence without relying on the internal workings of the gas scrubber, one can't
assume that the provided example passes a single argument; instead (following
admittedly not great documentation) it's rather 3 arguments which are being
passed. Just that gas didn't handle this correctly in the past. Let me give a
slightly more complex example:

m 101 + (1) (15) (a)

How many arguments?

The change in question had been pending comments for a long time. Sadly, as is
happening more often than not, comments actually surface only once a change was
committed and suddenly issues with (broken) existing code show up.

Parenthesizing or quoting the argument(s) helps. In case of macros with a
single argument, using :vararg in the macro definition is also a way to
approach things. At least transitionally we could also invent a mode where
macro invocations with some comma separation assumes all arguments are comma
separated, thus continuing to ignore whitespace elsewhere. That'll help
everywhere, though.

For macros with a single argument we could further effectively guess that
:vararg is in effect, yet of course that's likely to break some test in the gas
testsuite (at least I hope we have such a test there). Which of course in turn
could be worked around by adding a new "using new gas behavior" command line
option.

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


[Bug gas/32073] [2.44 Regression] gas failed to build x86-64 Linux kernel

2024-08-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32073

--- Comment #5 from Jan Beulich  ---
(In reply to Andreas Schwab from comment #4)
> $ cat svml_d_acos2_core-sse2.S
> #define JUMPTARGET(name) *name##@GOTPCREL(%rip)
> 
> .macro WRAPPER_IMPL_SSE2 callee
>  call JUMPTARGET(\callee)
> .endm
> .text
> WRAPPER_IMPL_SSE2 acos

Which cpp expands to

 .macro WRAPPER_IMPL_SSE2 callee
 call *\ callee@GOTPCREL(%rip)
 .endm
 .text
 WRAPPER_IMPL_SSE2 acos

Wow. Where's the blank coming from? I didn't know the pre-processor may insert
random whitespace. And the pre-processed result is identical to that of the
(imo) bogus

call JUMPTARGET(\ callee)

How's the consumer supposed to be telling apart which one it was originally?

Yet then documentation is unclear on whether there may be whitespace between
the \ and the parameter name. We could of course make macro expansion skip
whitespace when a valid parameter name follows. Yet I fear there could be other
anomalies as a result.

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


[Bug gas/32073] [2.44 Regression] gas failed to build x86-64 Linux kernel

2024-08-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32073

--- Comment #8 from Jan Beulich  ---
(In reply to Jan Beulich from comment #5)
> Yet then documentation is unclear on whether there may be whitespace between
> the \ and the parameter name. We could of course make macro expansion skip
> whitespace when a valid parameter name follows. Yet I fear there could be
> other anomalies as a result.

I've looked into what the options are of fixing this particular issue. Dealing
with the one question of "should blanks be skipped here" quickly turns into a
series of such questions, perhaps one for every individual transformation that
is done while expanding a macro:
- Is \( a token, or can there be whitespace?
- Are \@ and \+ tokens, or can there be whitespace?
- There's also \& with a comment alluding to preprocessor variables.
- Is & used for macro parameter references permitted to be followed by
whitespace? If so, what about the optional trailing & ?
- Same for @.
My intuitive answers to these wouldn't all be the same. For example I'd be more
inclined to not permit whitespace in @name@ references. Yet I don't even know
the origin of that kind of construct, so how should I be able to tell?

Plus of course there's then also the question of whether whitespace should
survive when processing something that looks like a param ref, but really isn't
(as can easily be the case in nested macros).

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


[Bug gas/32073] [2.44 Regression] gas failed to build x86-64 Linux kernel

2024-08-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32073

--- Comment #10 from Jan Beulich  ---
(In reply to Michael Matz from comment #9)
> I fear the only non-contentious answer to all such questions is: "act in the
> same
> way as currently" :-/  I.e. try it out and emulate the behaviour.

In which case it would also be impossible to fix anomalies there. In turn
meaning that hardly any bug in parsing of input can actually be fixed. Not a
good state to be in. How would you respond to a bug report in such an area
then? "We know it's broken, but it can't be fixed"?

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


[Bug gas/32073] [2.44 Regression] gas failed to build x86-64 Linux kernel

2024-08-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32073

--- Comment #13 from Jan Beulich  ---
(In reply to Maciej W. Rozycki from comment #12)
> Where does the notion of using whitespace for argument separation in
> macro invocations (as opposed to definitions) come from?

I have no idea, and I never really liked it. But I've seen it in actual use,
not just once. My vague guess is that comma separation actually was introduced
only later, to allow macro uses to look more like insns.

> I can see it was you actually who documented this feature in the GAS
> manual back in 2022 only.  But if GAS does accept whitespace here, then
> isn't it just a GAS regression that needs fixing instead?

Regression? Afaict this (bad) mode of argument (and parameter) separation has
been there forever. It just may not have been properly spelled out in the doc.

>  Is there any
> substantial piece of software out there known to rely on this previously
> undocumented feature (and why)?

I know we've switched to (consistently) comma separation in the Xen hypervisor
only a year or so ago. The origin of Xen is Linux; I didn't extensively check
recent Linux, but at least on x86 there are such macro uses. And I can
certainly easily spot macro definitions across various architectures where
parameters are separated by just blanks.

>  How does the use of whitespace for
> argument separation mix with default values anyway?

Not very well, as you apparently inferred. Yet iirc defaults for macro
arguments hadn't been there all the time.

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


[Bug gas/32073] [2.44 Regression] gas failed to build x86-64 Linux kernel

2024-08-13 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=32073

--- Comment #19 from Jan Beulich  ---
(In reply to Michael Matz from comment #14)
> The scrubber removes whitespace between tokens of different classes, but
> retains
> whitespace between token of same class, which sometimes makes it so that
> whitespace in macro invocation does or does not separate arguments, the
> difference visible in e.g.:
> 
>   invoke 1 2
>   invoke 1 + 2 3

But that's the whole issue: This isn't how the scrubber works. It's not
uniformly "different classes" (there's not really a proper concept of tokens
either). Boundaries between what may be numbers or identifiers are different
from boundaries between operators and alike. The original report that I started
this effort from was (iirc) something like

invoke (1) (2)

where the (pretty obviously) two arguments become just one.

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


[Bug gas/25012] pushq/popq %gs/%fs in .code64 now unsupported

2019-09-19 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25012

--- Comment #3 from Jan Beulich  ---
Hmm, yes - No_qSuf gets in the way here. Simply removing the attribute won't
work though, I'm afraid. I'll try to find time soon to look into this. (And I'm
surprised there's nothing in the testsuite that would have allowed me to notice
this before even submitting the patch.)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gas/24546] x86-64 far jump/call encoding issues

2020-01-09 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=24546

--- Comment #9 from Jan Beulich  ---
The proposed added (AT&T mode) behavior is to allow lcall and ljmp to also have
q suffixes in 64-bit Intel mode, paralleling how other insns (including
branching ones) work. Similarly the assembler would then print q suffixes in
Intel64 mode, rather than rex.W.

A patch for this was already posted as part of a larger series:
https://sourceware.org/ml/binutils/2019-12/msg00355.html

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


[Bug gas/25438] New: x86 MOVZ* anomalies for unusual/wrong operand combinations

2020-01-22 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25438

Bug ID: 25438
   Summary: x86 MOVZ* anomalies for unusual/wrong operand
combinations
   Product: binutils
   Version: unspecified
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: gas
  Assignee: unassigned at sourceware dot org
  Reporter: jbeulich at suse dot com
  Target Milestone: ---

The tests proposed to be added by

https://sourceware.org/ml/binutils/2019-12/msg00354.html

demonstrate some inconsistencies which get addressed by the next patch of the
series:

https://sourceware.org/ml/binutils/2019-12/msg00346.html

The condensed differences from before the patch (and 2.33.1 behavior) and after
it can be seen in the following diff of the respective listing files:

--- movx.l
+++ movx.l
@@ -7,39 +7,43 @@
4   movsbw  %al, %ecx
5   movsbl  %al, %cx
6   
-   7  660FB6C8 movzbw  %al, %ecx
-   8  0FB6C8   movzbl  %al, %cx
+   7  0FB6C8   movzbw  %al, %ecx
+  Warning: using `%cx' instead of `%ecx' due to `w' suffix
+   8  660FB6C8 movzbl  %al, %cx
+  Warning: using `%ecx' instead of `%cx' due to `l' suffix
9   
   10   .code32
   11   code32:
   12   movsbw  %al, %ecx
   13   movsbl  %al, %cx
   14   
-  15  0FB6C8   movzbw  %al, %ecx
-  16  660FB6C8 movzbl  %al, %cx
+  15  660FB6C8 movzbw  %al, %ecx
+  Warning: using `%cx' instead of `%ecx' due to `w' suffix
+  16  0FB6C8   movzbl  %al, %cx
+  Warning: using `%ecx' instead of `%cx' due to `l' suffix
   17   
   18   .code64
   19   code64:
   20   movsbw  %al, %ecx
   21   movsbw  %al, %rcx
   22   
-  23  0FB6C8   movzbw  %al, %ecx
-  24  480FB6C8 movzbw  %al, %rcx
+  23   movzbw  %al, %ecx
+  24   movzbw  %al, %rcx
   25   
   26   movsbl  %al, %cx
   27   movsbl  %al, %rcx
   28   
-  29  660FB6C8 movzbl  %al, %cx
-  30  480FB6C8 movzbl  %al, %rcx
+  29   movzbl  %al, %cx
+  30   movzbl  %al, %rcx
   31   
   32   movsbq  %al, %cx
   33   movsbq  %al, %ecx
   34   
-  35  660FB6C8 movzbq  %al, %cx
-  36  0FB6C8   movzbq  %al, %ecx
+  35   movzbq  %al, %cx
+  36   movzbq  %al, %ecx
   37   
   38   movswl  %ax, %rcx
   39   movswq  %ax, %ecx
   40   
-  41  480FB7C8 movzwl  %ax, %rcx
-  42  0FB7C8   movzwq  %ax, %ecx
+  41   movzwl  %ax, %rcx
+  42   movzwq  %ax, %ecx

IOW,
- for 32- and 16-bit code generated code and emitted diagnostics get brought in
sync with that for other insns, i.e. suffix trumps register size,
- for 64-bit code emitted diagnostics get brought in sync with that for other
insns, i.e. mismatched suffix and register size are not allowed,
- for 64-bit code additionally MOVZ* behavior no longer differs from MOVS* one,
except for the precise wording of the error ("incorrect register ... used with
... suffix" vs "operand size mismatch").

Of course this example additionally demonstrates that MOVS* handling in 32- and
16-bit modes still won't be in line with all other insns, due to there not
being true suffixes in the insn templates. But that's a separate topic,
adjustment to which was previously attempted but rejected by the maintainer.

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


[Bug binutils/16083] objdump provides wrong disassemble for MULSD instruction when used with an unusual combination of prefixes

2020-01-22 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=16083

--- Comment #4 from Jan Beulich  ---
Isn't this effectively (despite being older) a duplicate of 16893, and hence
has been fixed along long ago, with that other report?

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


[Bug gas/25438] x86 MOVZ* anomalies for unusual/wrong operand combinations

2020-01-22 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25438

--- Comment #2 from Jan Beulich  ---
(In reply to H.J. Lu from comment #1)
> movz* with incorrect operands should be rejected, not silently changed
> to something else:
> 
> [hjl@gnu-snb-1 tmp]$ cat x.s
> movzbw%al, %ecx
> movzbw%al, %rcx
> movzbl%al, %cx
> movzbl%al, %rcx
> movzbq%al, %cx
> movzbq%al, %ecx
> [hjl@gnu-snb-1 tmp]$ gcc -c x.s
> [hjl@gnu-snb-1 tmp]$ objdump -dw x.o
> 
> x.o: file format elf64-x86-64
> 
> 
> Disassembly of section .text:
> 
>  <.text>:
>0: 0f b6 c8movzbl %al,%ecx
>3: 48 0f b6 c8 movzbq %al,%rcx
>7: 66 0f b6 c8 movzbw %al,%cx
>b: 48 0f b6 c8 movzbq %al,%rcx
>f: 66 0f b6 c8 movzbw %al,%cx
>   13: 0f b6 c8movzbl %al,%ecx
> [hjl@gnu-snb-1 tmp]$

Indeed that's what the patch is doing, for 64-bit code.

For 32-bit (and 16-bit) code though this isn't the way to go, as long as e.g.

movl%al, %al
movl%ax, %ax

produce an error on the first line, but only two warnings on the second one.
Behavior for MOVZ* simply gets brought in line with this by the proposed patch.

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


[Bug gas/25438] x86 MOVZ* anomalies for unusual/wrong operand combinations

2020-01-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25438

--- Comment #6 from Jan Beulich  ---
(In reply to H.J. Lu from comment #5)
> Also
> 
> [hjl@gnu-cfl-1 pr25438]$ cat y.s
> movzwl%ax, %rcx
> [hjl@gnu-cfl-1 pr25438]$ gcc -c y.s
> [hjl@gnu-cfl-1 pr25438]$ objdump -dw y.o
> 
> y.o: file format elf64-x86-64
> 
> 
> Disassembly of section .text:
> 
>  <.text>:
>0: 48 0f b7 c8 movzwq %ax,%rcx


And? How is this related here? This is an appropriate encoding for the insn.
When optimzing, dropping the REX prefix would seem desirable. In fact this is
already on my todo list.

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


[Bug binutils/25445] movsxd without REX_W prefix incorrectly disassembled

2020-01-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25445

--- Comment #3 from Jan Beulich  ---
(In reply to H.J. Lu from comment #0)
>0: 66 63 08movslq (%rax),%cx

Looks correct to me.

(In reply to H.J. Lu from comment #1)
> Also
> 
> 63 08 movslq (%rax),%ecx

This too looks correct to me.

The only anomaly I can think of because of the vendor difference would be a
memory operand in Intel syntax mode, which - if tagged by an operand size -
might want to be WORD PTR for the 16-bit case in Intel64 mode and DWORD PTR in
the AMD64 one.

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


[Bug gas/25438] x86 MOVZ* anomalies for unusual/wrong operand combinations

2020-01-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25438

--- Comment #8 from Jan Beulich  ---
(In reply to H.J. Lu from comment #7)
> It is OK to encode "movzwq %ax,%rcx" as "movzwl %ax,%ecx".  But assembler
> shouldn't accept "movzwl %ax,%rcx".

But addressing this is part of the second patch referenced by the original
description here.

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


[Bug gas/25438] x86 MOVZ* anomalies for unusual/wrong operand combinations

2020-01-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25438

--- Comment #10 from Jan Beulich  ---
(In reply to H.J. Lu from comment #9)
> Please submit a single patch to fix this bug.

How is

https://sourceware.org/ml/binutils/2019-12/msg00346.html

not a single patch? From that series
- patches 1 and 2 have been committed
- patch 3 demonstrates current (good as well as bad) behavior, to help show
more clearly how ...
- patch 4 fixes this issue (alongside other ones, but all by the same actual
code changes).

Would you _please_ take a _proper_ look at patches 3 and 4 of that series? It
is telling enough that you moved from an initial

"We can't change the encoding nor disallow it."

response to

"movzbw %al, %ecx
 movzbw %al, %rcx
 movzbl %al, %cx
 movzbl %al, %rcx
 movzbq %al, %cx
 movzbq %al, %ecx

 should be hard error.   Clearly they are typos."

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


[Bug binutils/25445] movsxd without REX_W prefix incorrectly disassembled

2020-01-23 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25445

--- Comment #5 from Jan Beulich  ---
(In reply to H.J. Lu from comment #4)
> (In reply to Jan Beulich from comment #3)
> > (In reply to H.J. Lu from comment #0)
> > >0: 66 63 08movslq (%rax),%cx
> > 
> > Looks correct to me.
> 
> movslq is AT&T syntax for 32 bits -> 64 bits. It isn't accepted by
> assembler.  movsxd should be here.

MOVSXD, like MOVSX and MOVZX, is Intel syntax, and hence has nothing to do in
AT&T syntax disassembly.

> > (In reply to H.J. Lu from comment #1)
> > > Also
> > > 
> > > 63 08 movslq (%rax),%ecx
> > 
> > This too looks correct to me.
> 
> movsxd should be here.

Same here.

> > The only anomaly I can think of because of the vendor difference would be a
> > memory operand in Intel syntax mode, which - if tagged by an operand size -
> > might want to be WORD PTR for the 16-bit case in Intel64 mode and DWORD PTR
> > in the AMD64 one.
> 
> Manual can be wrong.  The current Intel manual says that MOVSXD is valid
> for 32-bit. Can you double check MOVSXD on AMD processor to verify
> 
> movsxd (%rax), %cx
> 
> does load 4 bytes?

I did already around the time I put together

https://sourceware.org/ml/binutils/2019-12/msg00347.html

Both manuals accurately describe actual hardware behavior.

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


[Bug gas/24546] x86-64 far jump/call encoding issues

2020-02-12 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=24546

--- Comment #10 from Jan Beulich  ---
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=5990e377e5a339bce715fabfc3e45b24b459a7af

I don't see a mechanism in the web interface though how to change a bug's
status, so I'm leaving it at "NEW".

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


[Bug gas/25550] Review .arch directives

2020-02-14 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25550

Jan Beulich  changed:

   What|Removed |Added

 CC||jbeulich at suse dot com

--- Comment #1 from Jan Beulich  ---
However, as pointed out in the mail discussion already, consistent behavior
should result (which currently isn't the case):

1. Since .arch generally enables prereqs for the specified ISA extension (like
AVX for AVX512F), disabling an extension also should disable everything that it
is considered a prereq for.

2. Any ISA extension enabled should be enabled completely. The main anomaly
looks to be SSE/SSE2 insns accessing MMX registers, where strictly speaking the
MMX ISA extension isn't a prereq to the SSE* ones (it's only the registers that
are used), which gas also handles this way. A patch was already proposed to
address this:

https://sourceware.org/ml/binutils/2020-02/msg00250.html

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


[Bug gas/25550] Review .arch directives

2020-02-14 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25550

--- Comment #3 from Jan Beulich  ---
(In reply to H.J. Lu from comment #2)
> (In reply to Jan Beulich from comment #1)
> > However, as pointed out in the mail discussion already, consistent behavior
> > should result (which currently isn't the case):
> > 
> > 1. Since .arch generally enables prereqs for the specified ISA extension
> > (like AVX for AVX512F), disabling an extension also should disable
> > everything that it is considered a prereq for.
> 
> Is SSE2 a prerequisite for AVX?

This can be viewed either way, I guess. The history of the ISA extensions
suggests it is. But functionally nothing except the XMM registers have any
overlap, I think.

> > 2. Any ISA extension enabled should be enabled completely. The main anomaly
> > looks to be SSE/SSE2 insns accessing MMX registers, where strictly speaking
> > the MMX ISA extension isn't a prereq to the SSE* ones (it's only the
> > registers that are used), which gas also handles this way.
> 
> For view point of assembly codes, enable MMX register without MMX ISA
> makes no sense. For example, emms is needed for proper MMX usage.

Not necessarily, one can certainly get away without (using 4 FFREEP in a row).

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


[Bug gas/25550] Review .arch directives

2020-02-14 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25550

--- Comment #5 from Jan Beulich  ---
(In reply to H.J. Lu from comment #4)
> (In reply to Jan Beulich from comment #3)
> > (In reply to H.J. Lu from comment #2)
> > > Is SSE2 a prerequisite for AVX?
> > 
> > This can be viewed either way, I guess. The history of the ISA extensions
> > suggests it is. But functionally nothing except the XMM registers have any
> > overlap, I think.
> 
> Why is AVX a prerequisite for AVX512?

The correlation is largely the same as the one between SSE* and AVX.

> > > For view point of assembly codes, enable MMX register without MMX ISA
> > > makes no sense. For example, emms is needed for proper MMX usage.
> > 
> > Not necessarily, one can certainly get away without (using 4 FFREEP in a
> > row).
> 
> What purpose does it serve?

Well, I don't expect anyone would actively want to use it this way.

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


[Bug gas/25550] Review .arch directives

2020-02-18 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25550

--- Comment #9 from Jan Beulich  ---
(In reply to H.J. Lu from comment #8)
> We can say something like
> 
>  In addition to the basic instruction set, the assembler can be told
>  to accept various extension mnemonics.  4 separate vector ISA
>  extension families can be enabled or disabled independent of each
>  other:
> 
> * 'MMX' - MMX instructions.
> 
> * 'SSE' - SSE instructions without MMX registers.

This is not a useful category. The only viable options I see are
- the full set of insns valid with SSE* (including ones accessing MMX
registers),
- all insns not touching MMX _state_ (which would permit use of CVTPI2PD with a
memory operand, but not use of a similar CVTPI2PS).

In the latter case special care should be taken to at least warn about Intel
syntax uses like "CVTPI2PD xmm0, mm0", as from simply looking at such an insn
one wouldn't tell it uses a memory operand named "mm0".

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


[Bug gas/25550] Review .arch directives

2020-02-18 Thread jbeulich at suse dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=25550

--- Comment #11 from Jan Beulich  ---
(In reply to H.J. Lu from comment #10)
> We need a directive for SSE instructions without MMX registers.
> We can give it a different name, something like pure-SSE.

But what practical use would such an option be? You said yourself that anything
that can engage MMX state in the CPU also is liable to want/need access to EMMS
(or FEMMS), which won't be accessible with just SSE insns permitted.

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


  1   2   >