mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 01:51:49 +01:00 
			
		
		
		
	+ Initial implementation for openbsd x86_64 cpu specific rtl code
git-svn-id: trunk@20713 -
This commit is contained in:
		
							parent
							
								
									96f1627c46
								
							
						
					
					
						commit
						a06b2b4c02
					
				
							
								
								
									
										6
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @ -8080,6 +8080,12 @@ rtl/openbsd/unxconst.inc svneol=native#text/plain | |||||||
| rtl/openbsd/unxfunc.inc svneol=native#text/plain | rtl/openbsd/unxfunc.inc svneol=native#text/plain | ||||||
| rtl/openbsd/unxsockh.inc svneol=native#text/plain | rtl/openbsd/unxsockh.inc svneol=native#text/plain | ||||||
| rtl/openbsd/unxsysc.inc svneol=native#text/plain | rtl/openbsd/unxsysc.inc svneol=native#text/plain | ||||||
|  | rtl/openbsd/x86_64/bsyscall.inc svneol=native#text/plain | ||||||
|  | rtl/openbsd/x86_64/cprt0.as svneol=native#text/plain | ||||||
|  | rtl/openbsd/x86_64/crt0.s svneol=native#text/plain | ||||||
|  | rtl/openbsd/x86_64/gprt0.as svneol=native#text/plain | ||||||
|  | rtl/openbsd/x86_64/prt0.as svneol=native#text/plain | ||||||
|  | rtl/openbsd/x86_64/sighnd.inc svneol=native#text/plain | ||||||
| rtl/os2/Makefile svneol=native#text/plain | rtl/os2/Makefile svneol=native#text/plain | ||||||
| rtl/os2/Makefile.fpc svneol=native#text/plain | rtl/os2/Makefile.fpc svneol=native#text/plain | ||||||
| rtl/os2/classes.pp svneol=native#text/plain | rtl/os2/classes.pp svneol=native#text/plain | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								rtl/openbsd/x86_64/bsyscall.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								rtl/openbsd/x86_64/bsyscall.inc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | { | ||||||
|  |     This file is part of the Free Pascal run time library. | ||||||
|  |     Copyright (c) 2005 by Michael Van Canneyt, | ||||||
|  |     member of the Free Pascal development team. | ||||||
|  | 
 | ||||||
|  |     See the file COPYING.FPC, included in this distribution, | ||||||
|  |     for details about the copyright. | ||||||
|  | 
 | ||||||
|  |     This program is distributed in the hope that it will be useful, | ||||||
|  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||||||
|  | 
 | ||||||
|  |  **********************************************************************} | ||||||
|  | 
 | ||||||
							
								
								
									
										236
									
								
								rtl/openbsd/x86_64/cprt0.as
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										236
									
								
								rtl/openbsd/x86_64/cprt0.as
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,236 @@ | |||||||
|  | 	.file	"crt0.c" | ||||||
|  | 	.globl	__progname | ||||||
|  | 	.section	.rodata | ||||||
|  | .LC0: | ||||||
|  | 	.string	"" | ||||||
|  | 	.data | ||||||
|  | 	.align 8 | ||||||
|  | 	.type	__progname, @object | ||||||
|  | 	.size	__progname, 8 | ||||||
|  | __progname: | ||||||
|  | 	.quad	.LC0 | ||||||
|  | #APP | ||||||
|  | 	 .text				 | ||||||
|  | 	.align	8			 | ||||||
|  | 	.globl	__start			 | ||||||
|  | 	.globl	_start			 | ||||||
|  | _start:					 | ||||||
|  | __start:				 | ||||||
|  | 	movq	%rbx,%r9		 | ||||||
|  | 	movq	%rcx,%r8		 | ||||||
|  | 	movq	%rdx,%rcx		 | ||||||
|  | 	movq	(%rsp),%rdi		 | ||||||
|  | 	leaq	16(%rsp,%rdi,8),%rdx	 | ||||||
|  | 	leaq	8(%rsp),%rsi		 | ||||||
|  | 	subq	$8,%rsp			 | ||||||
|  | 	andq	$~15,%rsp		 | ||||||
|  | 	addq	$8,%rsp			 | ||||||
|  | 	jmp	___start		 | ||||||
|  | 
 | ||||||
|  | #NO_APP | ||||||
|  | 	.text | ||||||
|  | 	.globl	___start | ||||||
|  | 	.type	___start, @function | ||||||
|  | ___start: | ||||||
|  | .LFB9: | ||||||
|  | 	pushq	%rbp | ||||||
|  | .LCFI0: | ||||||
|  | 	movq	%rsp, %rbp | ||||||
|  | .LCFI1: | ||||||
|  | 	subq	$64, %rsp | ||||||
|  | .LCFI2: | ||||||
|  | 	movl	%edi, -20(%rbp) | ||||||
|  | 	movq	%rsi, -32(%rbp) | ||||||
|  | 	movq	%rdx, -40(%rbp) | ||||||
|  | 	movq	%rcx, -48(%rbp) | ||||||
|  | 	movq	%r8, -56(%rbp) | ||||||
|  | 	movq	%r9, -64(%rbp) | ||||||
|  | 	movq	-40(%rbp), %rax | ||||||
|  | 	movq	%rax, environ(%rip) | ||||||
|  | 	movq    %rax,operatingsystem_parameter_envp | ||||||
|  | 	movq	-32(%rbp), %rax | ||||||
|  | 	movq	(%rax), %rax | ||||||
|  | 	movq	%rax, -8(%rbp) | ||||||
|  | 	cmpq	$0, -8(%rbp) | ||||||
|  | 	je	.L2 | ||||||
|  | 	movq	-8(%rbp), %rdi | ||||||
|  | 	movl	$47, %esi | ||||||
|  | 	call	_strrchr | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	testq	%rax, %rax | ||||||
|  | 	jne	.L4 | ||||||
|  | 	movq	-8(%rbp), %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | 	jmp	.L6 | ||||||
|  | .L4: | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	addq	$1, %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | .L6: | ||||||
|  | 	movq	$__progname_storage, -16(%rbp) | ||||||
|  | 	jmp	.L7 | ||||||
|  | .L8: | ||||||
|  | 	movq	__progname(%rip), %rcx | ||||||
|  | 	movzbl	(%rcx), %edx | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	movb	%dl, (%rax) | ||||||
|  | 	addq	$1, -16(%rbp) | ||||||
|  | 	leaq	1(%rcx), %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | .L7: | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	movzbl	(%rax), %eax | ||||||
|  | 	testb	%al, %al | ||||||
|  | 	je	.L9 | ||||||
|  | 	movl	$__progname_storage+255, %eax | ||||||
|  | 	cmpq	%rax, -16(%rbp) | ||||||
|  | 	jb	.L8 | ||||||
|  | .L9: | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	movb	$0, (%rax) | ||||||
|  | 	movq	$__progname_storage, __progname(%rip) | ||||||
|  | .L2: | ||||||
|  | 	movl	$_mcleanup, %edi | ||||||
|  | 	call	atexit | ||||||
|  | 	movl	$_etext, %eax | ||||||
|  | 	movq	%rax, %rsi | ||||||
|  | 	movl	$_eprol, %eax | ||||||
|  | 	movq	%rax, %rdi | ||||||
|  | 	call	monstartup | ||||||
|  | 	movl	$0, %eax | ||||||
|  | 	call	__init | ||||||
|  | 	movq	environ(%rip), %rdx | ||||||
|  | 	movq	-32(%rbp), %rsi | ||||||
|  | 	movl	-20(%rbp), %edi | ||||||
|  | 	movq    %rdi,operatingsystem_parameter_argc | ||||||
|  | 	movq    %rsi,operatingsystem_parameter_argv | ||||||
|  | 	movl	$0, %eax | ||||||
|  | 	call	main | ||||||
|  | 	# movl	%eax, %edi | ||||||
|  | 	# call	exit | ||||||
|  | 	jmp _haltproc | ||||||
|  |         .p2align 2,0x90 | ||||||
|  | 
 | ||||||
|  | .globl _haltproc | ||||||
|  | .type _haltproc,@function | ||||||
|  | 
 | ||||||
|  | _haltproc: | ||||||
|  |            movq $1,%rax | ||||||
|  |            movzwq operatingsystem_result,%rbx | ||||||
|  |            pushq   %rbx | ||||||
|  |            call .Lactualsyscall | ||||||
|  |            addq  $8,%rsp | ||||||
|  |            jmp   _haltproc | ||||||
|  | 
 | ||||||
|  | .Lactualsyscall: | ||||||
|  |          int $0x80 | ||||||
|  |          jb .LErrorcode | ||||||
|  |          xor %rbx,%rbx | ||||||
|  |          ret | ||||||
|  | .LErrorcode: | ||||||
|  |          movq  %rax,%rbx | ||||||
|  |          movq  $-1,%rax | ||||||
|  | .LFE9: | ||||||
|  | 	.size	___start, .-___start | ||||||
|  | 	.type	_strrchr, @function | ||||||
|  | _strrchr: | ||||||
|  | .LFB10: | ||||||
|  | 	pushq	%rbp | ||||||
|  | .LCFI3: | ||||||
|  | 	movq	%rsp, %rbp | ||||||
|  | .LCFI4: | ||||||
|  | 	movq	%rdi, -24(%rbp) | ||||||
|  | 	movb	%sil, -25(%rbp) | ||||||
|  | 	movq	$0, -8(%rbp) | ||||||
|  | .L13: | ||||||
|  | 	movq	-24(%rbp), %rdx | ||||||
|  | 	movzbl	(%rdx), %eax | ||||||
|  | 	cmpb	-25(%rbp), %al | ||||||
|  | 	jne	.L14 | ||||||
|  | 	movq	-24(%rbp), %rax | ||||||
|  | 	movq	%rax, -8(%rbp) | ||||||
|  | .L14: | ||||||
|  | 	movq	-24(%rbp), %rdx | ||||||
|  | 	movzbl	(%rdx), %eax | ||||||
|  | 	testb	%al, %al | ||||||
|  | 	jne	.L16 | ||||||
|  | 	movq	-8(%rbp), %rax | ||||||
|  | 	movq	%rax, -16(%rbp) | ||||||
|  | 	jmp	.L12 | ||||||
|  | .L16: | ||||||
|  | 	addq	$1, -24(%rbp) | ||||||
|  | 	jmp	.L13 | ||||||
|  | .L12: | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	leave | ||||||
|  | 	ret | ||||||
|  | .LFE10: | ||||||
|  | 	.size	_strrchr, .-_strrchr | ||||||
|  | #APP | ||||||
|  | 	  .text | ||||||
|  | 	_eprol: | ||||||
|  | #NO_APP | ||||||
|  | 	.comm	environ,8,8 | ||||||
|  | 	.comm	__progname_storage,256,32 | ||||||
|  |         .comm   operatingsystem_parameter_envp,8,8 | ||||||
|  |         .comm   operatingsystem_parameter_argc,8,8 | ||||||
|  |         .comm   operatingsystem_parameter_argv,8,8 | ||||||
|  | 	.section	.eh_frame,"a",@progbits | ||||||
|  | .Lframe1: | ||||||
|  | 	.long	.LECIE1-.LSCIE1 | ||||||
|  | .LSCIE1: | ||||||
|  | 	.long	0x0 | ||||||
|  | 	.byte	0x1 | ||||||
|  | 	.string	"zR" | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.sleb128 -8 | ||||||
|  | 	.byte	0x10 | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.byte	0x3 | ||||||
|  | 	.byte	0xc | ||||||
|  | 	.uleb128 0x7 | ||||||
|  | 	.uleb128 0x8 | ||||||
|  | 	.byte	0x90 | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.align 8 | ||||||
|  | .LECIE1: | ||||||
|  | .LSFDE1: | ||||||
|  | 	.long	.LEFDE1-.LASFDE1 | ||||||
|  | .LASFDE1: | ||||||
|  | 	.long	.LASFDE1-.Lframe1 | ||||||
|  | 	.long	.LFB9 | ||||||
|  | 	.long	.LFE9-.LFB9 | ||||||
|  | 	.uleb128 0x0 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI0-.LFB9 | ||||||
|  | 	.byte	0xe | ||||||
|  | 	.uleb128 0x10 | ||||||
|  | 	.byte	0x86 | ||||||
|  | 	.uleb128 0x2 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI1-.LCFI0 | ||||||
|  | 	.byte	0xd | ||||||
|  | 	.uleb128 0x6 | ||||||
|  | 	.align 8 | ||||||
|  | .LEFDE1: | ||||||
|  | .LSFDE3: | ||||||
|  | 	.long	.LEFDE3-.LASFDE3 | ||||||
|  | .LASFDE3: | ||||||
|  | 	.long	.LASFDE3-.Lframe1 | ||||||
|  | 	.long	.LFB10 | ||||||
|  | 	.long	.LFE10-.LFB10 | ||||||
|  | 	.uleb128 0x0 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI3-.LFB10 | ||||||
|  | 	.byte	0xe | ||||||
|  | 	.uleb128 0x10 | ||||||
|  | 	.byte	0x86 | ||||||
|  | 	.uleb128 0x2 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI4-.LCFI3 | ||||||
|  | 	.byte	0xd | ||||||
|  | 	.uleb128 0x6 | ||||||
|  | 	.align 8 | ||||||
|  | .LEFDE3: | ||||||
|  | 	.ident	"GCC: (GNU) 4.2.1 20070719 " | ||||||
							
								
								
									
										192
									
								
								rtl/openbsd/x86_64/crt0.s
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								rtl/openbsd/x86_64/crt0.s
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,192 @@ | |||||||
|  | 	.file	"crt0.c" | ||||||
|  | 	.globl	__progname
 | ||||||
