public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* 2.6.4-mm1 entry.S errors x86_64
@ 2004-03-12  1:42 Sid Boyce
  0 siblings, 0 replies; 3+ messages in thread
From: Sid Boyce @ 2004-03-12  1:42 UTC (permalink / raw)
  To: linux-kernel

Building x86_64 gives the following error:-
  AS      arch/x86_64/kernel/entry.o
arch/x86_64/kernel/entry.S: Assembler messages:
arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without 
previous .cfi_startproc
arch/x86_64/kernel/entry.S:873: Warning: rest of line ignored; first 
ignored character is `9'
arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without 
previous .cfi_startproc
arch/x86_64/kernel/entry.S:873: Error: no such instruction: 
`rdi,8*8-(9*8+0)'
arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without 
previous .cfi_startproc
arch/x86_64/kernel/entry.S:873: Error: no such instruction: 
`rsi,7*8-(9*8+0)'
arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without 
previous .cfi_startproc
arch/x86_64/kernel/entry.S:873: Error: no such instruction: 
`rdx,6*8-(9*8+0)'
arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without 
previous .cfi_startproc
arch/x86_64/kernel/entry.S:873: Error: no such instruction: 
`rcx,5*8-(9*8+0)'
arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without 
previous .cfi_startproc
arch/x86_64/kernel/entry.S:873: Error: no such instruction: 
`rax,4*8-(9*8+0)'
arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without 
previous .cfi_startproc
arch/x86_64/kernel/entry.S:873: Error: no such instruction: `r8,3*8-(9*8+0)'
arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without 
previous .cfi_startproc
etc.
Regards
Sid.

-- 
Sid Boyce .... Hamradio G3VBV and keen Flyer
Linux Only Shop.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: 2.6.4-mm1 entry.S errors x86_64
  2004-03-18 13:39 ` 2.6.4-mm1 entry.S errors x86_64 Andi Kleen
