RFR(S): 8022071 Some vm/jvmti tests fail because cannot attach to the Java virtual machine

Staffan Larsen staffan.larsen at oracle.com
Tue Aug 20 06:38:11 UTC 2013


Using inline assembly and parsing opcodes seems more brittle than using linker flags.

/Staffan

On 19 aug 2013, at 23:10, Dmitry Samersoff <Dmitry.Samersoff at oracle.com> wrote:

> Staffan,
> 
> It might be better to just use inline assembler to record start and end
> of the routine, as nobody guarantee that thread_end is not optimized out
> or some function is not inserted in between thread_func and thread_end.
> 
> Something like below should work:
> 
> First line of thread_func:
> 
> _asm(
>   jmp End_Of_Func_Label
> )
> 
> and, when necessary, read opcode at &thread_func (E9 or EB) and extract
> imm that comes afterward.
> 
> -Dmitry
> 
> 
> 
> On 2013-08-16 20:51, Staffan Larsen wrote:
>> This failure happens when compiling with the VS 2012 compiler. The attach code relies on the order of two methods in the compiled binary and VS 2012 changed that order. The solution used is the linker flag /ORDER [1] which allows us to specify the order in which methods are laid out in the binary image. Since the flag only operates on non-static methods, the methods have been made non-static and also changed name so that they will not clash with other methods.
>> 
>> webrev: http://cr.openjdk.java.net/~sla/8022071/webrev.01/
>> 
>> The change has been tested with both VS 2010 and VS 2012.
>> 
>> Thanks,
>> /Staffan
>> 
>> 
>> [1] http://msdn.microsoft.com/en-us/library/vstudio/00kh39zz.aspx
>> 
> 
> 
> -- 
> Dmitry Samersoff
> Oracle Java development team, Saint Petersburg, Russia
> * I would love to change the world, but they won't give me the sources.




More information about the build-dev mailing list