kernel patch needed for wine?

Sam Fourman Jr. sfourman at gmail.com
Wed Jun 30 21:22:09 UTC 2010


On Wed, Jun 30, 2010 at 11:26 AM, Garrett Cooper <yanefbsd at gmail.com> wrote:
> On Wed, Jun 30, 2010 at 8:43 AM, Sam Fourman Jr. <sfourman at gmail.com> wrote:
>>> Which patch ? icebp generates the SIGTRAP on latest 8-stable, verified
>>> by the following trivival assembler program:
>>>        .text
>>>        .globl  main
>>> main:
>>>        .byte   0xf1
>>>        xorl    %edi,%edi
>>>        call    exit
>>>
>>

Here is the C program that the linux people used as a test case.

***************************************************************
#include <stdio.h>
#include <signal.h>



void trap_handler(int sig)
{
	printf("trapped\n");
}


/*
 * icebp
 * ret
 */
char icebp_func[] = "\xf1\xc3";
typedef void (*icebp_call)(void);

int main(int argc, char **argv)
{
	icebp_call func = (icebp_call)icebp_func;

	signal(SIGTRAP, trap_handler);

	func();

	return 0;
}

***************************************************************

My question is why doe the above code not print trapped on amd64?

FreeBSD 8.1 i386 this code prints "Trapped" as intended
FreeBSD 8.1 amd64 this code prints "Segmentation fault: 11"
FreeBSD 8.1 amd64 chrooted to 32bit prints "Segmentation fault"

I did verify that from Linux amd64 this works and prints "Trapped"
uname -a
Linux workstation 2.6.32-23-generic #37-Ubuntu SMP Fri Jun 11 08:03:28
UTC 2010 x86_64 GNU/Linux


Thank you much for everyones help


Sam Fourman Jr.
Fourman Networks
http://www.fourmannetworks.com


More information about the freebsd-hackers mailing list