Home | History | Annotate | Line # | Download | only in gdb.arch
      1 /* Copyright 2019-2024 Free Software Foundation, Inc.
      2 
      3    This program is free software; you can redistribute it and/or modify
      4    it under the terms of the GNU General Public License as published by
      5    the Free Software Foundation; either version 3 of the License, or
      6    (at your option) any later version.
      7 
      8    This program is distributed in the hope that it will be useful,
      9    but WITHOUT ANY WARRANTY; without even the implied warranty of
     10    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11    GNU General Public License for more details.
     12 
     13    You should have received a copy of the GNU General Public License
     14    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     15 
     16 	.option nopic
     17 	.text
     18 
     19 	.align  1
     20 	.globl  bar
     21 	.type   bar, @function
     22 bar:
     23 	tail       1f
     24 	.size   bar, .-func
     25 
     26 	.align  1
     27 	.globl  func
     28 	.type   func, @function
     29 func:
     30 	/* A fake instruction of either 6 or 8 bytes.  This is never
     31 	   executed, but the prologue scanner will try to decode it.
     32 	   These long instructions are ISA extensions, use .byte rather
     33 	   than an actual instruction mnemonic so that the test can be
     34 	   compiled with a toolchain that doesn't include any long
     35 	   instruction extensions.  */
     36 #if BAD_INSN_LEN == 6
     37 	/* A fake 6 byte instruction.  */
     38 	.byte 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00
     39 #elif BAD_INSN_LEN == 8
     40 	/* A fake 8 byte instruction.  */
     41 	.byte 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
     42 #else
     43 #error unexpected bad instruction length
     44 #endif
     45 
     46 1:
     47 	addi    sp,sp,-16
     48 #if __SIZEOF_POINTER__ == 8
     49 	sd      s0,8(sp)
     50 #else
     51 	sw      s0,8(sp)
     52 #endif
     53 	addi    s0,sp,16
     54 	nop
     55 #if __SIZEOF_POINTER__ == 8
     56 	ld      s0,8(sp)
     57 #else
     58 	lw      s0,8(sp)
     59 #endif
     60 	addi    sp,sp,16
     61 	jr      ra
     62 	.size   func, .-func
     63 	.section	.note.GNU-stack,"",@progbits
     64