|  | 	.section	.rodata | ||||||
|  | .LC0: | ||||||
|  | 	.string	"" | ||||||
|  | 	.data | ||||||
|  | 	.align 8
 | ||||||
|  | 	.type	__progname, @object
 | ||||||
|  | 	.size	__progname, 8 | ||||||
|  | __progname: | ||||||
|  | 	.quad	.LC0 | ||||||
|  | #APP | ||||||
|  | 	 .text				;	.align	8			;	.globl	__start			;	.globl	_start			;_start:					;__start:				;	movq	%rbx,%r9		;	movq	%rcx,%r8		;	movq	%rdx,%rcx		;	movq	(%rsp),%rdi		;	leaq	16(%rsp,%rdi,8),%rdx	;	leaq	8(%rsp),%rsi		;	subq	$8,%rsp			;	andq	$~15,%rsp		;	addq	$8,%rsp			;	jmp	___start		;
 | ||||||
|  | #NO_APP | ||||||
|  | 	.text | ||||||
|  | 	.globl	___start
 | ||||||
|  | 	.type	___start, @function
 | ||||||
|  | ___start: | ||||||
|  | .LFB9: | ||||||
|  | 	pushq	%rbp | ||||||
|  | .LCFI0: | ||||||
|  | 	movq	%rsp, %rbp | ||||||
|  | .LCFI1: | ||||||
|  | 	subq	$64, %rsp | ||||||
|  | .LCFI2: | ||||||
|  | 	movl	%edi, -20(%rbp) | ||||||
|  | 	movq	%rsi, -32(%rbp) | ||||||
|  | 	movq	%rdx, -40(%rbp) | ||||||
|  | 	movq	%rcx, -48(%rbp) | ||||||
|  | 	movq	%r8, -56(%rbp) | ||||||
|  | 	movq	%r9, -64(%rbp) | ||||||
|  | 	movq	-40(%rbp), %rax | ||||||
|  | 	movq	%rax, environ(%rip) | ||||||
|  | 	movq	-32(%rbp), %rax | ||||||
|  | 	movq	(%rax), %rax | ||||||
|  | 	movq	%rax, -8(%rbp) | ||||||
|  | 	cmpq	$0, -8(%rbp) | ||||||
|  | 	je	.L2 | ||||||
|  | 	movq	-8(%rbp), %rdi | ||||||
|  | 	movl	$47, %esi | ||||||
|  | 	call	_strrchr | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	testq	%rax, %rax | ||||||
|  | 	jne	.L4 | ||||||
|  | 	movq	-8(%rbp), %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | 	jmp	.L6 | ||||||
|  | .L4: | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	addq	$1, %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | .L6: | ||||||
|  | 	movq	$__progname_storage, -16(%rbp) | ||||||
|  | 	jmp	.L7 | ||||||
|  | .L8: | ||||||
|  | 	movq	__progname(%rip), %rcx | ||||||
|  | 	movzbl	(%rcx), %edx | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	movb	%dl, (%rax) | ||||||
|  | 	addq	$1, -16(%rbp) | ||||||
|  | 	leaq	1(%rcx), %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | .L7: | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	movzbl	(%rax), %eax | ||||||
|  | 	testb	%al, %al | ||||||
|  | 	je	.L9 | ||||||
|  | 	movl	$__progname_storage+255, %eax | ||||||
|  | 	cmpq	%rax, -16(%rbp) | ||||||
|  | 	jb	.L8 | ||||||
|  | .L9: | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	movb	$0, (%rax) | ||||||
|  | 	movq	$__progname_storage, __progname(%rip) | ||||||
|  | .L2: | ||||||
|  | 	movl	$_mcleanup, %edi | ||||||
|  | 	call	atexit | ||||||
|  | 	movl	$_etext, %eax | ||||||
|  | 	movq	%rax, %rsi | ||||||
|  | 	movl	$_eprol, %eax | ||||||
|  | 	movq	%rax, %rdi | ||||||
|  | 	call	monstartup | ||||||
|  | 	movl	$0, %eax | ||||||
|  | 	call	__init | ||||||
|  | 	movq	environ(%rip), %rdx | ||||||
|  | 	movq	-32(%rbp), %rsi | ||||||
|  | 	movl	-20(%rbp), %edi | ||||||
|  | 	movl	$0, %eax | ||||||
|  | 	call	main | ||||||
|  | 	movl	%eax, %edi | ||||||
|  | 	call	exit | ||||||
|  | .LFE9: | ||||||
|  | 	.size	___start, .-___start | ||||||
|  | 	.type	_strrchr, @function
 | ||||||
