Re: MIPS Creator CI20 patches (again)

Paul Boddie <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Sorry to follow up on myself again...

On Thursday 21. December 2017 01.55.51 Paul Boddie wrote:
> On Wednesday 20. December 2017 16.52.45 Paul Boddie wrote:
> > However, another problem has emerged when trying to build L4Re. It
> > appears that something changed between r72 and r73, and now, when I try
> > and build L4Re, I get a linker error as described in the following
> > Debian bug report:
> > 
> > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=884821
> > 
> > ----
> > mipsel-linux-gnu-ld: main.o: Can't find matching LO16 reloc against
> > `.text' for R_MIPS_GOT16 at 0x1f8 in section `mipsel-linux-gnu-ld: BFD
> > (GNU Binutils for Debian) 2.29.1 internal error, aborting at
> > ../../bfd/bfd.c:866 in _bfd_doprnt

This specific internal error is a bug in binutils when producing the error 
message, but the error causing the message is a genuine problem.

In pkg/examples/sys/utcb-ipc/main.c, expanding the L4UTIL_THREAD_STATIC_FUNC 
macro by hand, I get the following:

EXTERN_C_BEGIN
void __attribute__((visibility("internal"))) thread2(void);
static void __attribute__((used)) thread2_worker_function(void);
asm (
  ".type thread2, function \n"
  "thread2 : \n .set push; .set noreorder;"
  L4UTIL_THREAD_START_SETUP_GP
  "la $t9, thread2_worker_function\n"
  "  jal $t9 \n"
  "   nop    \n"
  ".set pop"
);
EXTERN_C_END
static L4_NORETURN void thread2_worker_function(void)
{
...
}

It seems that the problem is caused by the declaration of thread2. If I 
replace that with this...

static void thread2(void);

...the error associated with the output goes away (although I get a warning 
from the compiler about thread2 not being defined, which happens in the 
assembly language code, of course). But obviously, this isn't a proper 
solution.

Paul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.