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

2023-09-18 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30856

Nick Clifton  changed:

   What|Removed |Added

 CC||nickc at redhat dot com

--- Comment #1 from Nick Clifton  ---
(In reply to Antoni Boucher from comment #0)
Hi Antoni,

> Reproducer for the bug

Please could you upload the assembler output from the compiler ?

It is likely that this bug is dependent upon the version of the compiler
that is being used, so in order to reproduce and investigate the problem
we really need the assembler output, rather than the C source file.

It may also be that this problem is actually a bug in the compiler
which was not being caught by the 2.40 assembler, but which is now detected
by the 2.41 assembler.  Hence having access to the assembler source file
should allow us to find out if this is true.

Cheers
  Nick

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


[Bug gas/30857] Use of uninitialized memory

2023-09-18 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30857

Nick Clifton  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||nickc at redhat dot com
 Resolution|--- |FIXED

--- Comment #2 from Nick Clifton  ---
Hi Jacob,

  Thanks for the bug report.

> HOW TO FIX:
> 1) Intead of calling XNEW call XCNEW that calls calloc instead of malloc.
>   This will ensure that the inequality will fail.

I have checked in this suggested solution.


> What is the point then of telling me to « go to bugzilla » ???
> I just do not understand this group really.

The purpose is that it allows to keep track of bugs individually.

This bug was a simple one and so will probably not involve a lot
of discussion or trial and error whilst fixing, but this is not
true of all bugs.  Some take a long time to fix, and some are fixed
and then later on reappear.  Having a specific bug report to gather
together all comments, patches and reproducers regarding a single
problem makes things a lot easier to track and resolve.

Cheers
  Nick

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


[Bug gas/30860] Possible usage of NULL in GAS

2023-09-18 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30860

Nick Clifton  changed:

   What|Removed |Added

 CC||nickc at redhat dot com