|  | _strrchr: | ||||||
|  | .LFB10: | ||||||
|  | 	pushq	%rbp | ||||||
|  | .LCFI3: | ||||||
|  | 	movq	%rsp, %rbp | ||||||
|  | .LCFI4: | ||||||
|  | 	movq	%rdi, -24(%rbp) | ||||||
|  | 	movb	%sil, -25(%rbp) | ||||||
|  | 	movq	$0, -8(%rbp) | ||||||
|  | .L13: | ||||||
|  | 	movq	-24(%rbp), %rdx | ||||||
|  | 	movzbl	(%rdx), %eax | ||||||
|  | 	cmpb	-25(%rbp), %al | ||||||
|  | 	jne	.L14 | ||||||
|  | 	movq	-24(%rbp), %rax | ||||||
|  | 	movq	%rax, -8(%rbp) | ||||||
|  | .L14: | ||||||
|  | 	movq	-24(%rbp), %rdx | ||||||
|  | 	movzbl	(%rdx), %eax | ||||||
|  | 	testb	%al, %al | ||||||
|  | 	jne	.L16 | ||||||
|  | 	movq	-8(%rbp), %rax | ||||||
|  | 	movq	%rax, -16(%rbp) | ||||||
|  | 	jmp	.L12 | ||||||
|  | .L16: | ||||||
|  | 	addq	$1, -24(%rbp) | ||||||
|  | 	jmp	.L13 | ||||||
|  | .L12: | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	leave | ||||||
|  | 	ret | ||||||
|  | .LFE10: | ||||||
|  | 	.size	_strrchr, .-_strrchr | ||||||
|  | #APP | ||||||
|  | 	  .text | ||||||
|  | 	_eprol: | ||||||
|  | #NO_APP | ||||||
|  | 	.comm	environ,8,8 | ||||||
|  | 	.comm	__progname_storage,256,32 | ||||||
|  | 	.section	.eh_frame,"a",@progbits
 | ||||||
|  | .Lframe1: | ||||||
|  | 	.long	.LECIE1-.LSCIE1 | ||||||
|  | .LSCIE1: | ||||||
|  | 	.long	0x0
 | ||||||
|  | 	.byte	0x1
 | ||||||
|  | 	.string	"zR" | ||||||
|  | 	.uleb128 0x1
 | ||||||
|  | 	.sleb128 -8 | ||||||
|  | 	.byte	0x10
 | ||||||
|  | 	.uleb128 0x1
 | ||||||
|  | 	.byte	0x3
 | ||||||
|  | 	.byte	0xc
 | ||||||
|  | 	.uleb128 0x7
 | ||||||
|  | 	.uleb128 0x8
 | ||||||
|  | 	.byte	0x90
 | ||||||
|  | 	.uleb128 0x1
 | ||||||
|  | 	.align 8
 | ||||||
|  | .LECIE1: | ||||||
|  | .LSFDE1: | ||||||
|  | 	.long	.LEFDE1-.LASFDE1 | ||||||
|  | .LASFDE1: | ||||||
|  | 	.long	.LASFDE1-.Lframe1 | ||||||
|  | 	.long	.LFB9 | ||||||
|  | 	.long	.LFE9-.LFB9 | ||||||
|  | 	.uleb128 0x0
 | ||||||
|  | 	.byte	0x4
 | ||||||
|  | 	.long	.LCFI0-.LFB9 | ||||||
|  | 	.byte	0xe
 | ||||||
|  | 	.uleb128 0x10
 | ||||||
|  | 	.byte	0x86
 | ||||||
|  | 	.uleb128 0x2
 | ||||||
|  | 	.byte	0x4
 | ||||||
|  | 	.long	.LCFI1-.LCFI0 | ||||||
|  | 	.byte	0xd
 | ||||||
|  | 	.uleb128 0x6
 | ||||||
|  | 	.align 8
 | ||||||
|  | .LEFDE1: | ||||||
|  | .LSFDE3: | ||||||
|  | 	.long	.LEFDE3-.LASFDE3 | ||||||
|  | .LASFDE3: | ||||||
|  | 	.long	.LASFDE3-.Lframe1 | ||||||
|  | 	.long	.LFB10 | ||||||
|  | 	.long	.LFE10-.LFB10 | ||||||
|  | 	.uleb128 0x0
 | ||||||
|  | 	.byte	0x4
 | ||||||
|  | 	.long	.LCFI3-.LFB10 | ||||||
|  | 	.byte	0xe
 | ||||||
|  | 	.uleb128 0x10
 | ||||||
|  | 	.byte	0x86
 | ||||||
|  | 	.uleb128 0x2
 | ||||||
|  | 	.byte	0x4
 | ||||||
|  | 	.long	.LCFI4-.LCFI3 | ||||||
|  | 	.byte	0xd
 | ||||||
|  | 	.uleb128 0x6
 | ||||||
|  | 	.align 8
 | ||||||
|  | .LEFDE3: | ||||||
|  | 	.ident	"GCC: (GNU) 4.2.1 20070719 " | ||||||
							
								
								
									
										236
									
								
								rtl/openbsd/x86_64/gprt0.as
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										236
									
								
								rtl/openbsd/x86_64/gprt0.as
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,236 @@ | |||||||
|  | 	.file	"crt0.c" | ||||||
|  | 	.globl	__progname | ||||||
|  | 	.section	.rodata | ||||||
|  | .LC0: | ||||||
|  | 	.string	"" | ||||||
|  | 	.data | ||||||
|  | 	.align 8 | ||||||
|  | 	.type	__progname, @object | ||||||
|  | 	.size	__progname, 8 | ||||||
|  | __progname: | ||||||
|  | 	.quad	.LC0 | ||||||
|  | #APP | ||||||
|  | 	 .text				 | ||||||
|  | 	.align	8			 | ||||||
|  | 	.globl	__start			 | ||||||
|  | 	.globl	_start			 | ||||||
|  | _start:					 | ||||||
|  | __start:				 | ||||||
|  | 	movq	%rbx,%r9		 | ||||||
|  | 	movq	%rcx,%r8		 | ||||||
|  | 	movq	%rdx,%rcx		 | ||||||
|  | 	movq	(%rsp),%rdi		 | ||||||
|  | 	leaq	16(%rsp,%rdi,8),%rdx	 | ||||||
|  | 	leaq	8(%rsp),%rsi		 | ||||||
|  | 	subq	$8,%rsp			 | ||||||
|  | 	andq	$~15,%rsp		 | ||||||
|  | 	addq	$8,%rsp			 | ||||||
|  | 	jmp	___start		 | ||||||
|  | 
 | ||||||
