MIPS Creator CI20 patches (again)
Paul Boddie
paul at boddie.org.uk
Tue Jan 9 01:02:58 CET 2018
On Tuesday 9. January 2018 00.46.53 Adam Lackorzynski wrote:
> On Mon Jan 08, 2018 at 01:14:09 +0100, Paul Boddie wrote:
> >
> > I'm aiming to follow up with the binutils maintainers about this, but I
> > just wondered if any of this sounded problematic or familiar.
>
> No, not familiar. It works with the older tool set, i.e. would be
> interesting whether the more recent ones are not ok here or the code
> needs to change.
I posted another message to the Debian bug I filed, but what I did discover
was that if I wrap the core of the assembly language routine within a C-level
function, the toolchain doesn't have a problem with the function, even if I
set the visibility to internal:
void __attribute__((visibility("internal"))) thread2(void)
{
asm (
".set push; .set noreorder;"
L4UTIL_THREAD_START_SETUP_GP
"la $t9, thread2_worker_function\n"
" jal $t9 \n"
" nop \n"
".set pop"
);
}
So, I am assuming that the compiler gets confused by the freestanding assembly
language definition of the function, and the object goes missing in some way
that then leads to the error. Of course, the above introduces other operations
that are superfluous, but perhaps not harmful, due to the general boilerplate
included in C-level functions.
Anyway, I'll see if I get any response from the other discussion.
Thanks for responding!
Paul
More information about the l4-hackers
mailing list