* Re: Commit: Gas: Add .nop directive. [not found] <mailman.151032.1600097231.8982.binutils@sourceware.org> @ 2020-09-14 16:04 ` Michael Morrell 2020-09-14 16:31 ` Nick Clifton 0 siblings, 1 reply; 7+ messages in thread From: Michael Morrell @ 2020-09-14 16:04 UTC (permalink / raw) To: binutils Once this is in, I hope this code from gcc/configure can be removed: # ??? Not all targets support dwarf2 debug_line, even within a version # of gas. Moreover, we need to emit a valid instruction to trigger any # info to the output file. So, as supported targets are added to gas 2.11, # add some instruction here to (also) show we expect this might work. # ??? Once 2.11 is released, probably need to add first known working # version to the per-target configury. case "$cpu_type" in aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | m32c | m68k \ | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc | spu \ | tilegx | tilepro | visium | xstormy16 | xtensa) insn="nop" ;; ia64 | s390) insn="nop 0" ;; mmix) insn="swym 0" ;; esac You currently have to update this for every new port to be able to check for dwarf2_debug_line support (even if the port has a "nop" instruction). Michael On Monday, September 14, 2020, 08:27:15 AM PDT, Nick Clifton wrote: Hi Guys, I am checking in the attached patch to add a ".nop" directive to the assembler. This directive creates a single no-op instruction. It is similar to the already existing ".nops" directive, apart from two important differences: 1. It is implemented for all architectures, not just x86. 2. The instruction it generates counts as a real instruction for the purposes of DWARF line number table generation. Fact 1 is important as it allows the directive to be used to generate architecture neutral test cases containing real instructions. Tested with a large variety of different targets. Cheers Nick ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Commit: Gas: Add .nop directive. 2020-09-14 16:04 ` Commit: Gas: Add .nop directive Michael Morrell @ 2020-09-14 16:31 ` Nick Clifton 2020-09-15 3:52 ` 2.35.1 (was: Commit: Gas: Add .nop directive.) Hans-Peter Nilsson 2020-09-15 9:53 ` Commit: Gas: Add .nop directive Nick Clifton 0 siblings, 2 replies; 7+ messages in thread From: Nick Clifton @ 2020-09-14 16:31 UTC (permalink / raw) To: morrell, binutils Hi Michael, > Once this is in, I hope this code from gcc/configure can be removed: That would be a nice thing to do, but I am not sure that it will work. Since gcc still needs to remain compatible with older versions of the binutils I think that code will need to remain. What could happen though is that the test could be taught about the new directive and if it is supported, use it. This would mean that future new architectures would not have to have any code added here, the test should just work. I am contemplating backporting the patch to the 2.35 branch and then triggering a 2.35.1 point release. (Actually there are a few more DWARF-5 patches that need to go in, and then it might be a good time for a point release). So in theory the test in gcc could check for binutils 2.35.1 or later, and if present, just use the .nop directive, without having to worry about anything target specific. Cheers Nick ^ permalink raw reply [flat|nested] 7+ messages in thread
* 2.35.1 (was: Commit: Gas: Add .nop directive.) 2020-09-14 16:31 ` Nick Clifton @ 2020-09-15 3:52 ` Hans-Peter Nilsson 2020-09-15 10:31 ` Nick Clifton 2020-09-15 9:53 ` Commit: Gas: Add .nop directive Nick Clifton 1 sibling, 1 reply; 7+ messages in thread From: Hans-Peter Nilsson @ 2020-09-15 3:52 UTC (permalink / raw) To: Nick Clifton; +Cc: binutils On Mon, 14 Sep 2020, Nick Clifton via Binutils wrote: > I am contemplating backporting the patch to the 2.35 branch and then triggering > a 2.35.1 point release. If so, please add a 2.35.1 milestone in bugzilla, so bugs that will be fixed in 2.35.1 can be marked as such. brgds, H-P PS. The new .nop test-case fails for mmix. It's "swym 0" if you beat me to the fix. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.35.1 (was: Commit: Gas: Add .nop directive.) 2020-09-15 3:52 ` 2.35.1 (was: Commit: Gas: Add .nop directive.) Hans-Peter Nilsson @ 2020-09-15 10:31 ` Nick Clifton 2020-09-15 11:47 ` Hans-Peter Nilsson 0 siblings, 1 reply; 7+ messages in thread From: Nick Clifton @ 2020-09-15 10:31 UTC (permalink / raw) To: Hans-Peter Nilsson; +Cc: binutils Hi Hans-Peter, > If so, please add a 2.35.1 milestone in bugzilla, so bugs that > will be fixed in 2.35.1 can be marked as such. Ok, will do. > PS. The new .nop test-case fails for mmix. It's "swym 0" if you beat me to the fix. It does ? I do not see any failures in my tests. Can you tell me how to reproduce the problem ? Cheers Nick ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.35.1 (was: Commit: Gas: Add .nop directive.) 2020-09-15 10:31 ` Nick Clifton @ 2020-09-15 11:47 ` Hans-Peter Nilsson 2020-09-15 12:45 ` Nick Clifton 0 siblings, 1 reply; 7+ messages in thread From: Hans-Peter Nilsson @ 2020-09-15 11:47 UTC (permalink / raw) To: Nick Clifton; +Cc: binutils On Tue, 15 Sep 2020, Nick Clifton wrote: > > PS. The new .nop test-case fails for mmix. It's "swym 0" if you beat me to the fix. > > It does ? I do not see any failures in my tests. Can you tell me how to reproduce the problem ? On a brief inspection, it seems it's not a trivial overlooked definition (thanks for caring), but instead some kind of undefinedwilduninitialized thing. I get in gas.log, at 4a8f181d196f85ca1, for --target=mmix-knuth-mmixware on a i686-linux host: ../as-new -o tmpdir/nop.o /home/hp/binutils/src/gas/testsuite/gas/all/nop.s Executing on host: sh -c {../as-new -o tmpdir/nop.o /home/hp/binutils/src/gas/testsuite/gas/all/nop.s 2>&1} /dev/null dump.tmp (timeout = 300) /home/hp/binutils/src/gas/testsuite/gas/all/nop.s: Assembler messages: /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:2: Error: junk at end of line, first unrecognized character valued 0x8 /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:2: Error: unknown opcode: `XXXa' /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:2: Error: junk at end of line, first unrecognized character valued 0x14 /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:2: Error: junk at end of line, first unrecognized character valued 0x14 /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:3: Error: junk at end of line, first unrecognized character valued 0x14 /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:3: Fatal error: internal: unhandled label failed with: </home/hp/binutils/src/gas/testsuite/gas/all/nop.s: Assembler messages: /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:2: Error: junk at end of line, first unrecognized character valued 0x8 /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:2: Error: unknown opcode: `XXXa' /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:2: Error: junk at end of line, first unrecognized character valued 0x14 /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:2: Error: junk at end of line, first unrecognized character valued 0x14 /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:3: Error: junk at end of line, first unrecognized character valued 0x14 /home/hp/binutils/src/gas/testsuite/gas/all/nop.s:3: Fatal error: internal: unhandled label >, no expected output FAIL: Generate NOPs in an architecture neutral manner The three characters marked XXX (which I didn't want to include verbatim) are 0xbd, 0x14, 0x8. On another host, x86_64-linux built with -m32, everything is fine. Perhaps a valgrind and/or asan run will show (later). brgds, H-P PS. It should be "swym 0", not "set $0,$0". I'll fix. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.35.1 (was: Commit: Gas: Add .nop directive.) 2020-09-15 11:47 ` Hans-Peter Nilsson @ 2020-09-15 12:45 ` Nick Clifton 0 siblings, 0 replies; 7+ messages in thread From: Nick Clifton @ 2020-09-15 12:45 UTC (permalink / raw) To: Hans-Peter Nilsson; +Cc: binutils Hi Hans-Peter, > On a brief inspection, it seems it's not a trivial overlooked > definition (thanks for caring), but instead some kind of > undefinedwilduninitialized thing. Ah ha! Please try the vert latest binutils sources. I checked in a patch today that should fix this. (The problem is that on some architectures the md_assemble() function leaves input_line_pointer pointing to its input parameter. Since s_nops() passes md_assemble a string which it frees upon return, ilp ends up pointing into freed memory.... Cheers Nick > PS. It should be "swym 0", not "set $0,$0". I'll fix. Thanks - please do. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Commit: Gas: Add .nop directive. 2020-09-14 16:31 ` Nick Clifton 2020-09-15 3:52 ` 2.35.1 (was: Commit: Gas: Add .nop directive.) Hans-Peter Nilsson @ 2020-09-15 9:53 ` Nick Clifton 1 sibling, 0 replies; 7+ messages in thread From: Nick Clifton @ 2020-09-15 9:53 UTC (permalink / raw) To: binutils [-- Attachment #1: Type: text/plain, Size: 1052 bytes --] Hi Guys, The code to implement the .nop directive calls the md_assemble() function with an allocated string, rather than input_line_pointer. This is supposed to work, but there are some targets that assume that md_assemble()'s argument is input_line_pointer, and that they are free to update it. Even worse some of them assign input_line_pointer to the string argument and leave it there. So when s_nop() finishes and frees the string pointer, input_line_pointer is left pointing at freed memory. At first I though that it was just the S12Z port that behaved in this way but now I have found that the MN10300 port does too. There may be others as well, since the symptom is hard to trace. So I am applying the attached patch to fix s_nop() so that it explicitly preserves input_line_pointer instead. Cheers Nick gas/ChangeLog 2020-09-15 Nick Clifton <nickc@redhat.com> * read.c (s_nop): Preserve the input_line_pointer around the call to md_assemble. * config/tc-s12z.c (md_assemble): Revert previous delta. [-- Attachment #2: gas-nop-directive.patch.2 --] [-- Type: application/x-troff-man, Size: 1383 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-09-15 12:45 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <mailman.151032.1600097231.8982.binutils@sourceware.org> 2020-09-14 16:04 ` Commit: Gas: Add .nop directive Michael Morrell 2020-09-14 16:31 ` Nick Clifton 2020-09-15 3:52 ` 2.35.1 (was: Commit: Gas: Add .nop directive.) Hans-Peter Nilsson 2020-09-15 10:31 ` Nick Clifton 2020-09-15 11:47 ` Hans-Peter Nilsson 2020-09-15 12:45 ` Nick Clifton 2020-09-15 9:53 ` Commit: Gas: Add .nop directive Nick Clifton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).