On 05/28/2018 06:32 AM, Sebastian Huber wrote:
I guess, that the resolution of the weak reference to the undefined symbol __deregister_frame_info somehow sets __deregister_frame_info to the absolute address 0 which is illegal in the following "call __deregister_frame_info"? Is this construct with weak references and a -mcmodel=medany supported on RISC-V at all?

Yes.  It works for me.  Given a simple testcase

extern void *__deregister_frame_info (const void *)
         __attribute__ ((weak));
void * foo;
int
main (void)
{
  if (__deregister_frame_info)
    __deregister_frame_info (foo);
  return 0;
}

and compiling with -mcmodel=medany -O -Ttext=0x80000000, I get

80000158:       80000097                auipc   ra,0x80000
8000015c: ea8080e7 jalr -344(ra) # 0 <_start-0x80000000>

for the weak call.  It isn't clear what you are doing differently.

Jim

Reply via email to