|  | #NO_APP | ||||||
|  | 	.text | ||||||
|  | 	.globl	___start | ||||||
|  | 	.type	___start, @function | ||||||
|  | ___start: | ||||||
|  | .LFB9: | ||||||
|  | 	pushq	%rbp | ||||||
|  | .LCFI0: | ||||||
|  | 	movq	%rsp, %rbp | ||||||
|  | .LCFI1: | ||||||
|  | 	subq	$64, %rsp | ||||||
|  | .LCFI2: | ||||||
|  | 	movl	%edi, -20(%rbp) | ||||||
|  | 	movq	%rsi, -32(%rbp) | ||||||
|  | 	movq	%rdx, -40(%rbp) | ||||||
|  | 	movq	%rcx, -48(%rbp) | ||||||
|  | 	movq	%r8, -56(%rbp) | ||||||
|  | 	movq	%r9, -64(%rbp) | ||||||
|  | 	movq	-40(%rbp), %rax | ||||||
|  | 	movq	%rax, environ(%rip) | ||||||
|  | 	movq    %rax,operatingsystem_parameter_envp | ||||||
|  | 	movq	-32(%rbp), %rax | ||||||
|  | 	movq	(%rax), %rax | ||||||
|  | 	movq	%rax, -8(%rbp) | ||||||
|  | 	cmpq	$0, -8(%rbp) | ||||||
|  | 	je	.L2 | ||||||
|  | 	movq	-8(%rbp), %rdi | ||||||
|  | 	movl	$47, %esi | ||||||
|  | 	call	_strrchr | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	testq	%rax, %rax | ||||||
|  | 	jne	.L4 | ||||||
|  | 	movq	-8(%rbp), %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | 	jmp	.L6 | ||||||
|  | .L4: | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	addq	$1, %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | .L6: | ||||||
|  | 	movq	$__progname_storage, -16(%rbp) | ||||||
|  | 	jmp	.L7 | ||||||
|  | .L8: | ||||||
|  | 	movq	__progname(%rip), %rcx | ||||||
|  | 	movzbl	(%rcx), %edx | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	movb	%dl, (%rax) | ||||||
|  | 	addq	$1, -16(%rbp) | ||||||
|  | 	leaq	1(%rcx), %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | .L7: | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	movzbl	(%rax), %eax | ||||||
|  | 	testb	%al, %al | ||||||
|  | 	je	.L9 | ||||||
|  | 	movl	$__progname_storage+255, %eax | ||||||
|  | 	cmpq	%rax, -16(%rbp) | ||||||
|  | 	jb	.L8 | ||||||
|  | .L9: | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	movb	$0, (%rax) | ||||||
|  | 	movq	$__progname_storage, __progname(%rip) | ||||||
|  | .L2: | ||||||
|  | 	movl	$_mcleanup, %edi | ||||||
|  | 	call	atexit | ||||||
|  | 	movl	$_etext, %eax | ||||||
|  | 	movq	%rax, %rsi | ||||||
|  | 	movl	$_eprol, %eax | ||||||
|  | 	movq	%rax, %rdi | ||||||
|  | 	call	monstartup | ||||||
|  | 	movl	$0, %eax | ||||||
|  | 	call	__init | ||||||
|  | 	movq	environ(%rip), %rdx | ||||||
|  | 	movq	-32(%rbp), %rsi | ||||||
|  | 	movl	-20(%rbp), %edi | ||||||
|  | 	movq    %rdi,operatingsystem_parameter_argc | ||||||
|  | 	movq    %rsi,operatingsystem_parameter_argv | ||||||
|  | 	movl	$0, %eax | ||||||
|  | 	call	main | ||||||
|  | 	# movl	%eax, %edi | ||||||
|  | 	# call	exit | ||||||
|  | 	jmp _haltproc | ||||||
|  |         .p2align 2,0x90 | ||||||
|  | 
 | ||||||
|  | .globl _haltproc | ||||||
|  | .type _haltproc,@function | ||||||
|  | 
 | ||||||
|  | _haltproc: | ||||||
|  |            movq $1,%rax | ||||||
|  |            movzwq operatingsystem_result,%rbx | ||||||
|  |            pushq   %rbx | ||||||
|  |            call .Lactualsyscall | ||||||
|  |            addq  $8,%rsp | ||||||
|  |            jmp   _haltproc | ||||||
|  | 
 | ||||||