@ 2004-03-12  2:47   ` Sid Boyce
  0 siblings, 0 replies; 3+ messages in thread
From: Sid Boyce @ 2004-03-12  2:47 UTC (permalink / raw)
  To: Andi Kleen; +Cc: akpm, linux-kernel

Andi Kleen wrote:

>Sid Boyce <sboyce@blueyonder.co.uk> writes:
>  
>
>>previous .cfi_startproc
>>arch/x86_64/kernel/entry.S:873: Error: no such instruction: `r8,3*8-(9*8+0)'
>>arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without
>>previous .cfi_startproc
>>etc.
>>    
>>
>
>This patch should fix it. It has a few unrelated changes, but 
>I'm too lazy to untangle them now.
>
>Or alternatively disable CONFIG_DEBUG_INFO
>
>-Andi
>
>Clean up stack switching handling for IST exceptions.
>
>Pass right pt_regs to die_chain functions.
>
>Add missing cfi mnemonics to fix CONFIG_DEBUG_INFO compilation.
>
>diff -X ../KDIFX -burpN linux-2.6.4-x86_64-1/arch/x86_64/kernel/entry.S linux-2.6.4-amd64/arch/x86_64/kernel/entry.S
>--- linux-2.6.4-x86_64-1/arch/x86_64/kernel/entry.S	2004-03-18 14:32:08.000000000 +0100
>+++ linux-2.6.4-amd64/arch/x86_64/kernel/entry.S	2004-03-18 14:27:29.000000000 +0100
>@@ -803,9 +803,6 @@ ENTRY(debug)
> 	pushq $0
> 	CFI_ADJUST_CFA_OFFSET 8		
> 	paranoidentry do_debug
>-paranoid_stack_switch:	
>-	testq %rax,%rax
>-	jz paranoid_exit
> 	/* switch back to process stack to restore the state ptrace touched */
> 	movq %rax,%rsp	
> 	jmp paranoid_exit
>@@ -870,8 +867,11 @@ ENTRY(reserved)
> 
> 	/* runs on exception stack */
> ENTRY(double_fault)
>+	CFI_STARTPROC
> 	paranoidentry do_double_fault
>-	jmp paranoid_stack_switch
>+	movq %rax,%rsp
>+	jmp paranoid_exit
>+	CFI_ENDPROC
> 
> ENTRY(invalid_TSS)
> 	errorentry do_invalid_TSS
>@@ -881,8 +881,11 @@ ENTRY(segment_not_present)
> 
> 	/* runs on exception stack */
> ENTRY(stack_segment)
>+	CFI_STARTPROC
> 	paranoidentry do_stack_segment
>-	jmp paranoid_stack_switch
>+	movq %rax,%rsp
>+	jmp paranoid_exit
>+	CFI_ENDPROC
> 
> ENTRY(general_protection)
> 	errorentry do_general_protection
>diff -X ../KDIFX -burpN linux-2.6.4-x86_64-1/arch/x86_64/kernel/traps.c linux-2.6.4-amd64/arch/x86_64/kernel/traps.c
>--- linux-2.6.4-x86_64-1/arch/x86_64/kernel/traps.c	2004-03-18 14:32:08.000000000 +0100
>+++ linux-2.6.4-amd64/arch/x86_64/kernel/traps.c	2004-03-18 01:00:40.000000000 +0100
>@@ -477,15 +477,17 @@ DO_ERROR_INFO(17, SIGBUS, "alignment che
> DO_ERROR(18, SIGSEGV, "reserved", reserved)
> 
> #define DO_ERROR_STACK(trapnr, signr, str, name) \
>-asmlinkage unsigned long do_##name(struct pt_regs * regs, long error_code) \
>+asmlinkage void *do_##name(struct pt_regs * regs, long error_code) \
> { \
> 	struct pt_regs *pr = ((struct pt_regs *)(current->thread.rsp0))-1; \
> 	if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) == NOTIFY_BAD) \
>-		return 0; \
>-	if (regs->cs & 3) \
>+		return regs; \
>+	if (regs->cs & 3) { \
> 		memcpy(pr, regs, sizeof(struct pt_regs)); \
>+		regs = pr; \
>+	} \
> 	do_trap(trapnr, signr, str, regs, error_code, NULL); \
>-	return (regs->cs & 3) ? (unsigned long)pr : 0;		\
>+	return regs;		\
> }
> 
> DO_ERROR_STACK(12, SIGBUS,  "stack segment", stack_segment)
>@@ -605,16 +607,18 @@ asmlinkage void default_do_nmi(struct pt
> }
> 
> /* runs on IST stack. */
>-asmlinkage unsigned long do_debug(struct pt_regs * regs, unsigned long error_code)
>+asmlinkage void *do_debug(struct pt_regs * regs, unsigned long error_code)
> {
>-	struct pt_regs *processregs;
>+	struct pt_regs *pr;
> 	unsigned long condition;
> 	struct task_struct *tsk = current;
> 	siginfo_t info;
> 
>-	processregs = (struct pt_regs *)(current->thread.rsp0)-1;
>-	if (regs->cs & 3)
>-		memcpy(processregs, regs, sizeof(struct pt_regs));
>+	pr = (struct pt_regs *)(current->thread.rsp0)-1;
>+	if (regs->cs & 3) {
>+		memcpy(pr, regs, sizeof(struct pt_regs));
>+		regs = pr;
>+	}	
> 
> #ifdef CONFIG_CHECKING
>        { 
>@@ -673,8 +677,7 @@ asmlinkage unsigned long do_debug(struct
> clear_dr7:
> 	asm volatile("movq %0,%%db7"::"r"(0UL));
> 	notify_die(DIE_DEBUG, "debug", regs, condition, 1, SIGTRAP);
>-out:
>-	return (regs->cs & 3) ? (unsigned long)processregs : 0;
>+	return regs;
> 
> clear_TF_reenable:
> 	printk("clear_tf_reenable\n");
>@@ -685,8 +688,7 @@ clear_TF:
> 	if (notify_die(DIE_DEBUG, "debug2", regs, condition, 1, SIGTRAP) 
> 	    != NOTIFY_BAD)
> 	regs->eflags &= ~TF_MASK;
>-	
>-	goto out;
>+	return regs;	
> }
> 
> /*
>
>
>  
>
Thanks, I shall give it a try.
Regards
Sid.

-- 
Sid Boyce .... Hamradio G3VBV and keen Flyer
Linux Only Shop.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: 2.6.4-mm1 entry.S errors x86_64
       [not found] <1yJYn-3Hl-21@gated-at.bofh.it>
@ 2004-03-18 13:39 ` Andi Kleen
  2004-03-12  2:47   ` Sid Boyce
  0 siblings, 1 reply; 3+ messages in thread
From: Andi Kleen @ 2004-03-18 13:39 UTC (permalink / raw)
  To: Sid Boyce; +Cc: akpm, linux-kernel

Sid Boyce <sboyce@blueyonder.co.uk> writes:
> previous .cfi_startproc
> arch/x86_64/kernel/entry.S:873: Error: no such instruction: `r8,3*8-(9*8+0)'
> arch/x86_64/kernel/entry.S:873: Error: CFI instruction used without
> previous .cfi_startproc
> etc.

This patch should fix it. It has a few unrelated changes, but 
I'm too lazy to untangle them now.

Or alternatively disable CONFIG_DEBUG_INFO

-Andi

Clean up stack switching handling for IST exceptions.

Pass right pt_regs to die_chain functions.

Add missing cfi mnemonics to fix CONFIG_DEBUG_INFO compilation.

diff -X ../KDIFX -burpN linux-2.6.4-x86_64-1/arch/x86_64/kernel/entry.S linux-2.6.4-amd64/arch/x86_64/kernel/entry.S
--- linux-2.6.4-x86_64-1/arch/x86_64/kernel/entry.S	2004-03-18 14:32:08.000000000 +0100
+++ linux-2.6.4-amd64/arch/x86_64/kernel/entry.S	2004-03-18 14:27:29.000000000 +0100
@@ -803,9 +803,6 @@ ENTRY(debug)
 	pushq $0
 	CFI_ADJUST_CFA_OFFSET 8		
 	paranoidentry do_debug
-paranoid_stack_switch:	
-	testq %rax,%rax
-	jz paranoid_exit
 	/* switch back to process stack to restore the state ptrace touched */
 	movq %rax,%rsp	
 	jmp paranoid_exit
@@ -870,8 +867,11 @@ ENTRY(reserved)
 
 	/* runs on exception stack */
 ENTRY(double_fault)
+	CFI_STARTPROC
 	paranoidentry do_double_fault
-	jmp paranoid_stack_switch
+	movq %rax,%rsp
+	jmp paranoid_exit
+	CFI_ENDPROC
 
 ENTRY(invalid_TSS)
 	errorentry do_invalid_TSS
@@ -881,8 +881,11 @@ ENTRY(segment_not_present)
 
 	/* runs on exception stack */
 ENTRY(stack_segment)
+	CFI_STARTPROC
 	paranoidentry do_stack_segment
-	jmp paranoid_stack_switch
+	movq %rax,%rsp
+	jmp paranoid_exit
+	CFI_ENDPROC
 
 ENTRY(general_protection)
 	errorentry do_general_protection
diff -X ../KDIFX -burpN linux-2.6.4-x86_64-1/arch/x86_64/kernel/traps.c linux-2.6.4-amd64/arch/x86_64/kernel/traps.c
--- linux-2.6.4-x86_64-1/arch/x86_64/kernel/traps.c	2004-03-18 14:32:08.000000000 +0100
+++ linux-2.6.4-amd64/arch/x86_64/kernel/traps.c	2004-03-18 01:00:40.000000000 +0100
@@ -477,15 +477,17 @@ DO_ERROR_INFO(17, SIGBUS, "alignment che
 DO_ERROR(18, SIGSEGV, "reserved", reserved)
 
 #define DO_ERROR_STACK(trapnr, signr, str, name) \
-asmlinkage unsigned long do_##name(struct pt_regs * regs, long error_code) \
+asmlinkage void *do_##name(struct pt_regs * regs, long error_code) \
 { \
 	struct pt_regs *pr = ((struct pt_regs *)(current->thread.rsp0))-1; \
 	if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) == NOTIFY_BAD) \
-		return 0; \
-	if (regs->cs & 3) \
+		return regs; \
+	if (regs->cs & 3) { \
 		memcpy(pr, regs, sizeof(struct pt_regs)); \
+		regs = pr; \
+	} \
 	do_trap(trapnr, signr, str, regs, error_code, NULL); \
-	return (regs->cs & 3) ? (unsigned long)pr : 0;		\
+	return regs;		\
 }
 
 DO_ERROR_STACK(12, SIGBUS,  "stack segment", stack_segment)
@@ -605,16 +607,18 @@ asmlinkage void default_do_nmi(struct pt
 }
 
 /* runs on IST stack. */
-asmlinkage unsigned long do_debug(struct pt_regs * regs, unsigned long error_code)
+asmlinkage void *do_debug(struct pt_regs * regs, unsigned long error_code)
 {
-	struct pt_regs *processregs;
+	struct pt_regs *pr;
 	unsigned long condition;
 	struct task_struct *tsk = current;
 	siginfo_t info;
 
-	processregs = (struct pt_regs *)(current->thread.rsp0)-1;
-	if (regs->cs & 3)
-		memcpy(processregs, regs, sizeof(struct pt_regs));
+	pr = (struct pt_regs *)(current->thread.rsp0)-1;
+	if (regs->cs & 3) {
+		memcpy(pr, regs, sizeof(struct pt_regs));
+		regs = pr;
+	}	
 
 #ifdef CONFIG_CHECKING
        { 
@@ -673,8 +677,7 @@ asmlinkage unsigned long do_debug(struct
 clear_dr7:
 	asm volatile("movq %0,%%db7"::"r"(0UL));
 	notify_die(DIE_DEBUG, "debug", regs, condition, 1, SIGTRAP);
-out:
-	return (regs->cs & 3) ? (unsigned long)processregs : 0;
+	return regs;
 
 clear_TF_reenable:
 	printk("clear_tf_reenable\n");
@@ -685,8 +688,7 @@ clear_TF:
 	if (notify_die(DIE_DEBUG, "debug2", regs, condition, 1, SIGTRAP) 
 	    != NOTIFY_BAD)
 	regs->eflags &= ~TF_MASK;
-	
-	goto out;
+	return regs;	
 }
 
 /*


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-03-12  2:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1yJYn-3Hl-21@gated-at.bofh.it>
2004-03-18 13:39 ` 2.6.4-mm1 entry.S errors x86_64 Andi Kleen
2004-03-12  2:47   ` Sid Boyce
2004-03-12  1:42 Sid Boyce

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox