Browse Source

* some PIC fixes in OpenBSD x86_64 cprt0.as
* use the correct section type for .eh_frame

git-svn-id: trunk@41669 -

nickysn 6 years ago
parent
commit
b05b43fe35
1 changed files with 8 additions and 6 deletions
  1. 8 6
      rtl/openbsd/x86_64/cprt0.as

+ 8 - 6
rtl/openbsd/x86_64/cprt0.as

@@ -76,7 +76,8 @@ ___start:
 	addq	$1, %rax
 	addq	$1, %rax
 	movq	%rax, __progname(%rip)
 	movq	%rax, __progname(%rip)
 .L6:
 .L6:
-	movq	$__progname_storage, -16(%rbp)
+	leaq	__progname_storage(%rip), %rax
+	movq	%rax, -16(%rbp)
 	jmp	.L7
 	jmp	.L7
 .L8:
 .L8:
 	movq	__progname(%rip), %rcx
 	movq	__progname(%rip), %rcx
@@ -91,13 +92,14 @@ ___start:
 	movzbl	(%rax), %eax
 	movzbl	(%rax), %eax
 	testb	%al, %al
 	testb	%al, %al
 	je	.L9
 	je	.L9
-	movq	$__progname_storage+255, %rax
+	leaq	__progname_storage+255(%rip), %rax
 	cmpq	%rax, -16(%rbp)
 	cmpq	%rax, -16(%rbp)
 	jb	.L8
 	jb	.L8
 .L9:
 .L9:
+	leaq	__progname_storage(%rip), %rax
+	movq	%rax, __progname(%rip)
 	movq	-16(%rbp), %rax
 	movq	-16(%rbp), %rax
 	movb	$0, (%rax)
 	movb	$0, (%rax)
-	movq	$__progname_storage, __progname(%rip)
 .L2:
 .L2:
 	movl	$_mcleanup, %edi
 	movl	$_mcleanup, %edi
 	call	atexit
 	call	atexit
@@ -184,7 +186,7 @@ _strrchr:
         .comm   operatingsystem_parameter_envp,8,8
         .comm   operatingsystem_parameter_envp,8,8
         .comm   operatingsystem_parameter_argc,8,8
         .comm   operatingsystem_parameter_argc,8,8
         .comm   operatingsystem_parameter_argv,8,8
         .comm   operatingsystem_parameter_argv,8,8
-	.section	.eh_frame,"a",@progbits
+	.section	.eh_frame,"a",@unwind
 .Lframe1:
 .Lframe1:
 	.long	.LECIE1-.LSCIE1
 	.long	.LECIE1-.LSCIE1
 .LSCIE1:
 .LSCIE1:
@@ -207,7 +209,7 @@ _strrchr:
 	.long	.LEFDE1-.LASFDE1
 	.long	.LEFDE1-.LASFDE1
 .LASFDE1:
 .LASFDE1:
 	.long	.LASFDE1-.Lframe1
 	.long	.LASFDE1-.Lframe1
-	.long	.LFB9
+	.long	.LFB9-.
 	.long	.LFE9-.LFB9
 	.long	.LFE9-.LFB9
 	.uleb128 0x0
 	.uleb128 0x0
 	.byte	0x4
 	.byte	0x4
@@ -226,7 +228,7 @@ _strrchr:
 	.long	.LEFDE3-.LASFDE3
 	.long	.LEFDE3-.LASFDE3
 .LASFDE3:
 .LASFDE3:
 	.long	.LASFDE3-.Lframe1
 	.long	.LASFDE3-.Lframe1
-	.long	.LFB10
+	.long	.LFB10-.
 	.long	.LFE10-.LFB10
 	.long	.LFE10-.LFB10
 	.uleb128 0x0
 	.uleb128 0x0
 	.byte	0x4
 	.byte	0x4