|  | .Lactualsyscall: | ||||||
|  |          int $0x80 | ||||||
|  |          jb .LErrorcode | ||||||
|  |          xor %rbx,%rbx | ||||||
|  |          ret | ||||||
|  | .LErrorcode: | ||||||
|  |          movq  %rax,%rbx | ||||||
|  |          movq  $-1,%rax | ||||||
|  | .LFE9: | ||||||
|  | 	.size	___start, .-___start | ||||||
|  | 	.type	_strrchr, @function | ||||||
|  | _strrchr: | ||||||
|  | .LFB10: | ||||||
|  | 	pushq	%rbp | ||||||
|  | .LCFI3: | ||||||
|  | 	movq	%rsp, %rbp | ||||||
|  | .LCFI4: | ||||||
|  | 	movq	%rdi, -24(%rbp) | ||||||
|  | 	movb	%sil, -25(%rbp) | ||||||
|  | 	movq	$0, -8(%rbp) | ||||||
|  | .L13: | ||||||
|  | 	movq	-24(%rbp), %rdx | ||||||
|  | 	movzbl	(%rdx), %eax | ||||||
|  | 	cmpb	-25(%rbp), %al | ||||||
|  | 	jne	.L14 | ||||||
|  | 	movq	-24(%rbp), %rax | ||||||
|  | 	movq	%rax, -8(%rbp) | ||||||
|  | .L14: | ||||||
|  | 	movq	-24(%rbp), %rdx | ||||||
|  | 	movzbl	(%rdx), %eax | ||||||
|  | 	testb	%al, %al | ||||||
|  | 	jne	.L16 | ||||||
|  | 	movq	-8(%rbp), %rax | ||||||
|  | 	movq	%rax, -16(%rbp) | ||||||
|  | 	jmp	.L12 | ||||||
|  | .L16: | ||||||
|  | 	addq	$1, -24(%rbp) | ||||||
|  | 	jmp	.L13 | ||||||
|  | .L12: | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	leave | ||||||
|  | 	ret | ||||||
|  | .LFE10: | ||||||
|  | 	.size	_strrchr, .-_strrchr | ||||||
|  | #APP | ||||||
|  | 	  .text | ||||||
|  | 	_eprol: | ||||||
|  | #NO_APP | ||||||
|  | 	.comm	environ,8,8 | ||||||
|  | 	.comm	__progname_storage,256,32 | ||||||
|  |         .comm   operatingsystem_parameter_envp,8,8 | ||||||
|  |         .comm   operatingsystem_parameter_argc,8,8 | ||||||
|  |         .comm   operatingsystem_parameter_argv,8,8 | ||||||
|  | 	.section	.eh_frame,"a",@progbits | ||||||
|  | .Lframe1: | ||||||
|  | 	.long	.LECIE1-.LSCIE1 | ||||||
|  | .LSCIE1: | ||||||
|  | 	.long	0x0 | ||||||
|  | 	.byte	0x1 | ||||||
|  | 	.string	"zR" | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.sleb128 -8 | ||||||
|  | 	.byte	0x10 | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.byte	0x3 | ||||||
|  | 	.byte	0xc | ||||||
|  | 	.uleb128 0x7 | ||||||
|  | 	.uleb128 0x8 | ||||||
|  | 	.byte	0x90 | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.align 8 | ||||||
|  | .LECIE1: | ||||||
|  | .LSFDE1: | ||||||
|  | 	.long	.LEFDE1-.LASFDE1 | ||||||
|  | .LASFDE1: | ||||||
|  | 	.long	.LASFDE1-.Lframe1 | ||||||
|  | 	.long	.LFB9 | ||||||
|  | 	.long	.LFE9-.LFB9 | ||||||
|  | 	.uleb128 0x0 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI0-.LFB9 | ||||||
|  | 	.byte	0xe | ||||||
|  | 	.uleb128 0x10 | ||||||
|  | 	.byte	0x86 | ||||||
|  | 	.uleb128 0x2 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI1-.LCFI0 | ||||||
|  | 	.byte	0xd | ||||||
|  | 	.uleb128 0x6 | ||||||
|  | 	.align 8 | ||||||
|  | .LEFDE1: | ||||||
|  | .LSFDE3: | ||||||
|  | 	.long	.LEFDE3-.LASFDE3 | ||||||
|  | .LASFDE3: | ||||||
|  | 	.long	.LASFDE3-.Lframe1 | ||||||
|  | 	.long	.LFB10 | ||||||
|  | 	.long	.LFE10-.LFB10 | ||||||
|  | 	.uleb128 0x0 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI3-.LFB10 | ||||||
|  | 	.byte	0xe | ||||||
|  | 	.uleb128 0x10 | ||||||
|  | 	.byte	0x86 | ||||||
|  | 	.uleb128 0x2 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI4-.LCFI3 | ||||||
|  | 	.byte	0xd | ||||||
|  | 	.uleb128 0x6 | ||||||
|  | 	.align 8 | ||||||
|  | .LEFDE3: | ||||||
|  | 	.ident	"GCC: (GNU) 4.2.1 20070719 " | ||||||
							
								
								
									
										236
									
								
								rtl/openbsd/x86_64/prt0.as
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										236
									
								
								rtl/openbsd/x86_64/prt0.as
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,236 @@ | |||||||
|  | 	.file	"crt0.c" | ||||||
|  | 	.globl	__progname | ||||||
|  | 	.section	.rodata | ||||||
|  | .LC0: | ||||||
|  | 	.string	"" | ||||||
|  | 	.data | ||||||
|  | 	.align 8 | ||||||
|  | 	.type	__progname, @object | ||||||
|  | 	.size	__progname, 8 | ||||||
|  | __progname: | ||||||
|  | 	.quad	.LC0 | ||||||
|  | #APP | ||||||
|  | 	 .text				 | ||||||
|  | 	.align	8			 | ||||||
|  | 	.globl	__start			 | ||||||
|  | 	.globl	_start			 | ||||||
|  | _start:					 | ||||||
|  | __start:				 | ||||||
|  | 	movq	%rbx,%r9		 | ||||||
|  | 	movq	%rcx,%r8		 | ||||||
|  | 	movq	%rdx,%rcx		 | ||||||
|  | 	movq	(%rsp),%rdi		 | ||||||
|  | 	leaq	16(%rsp,%rdi,8),%rdx	 | ||||||
|  | 	leaq	8(%rsp),%rsi		 | ||||||
|  | 	subq	$8,%rsp			 | ||||||
|  | 	andq	$~15,%rsp		 | ||||||
|  | 	addq	$8,%rsp			 | ||||||
|  | 	jmp	___start		 | ||||||
|  | 
 | ||||||
|  | #NO_APP | ||||||
|  | 	.text | ||||||
|  | 	.globl	___start | ||||||
|  | 	.type	___start, @function | ||||||
|  | ___start: | ||||||
|  | .LFB9: | ||||||
|  | 	pushq	%rbp | ||||||
|  | .LCFI0: | ||||||
|  | 	movq	%rsp, %rbp | ||||||
|  | .LCFI1: | ||||||
|  | 	subq	$64, %rsp | ||||||
|  | .LCFI2: | ||||||
|  | 	movl	%edi, -20(%rbp) | ||||||
|  | 	movq	%rsi, -32(%rbp) | ||||||
|  | 	movq	%rdx, -40(%rbp) | ||||||
|  | 	movq	%rcx, -48(%rbp) | ||||||
|  | 	movq	%r8, -56(%rbp) | ||||||
|  | 	movq	%r9, -64(%rbp) | ||||||
|  | 	movq	-40(%rbp), %rax | ||||||
|  | 	movq	%rax, environ(%rip) | ||||||
|  | 	movq    %rax,operatingsystem_parameter_envp | ||||||
|  | 	movq	-32(%rbp), %rax | ||||||
|  | 	movq	(%rax), %rax | ||||||
|  | 	movq	%rax, -8(%rbp) | ||||||
|  | 	cmpq	$0, -8(%rbp) | ||||||
|  | 	je	.L2 | ||||||
|  | 	movq	-8(%rbp), %rdi | ||||||
|  | 	movl	$47, %esi | ||||||
|  | 	call	_strrchr | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	testq	%rax, %rax | ||||||
|  | 	jne	.L4 | ||||||
|  | 	movq	-8(%rbp), %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | 	jmp	.L6 | ||||||
|  | .L4: | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	addq	$1, %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | .L6: | ||||||
|  | 	movq	$__progname_storage, -16(%rbp) | ||||||
|  | 	jmp	.L7 | ||||||
|  | .L8: | ||||||
|  | 	movq	__progname(%rip), %rcx | ||||||
|  | 	movzbl	(%rcx), %edx | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	movb	%dl, (%rax) | ||||||
|  | 	addq	$1, -16(%rbp) | ||||||
|  | 	leaq	1(%rcx), %rax | ||||||
|  | 	movq	%rax, __progname(%rip) | ||||||
|  | .L7: | ||||||
|  | 	movq	__progname(%rip), %rax | ||||||
|  | 	movzbl	(%rax), %eax | ||||||
|  | 	testb	%al, %al | ||||||
|  | 	je	.L9 | ||||||
|  | 	movl	$__progname_storage+255, %eax | ||||||
|  | 	cmpq	%rax, -16(%rbp) | ||||||
|  | 	jb	.L8 | ||||||
|  | .L9: | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	movb	$0, (%rax) | ||||||
|  | 	movq	$__progname_storage, __progname(%rip) | ||||||
|  | .L2: | ||||||
|  | 	# movl	$_mcleanup, %edi | ||||||
|  | 	# call	atexit | ||||||
|  | 	# movl	$_etext, %eax | ||||||
|  | 	# movq	%rax, %rsi | ||||||
|  | 	# movl	$_eprol, %eax | ||||||
|  | 	# movq	%rax, %rdi | ||||||
|  | 	# call	monstartup | ||||||
|  | 	# movl	$0, %eax | ||||||
|  | 	# call	__init | ||||||
|  | 	movq	environ(%rip), %rdx | ||||||
|  | 	movq	-32(%rbp), %rsi | ||||||
|  | 	movl	-20(%rbp), %edi | ||||||
|  | 	movq    %rdi,operatingsystem_parameter_argc | ||||||
|  | 	movq    %rsi,operatingsystem_parameter_argv | ||||||
|  | 	movl	$0, %eax | ||||||
|  | 	call	main | ||||||
|  | 	# movl	%eax, %edi | ||||||
|  | 	# call	exit | ||||||
|  | 	jmp _haltproc | ||||||
|  |         .p2align 2,0x90 | ||||||
|  | 
 | ||||||