--- Comment #2 from Nick Clifton  ---
(In reply to jacob from comment #1)

> 
>know(fragP->fr_next); // Not active if NDEBUG is defined
>after = fragP->fr_next->fr_address + stretch;
> We know that fragP->fr_next CAN BE NULL, since the controlling condition of
> this loop (the switch is inside a loop) is:
>  for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next) {
> 
> So, we RELY on fr_next being NULL to stop the loop. But we do not test for
> this condition before using it here. As you know the "know" construct is
> NOT active if NDEBUG is active.
> PRPOSED FIX:
> Replace "know" by "gas_assert"

Actually this is wrong.  The point of compiling with NDEBUG active
is that sanity checks like the one above are removed making the code
(theoretically) faster.  Anyone using programs compiled with NDEBUG
must take on the risk that the program will fail in an unhelpful way
if the input is not as expected.

So replacing know() with gas_assert() will remove the benefit of
compiling with NDEBUG.  Of course this leads to the question - why 
have a gas_assert() function at all, why not just use know() all 
the time ?  The answer is partially programmer preference and
partially assumption of risk.  If the programmer is sure that a 
failing a particular test can only happen if something else is wrong
elsewhere in the code, eg a rs_org fragment not being followed by
another fragment, then using know() makes sense.  If the test fails
then there is a bug elsewhere and this code is not at fault.  So it
should be safe to remove the test when compiling with NDEBUG - using
NDEBUG implies that the user is happy with the code's behaviour and
does not want extra tests.

If on the other hand, the programmer knows that an issue can arise
because of input over which the code has no control - eg the assembler
source input file - and there is no easy way to report this error back
to the user, then using gas_assert() makes sense.  The code cannot
continue and cannot go back, so halting with an error message is the
only option.

Having said all of that, there probably are places in the current code 
where it would be better to use gas_assert() instead of know() and 
places where it would be better to report an error back to the function 
caller rather than halting.  It is just that, in my opinion, write.c:3014
is not one of them.

-- 
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-18 Thread bouanto at zoho dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30856

--- Comment #2 from Antoni Boucher  ---
Created attachment 15113
  --> https://sourceware.org/bugzilla/attachment.cgi?id=15113&action=edit
ASM reproducer for the bug

Here it is. You simply need to run GNU as on this file to trigger the error.

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


[Bug ld/30865] ld: =fillexp different behaviors for hexidecimal literal

2023-09-18 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30865

Nick Clifton  changed:

   What|Removed |Added

   Assignee|unassigned at sourceware dot org   |nickc at redhat dot com
 CC||nickc at redhat dot com
 Status|NEW |ASSIGNED

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


[Bug ld/30824] BFD (GNU Binutils) 2.41 internal error, aborting at elf64-ppc.c:17531 in ppc64_elf_relocate_section

2023-09-18 Thread sam at gentoo dot org
https://sourceware.org/bugzilla/show_bug.cgi?id=30824

Sam James  changed:

   What|Removed |Added

 CC||sam at gentoo dot org

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


[Bug ld/30865] ld: =fillexp different behaviors for hexidecimal literal

2023-09-18 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30865

--- Comment #1 from Nick Clifton  ---
(In reply to Fangrui Song from comment #0)

> A side effect possibly from this commit is that 0x literals have different
> behaviors from decimal literals and expressions.
> 
> .text : { *(.text) } =0x90# set the fill pattern to 0x90909090
> .text : { *(.text) } =0x90909090  # set the fill pattern to 0x90909090
> .text : { *(.text) } =144 # set the fill pattern to 0x0090
> .text : { *(.text) } =0x90+0  # set the fill pattern to 0x0090
> 
> This has been the case for ~20 years, so probably not worth changing,

Agreed.

> but I
> felt obliged to point out this special behavior to warn users about 0x90
> 0x9090 0x909090 that are shorter than 4 bytes.

So a documentation update is needed.

In the course of investigating this I also discovered that the difference
only applies to simple hexadecimal values specified with a 0x prefix.  It
does not apply to expressions involving hex numbers, eg 0x1 + 0x2, nor to
hex values specified via a $ prefix, eg $9a, nor to hex values specified 
by a letter suffix, eg 9aH, nor to hex values specified with a magnitude,
eg 0x9aK

Anyway please take a look at the uploaded patch which updates the 
documentation and adds a new test case to make sure that the documented
behaviour continues.

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


[Bug ld/30865] ld: =fillexp different behaviors for hexidecimal literal

2023-09-18 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30865

--- Comment #2 from Nick Clifton  ---
Created attachment 15114
  --> https://sourceware.org/bugzilla/attachment.cgi?id=15114&action=edit
Proposed patch

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


[Bug ld/30865] ld: =fillexp different behaviors for hexidecimal literal

2023-09-18 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30865

Nick Clifton  changed:

   What|Removed |Added

  Attachment #15114|0   |1
is obsolete||

--- Comment #4 from Nick Clifton  ---
Created attachment 15115
  --> https://sourceware.org/bugzilla/attachment.cgi?id=15115&action=edit
Proposed patch

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


[Bug ld/30865] ld: =fillexp different behaviors for hexidecimal literal

2023-09-18 Thread nickc at redhat dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30865

--- Comment #3 from Nick Clifton  ---
It is always the way - you post a patch and then immediately realise that you
have forgotten something.  In this case my patch updates the description of the
FILL directive in the linker documentation, but it does not update the =
expression description.  So here is a revised patch that does just that.

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


[Bug gold/30867] New: merge.cc:668:27: error: ‘char16_t’ was not declared in this scope

2023-09-18 Thread vvinayag at arm dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30867

Bug ID: 30867
   Summary: merge.cc:668:27: error: ‘char16_t’ was not declared in
this scope
   Product: binutils
   Version: 2.42 (HEAD)
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: gold
  Assignee: ccoutant at gmail dot com
  Reporter: vvinayag at arm dot com
CC: ian at airs dot com
  Target Milestone: ---

When building cross toolchains (for targets: aarch64_none_linux_gnu,
arm_none_linux_gnueabi) using gcc 4.8.5, the following errors are seen:


/…/src/binutils-gdb/gold/merge.cc:668:27: error: ‘char16_t’ was not declared in
this scope

 class Output_merge_string;
   ^

/…/src/binutils-gdb/gold/merge.cc:668:35: error: template argument 1 is invalid

 class Output_merge_string;
   ^

/…/src/binutils-gdb/gold/merge.cc:671:27: error: ‘char32_t’ was not declared in
this scope

 class Output_merge_string;
   ^

/…/src/binutils-gdb/gold/merge.cc:671:35: error: template argument 1 is invalid

 class Output_merge_string;
   ^

This looks related to the patch "gold: Use char16_t, char32_t instead of
uint16_t, uint32_t as character types", so I have mentioned it here too:
https://sourceware.org/pipermail/binutils/2023-September/129446.html

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


[Bug gold/30867] merge.cc:668:27: error: ‘char16_t’ was not declared in this scope

2023-09-18 Thread vvinayag at arm dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30867

vvinayag at arm dot com changed:

   What|Removed |Added

 Target||aarch64-none-linux-gnu,
   ||arm-none-linux-gnueabihf

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


[Bug gold/30867] merge.cc:668:27: error: ‘char16_t’ was not declared in this scope

2023-09-18 Thread vvinayag at arm dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=30867

vvinayag at arm dot com changed:

   What|Removed |Added

   Host||x86_64-Linux

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