Greetings,
I am trying to gain runtime info for use of Alien on a RiscV64 Linux system, but [A] I have barely used gdb in the last couple of decades and [B] have hardly used Squeak in a decade or so, and [C] never used Alien.
With that confession out of the way.. my proximate problem is trying to set a breakpoint in a thunk to capture where things are going into the weeds.
The attached file has the gritty details. I am trying Alien>>exampleCqsort
The Smalltalk setup code is copying a hand assembled byteVector into an Alien. I am catching the copy operation in gdb in IA32ABI.c: primAlianReplace to get the code address, then trying to set a breakpoint there -- which seems to fail. Get SIGILL (illegal instruction) when the PC gets to the start of the thunk.
So: [A] How do I find out if the thunk memory is properly Executable? [B] RiscV64 is little-endian. Are the bytes correctly ordered? [C] Is the math right for accessing the primEntryThunkAddress at thunkStart+0x28 ?
Any help appreciated.
Thanks a bunch, -KenD
PS: I like to feel the bits between my toes, but don't like getting them caught in my teeth! ;^)