|  | .globl _haltproc | ||||||
|  | .type _haltproc,@function | ||||||
|  | 
 | ||||||
|  | _haltproc: | ||||||
|  |            movq $1,%rax | ||||||
|  |            movzwq operatingsystem_result,%rbx | ||||||
|  |            pushq   %rbx | ||||||
|  |            call .Lactualsyscall | ||||||
|  |            addq  $8,%rsp | ||||||
|  |            jmp   _haltproc | ||||||
|  | 
 | ||||||
|  | .Lactualsyscall: | ||||||
|  |          int $0x80 | ||||||
|  |          jb .LErrorcode | ||||||
|  |          xor %rbx,%rbx | ||||||
|  |          ret | ||||||
|  | .LErrorcode: | ||||||
|  |          movq  %rax,%rbx | ||||||
|  |          movq  $-1,%rax | ||||||
|  | .LFE9: | ||||||
|  | 	.size	___start, .-___start | ||||||
|  | 	.type	_strrchr, @function | ||||||
|  | _strrchr: | ||||||
|  | .LFB10: | ||||||
|  | 	pushq	%rbp | ||||||
|  | .LCFI3: | ||||||
|  | 	movq	%rsp, %rbp | ||||||
|  | .LCFI4: | ||||||
|  | 	movq	%rdi, -24(%rbp) | ||||||
|  | 	movb	%sil, -25(%rbp) | ||||||
|  | 	movq	$0, -8(%rbp) | ||||||
|  | .L13: | ||||||
|  | 	movq	-24(%rbp), %rdx | ||||||
|  | 	movzbl	(%rdx), %eax | ||||||
|  | 	cmpb	-25(%rbp), %al | ||||||
|  | 	jne	.L14 | ||||||
|  | 	movq	-24(%rbp), %rax | ||||||
|  | 	movq	%rax, -8(%rbp) | ||||||
|  | .L14: | ||||||
|  | 	movq	-24(%rbp), %rdx | ||||||
|  | 	movzbl	(%rdx), %eax | ||||||
|  | 	testb	%al, %al | ||||||
|  | 	jne	.L16 | ||||||
|  | 	movq	-8(%rbp), %rax | ||||||
|  | 	movq	%rax, -16(%rbp) | ||||||
|  | 	jmp	.L12 | ||||||
|  | .L16: | ||||||
|  | 	addq	$1, -24(%rbp) | ||||||
|  | 	jmp	.L13 | ||||||
|  | .L12: | ||||||
|  | 	movq	-16(%rbp), %rax | ||||||
|  | 	leave | ||||||
|  | 	ret | ||||||
|  | .LFE10: | ||||||
|  | 	.size	_strrchr, .-_strrchr | ||||||
|  | #APP | ||||||
|  | 	  .text | ||||||
|  | 	_eprol: | ||||||
|  | #NO_APP | ||||||
|  | 	.comm	environ,8,8 | ||||||
|  | 	.comm	__progname_storage,256,32 | ||||||
|  |         .comm   operatingsystem_parameter_envp,8,8 | ||||||
|  |         .comm   operatingsystem_parameter_argc,8,8 | ||||||
|  |         .comm   operatingsystem_parameter_argv,8,8 | ||||||
|  | 	.section	.eh_frame,"a",@progbits | ||||||
|  | .Lframe1: | ||||||
|  | 	.long	.LECIE1-.LSCIE1 | ||||||
|  | .LSCIE1: | ||||||
|  | 	.long	0x0 | ||||||
|  | 	.byte	0x1 | ||||||
|  | 	.string	"zR" | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.sleb128 -8 | ||||||
|  | 	.byte	0x10 | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.byte	0x3 | ||||||
|  | 	.byte	0xc | ||||||
|  | 	.uleb128 0x7 | ||||||
|  | 	.uleb128 0x8 | ||||||
|  | 	.byte	0x90 | ||||||
|  | 	.uleb128 0x1 | ||||||
|  | 	.align 8 | ||||||
|  | .LECIE1: | ||||||
|  | .LSFDE1: | ||||||
|  | 	.long	.LEFDE1-.LASFDE1 | ||||||
|  | .LASFDE1: | ||||||
|  | 	.long	.LASFDE1-.Lframe1 | ||||||
|  | 	.long	.LFB9 | ||||||
|  | 	.long	.LFE9-.LFB9 | ||||||
|  | 	.uleb128 0x0 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI0-.LFB9 | ||||||
|  | 	.byte	0xe | ||||||
|  | 	.uleb128 0x10 | ||||||
|  | 	.byte	0x86 | ||||||
|  | 	.uleb128 0x2 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI1-.LCFI0 | ||||||
|  | 	.byte	0xd | ||||||
|  | 	.uleb128 0x6 | ||||||
|  | 	.align 8 | ||||||
|  | .LEFDE1: | ||||||
|  | .LSFDE3: | ||||||
|  | 	.long	.LEFDE3-.LASFDE3 | ||||||
|  | .LASFDE3: | ||||||
|  | 	.long	.LASFDE3-.Lframe1 | ||||||
|  | 	.long	.LFB10 | ||||||
|  | 	.long	.LFE10-.LFB10 | ||||||
|  | 	.uleb128 0x0 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI3-.LFB10 | ||||||
|  | 	.byte	0xe | ||||||
|  | 	.uleb128 0x10 | ||||||
|  | 	.byte	0x86 | ||||||
|  | 	.uleb128 0x2 | ||||||
|  | 	.byte	0x4 | ||||||
|  | 	.long	.LCFI4-.LCFI3 | ||||||
|  | 	.byte	0xd | ||||||
|  | 	.uleb128 0x6 | ||||||
|  | 	.align 8 | ||||||
|  | .LEFDE3: | ||||||
|  | 	.ident	"GCC: (GNU) 4.2.1 20070719 " | ||||||
							
								
								
									
										100
									
								
								rtl/openbsd/x86_64/sighnd.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								rtl/openbsd/x86_64/sighnd.inc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,100 @@ | |||||||
|  | { | ||||||
|  |    This file is part of the Free Pascal run time library. | ||||||
|  |    (c) 2000-2003 by Marco van de Voort | ||||||
|  |    member of the Free Pascal development team. | ||||||
|  | 
 | ||||||
|  |    See the file COPYING.FPC, included in this distribution, | ||||||
|  |    for details about the copyright. | ||||||
|  | 
 | ||||||
|  |    Signalhandler for FreeBSD/i386 | ||||||
|  | 
 | ||||||
|  |    This program is distributed in the hope that it will be useful, | ||||||
|  |    but WITHOUT ANY WARRANTY;without even the implied warranty of | ||||||
|  |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | CONST FPU_ALL=$7F; | ||||||
|  | 
 | ||||||
|  | {$ifdef cpui386} | ||||||
|  | function getfpustate(sininfo:psiginfo):longint; {inline;} | ||||||
|  | begin | ||||||
|  |   if ptruint(sininfo)> high(word) then | ||||||
|  |     getfpustate:=sininfo^.si_code | ||||||
|  |   else | ||||||
|  |     getfpustate:=word(ptruint(sininfo)); | ||||||
|  | end; | ||||||
|  | 
 | ||||||
|  | function getaltfpustate(sigcontext:psigcontextrec):longint; {inline;} | ||||||
|  | begin | ||||||
|  |   if assigned(sigcontext) then | ||||||
|  |     getaltfpustate:=sigcontext^.sc_fpustate^.en_sw  | ||||||
|  |   else | ||||||
|  |     getaltfpustate:=0; | ||||||
|  | end; | ||||||
|  | {$endif} | ||||||
|  | 
 | ||||||
|  | procedure SignalToRunerror(Sig: longint;sininfo:psiginfo; SigContext: PSigContextRec); public name '_FPC_DEFAULTSIGHANDLER'; cdecl; | ||||||
|  | 
 | ||||||
|  | var | ||||||
|  |   res,fpustate : word; | ||||||
|  | begin | ||||||
|  |   res:=0; | ||||||
|  | {$ifdef BSD} | ||||||
|  | {$ifdef cpui386} | ||||||
|  |   fpustate:=0; | ||||||
|  |   asm | ||||||
|  |     fnstsw fpustate | ||||||
|  |   end; | ||||||
|  | {$endif cpui386} | ||||||
|  | {$endif BSD} | ||||||
|  |   case sig of | ||||||
|  |     SIGFPE : | ||||||
|  |           begin | ||||||
|  |     { this is not allways necessary but I don't know yet | ||||||
|  |       how to tell if it is or not PM } | ||||||
|  |           res:=200; | ||||||
|  | {$ifdef cpui386} | ||||||
|  |           fpustate:=GetaltFPUState(sigcontext); | ||||||
|  | {$else} | ||||||
|  |           fpustate:=0; | ||||||
|  | {$endif} | ||||||
|  |           if (FpuState and FPU_All) <> 0 then | ||||||
|  |             begin | ||||||
|  |               { first check the more precise options } | ||||||
|  |               if (FpuState and FPU_DivisionByZero)<>0 then | ||||||
|  |                 res:=200 | ||||||
|  |               else if (FpuState and FPU_Overflow)<>0 then | ||||||
|  |                 res:=205 | ||||||
|  |               else if (FpuState and FPU_Underflow)<>0 then | ||||||
|  |                 res:=206 | ||||||
|  |               else if (FpuState and FPU_Denormal)<>0 then | ||||||
|  |                 res:=216 | ||||||
|  |               else if (FpuState and (FPU_StackOverflow or FPU_StackUnderflow))<>0 then | ||||||
|  |                 res:=207 | ||||||
|  |               else if (FpuState and FPU_Invalid)<>0 then | ||||||
|  |                 res:=216 | ||||||
|  |               else | ||||||
|  |                 res:=207;  {'Coprocessor Error'} | ||||||
|  |             end; | ||||||
|  |           SysResetFPU; | ||||||
|  |         end; | ||||||
|  |     SIGILL, | ||||||
|  |     SIGBUS, | ||||||
|  |     SIGSEGV : | ||||||
|  |         res:=216; | ||||||
|  |     SIGINT: | ||||||
|  |         res:=217; | ||||||
|  |     SIGQUIT: | ||||||
|  |         res:=233; | ||||||
|  |   end; | ||||||
|  |   reenable_signal(sig); | ||||||
|  | { give runtime error at the position where the signal was raised } | ||||||
|  |   if res<>0 then | ||||||
|  |    begin | ||||||
|  | {$ifdef cpux86_64} | ||||||
|  |       HandleErrorAddrFrame(res,pointer(SigContext^.sc_rip),pointer(SigContext^.sc_rbp)); | ||||||
|  | {$endif} | ||||||
|  |    end; | ||||||
|  | end; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 pierre
						pierre