Länka newlib och libgloss fungerar inte

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Länka newlib och libgloss fungerar inte

Inlägg av rehnmaak »

Jag har byggt senaste versionen av newlib (1.15.0) samt libgloss (libnosys). Efter många försök och sökande på nätet har jag lyckats få hela makefilen att gå igenom.

Dock när jag försöker länka in libc och libnosys så klagar länkaren på att vissa objektfiler saknas, men dessa finns i libnosys. libnosys är tillagt på komandoraden så den ska länkas med. Även listfilerna indikerar att biblioteket är inläst.

Det behövs säkert mer info än detta för att lösa problemet, men jag får försöka svara på eventuella frågor vart efter...

Alla funktioner finns inte med här men tex isatty borde ju länkas in tycker man.

Här är lite felutskrifter:

Kod: Markera allt

C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-fstatr.o): In function `_fstat_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/fstatr.c:62: undefined reference to `_fstat'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-makebuf.o): In function `__smakebuf':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/stdio/../../../../../newlib-1.15.0/newlib/libc/stdio/makebuf.c:102: undefined reference to `isatty'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-openr.o): In function `_open_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/openr.c:59: undefined reference to `_open'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/sbrkr.c:60: undefined reference to `_sbrk'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-signalr.o): In function `_kill_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/signalr.c:61: undefined reference to `_kill'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-signalr.o): In function `_getpid_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/signalr.c(.text+0x6c): undefined reference to `_getpid'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-writer.o): In function `_write_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/writer.c:58: undefined reference to `_write'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-closer.o): In function `_close_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/closer.c:53: undefined reference to `_close'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-lseekr.o): In function `_lseek_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/lseekr.c:58: undefined reference to `_lseek'
C:/akre/IDAX300/FW_A02/CIO/fpga/microblaze_0/Lib/libc.a(lib_a-readr.o): In function `_read_r':
/cygdrive/c/akre/build-newlib/mb/newlib/libc/reent/../../../../../newlib-1.15.0/newlib/libc/reent/readr.c:58: undefined reference to `_read'

Och en dump från objdump -S :

Kod: Markera allt

In archive libnosys.a:

chown.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <_chown>:
        const char *path  _AND
        uid_t owner _AND
        gid_t group)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

close.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <close>:
int
_DEFUN (_close, (fildes),
        int fildes)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

environ.o:     file format elf32-microblaze

Disassembly of section .text:

errno.o:     file format elf32-microblaze

Disassembly of section .text:

execve.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <execve>:
        char  *name  _AND
        char **argv  _AND
        char **env)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

fork.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <fork>:
int
_DEFUN (_fork, (),
        _NOARGS)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

fstat.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <fstat>:
_DEFUN (_fstat, (fildes, st),
        int          fildes _AND
        struct stat *st)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

getpid.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <getpid>:
int
_DEFUN (_getpid, (),
        _NOARGS)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

gettod.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <gettimeofday>:
_DEFUN (_gettimeofday, (ptimeval, ptimezone),
        struct timeval  *ptimeval  _AND
        struct timezone *ptimezone)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

isatty.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <isatty>:
int
_DEFUN (isatty, (file),
        int file)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return 0;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	10600000 	addk	r3, r0, r0

kill.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <kill>:
_DEFUN (_kill, (pid, sig),
        int pid  _AND
        int sig)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

link.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <link>:
_DEFUN (_link, (existing, new),
        char *existing _AND
        char *new)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

lseek.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <lseek>:
        int   file  _AND
        int   ptr   _AND
        int   dir)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

open.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <open>:
        char *file  _AND
        int   flags _AND
        int   mode)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

read.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <read>:
        int   file  _AND
        char *ptr   _AND
        int   len)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

readlink.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <_readlink>:
        const char *path _AND
        char *buf _AND
        size_t bufsize)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

sbrk.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <sbrk>:
   extern char   end; /* Set by linker.  */
   static char * heap_end; 
   char *        prev_heap_end; 

   if (heap_end == 0)
   0:	b0000000 	imm	0
   4:	e8600000 	lwi	r3, r0, 0
   8:	be230014 	bneid	r3, 20		// 1c
   c:	10832800 	addk	r4, r3, r5
     heap_end = & end; 
  10:	b0000000 	imm	0
  14:	30600000 	addik	r3, r0, 0

   prev_heap_end = heap_end; 
   heap_end += incr; 
  18:	10832800 	addk	r4, r3, r5
  1c:	b0000000 	imm	0
  20:	f8800000 	swi	r4, r0, 0

   return (void *) prev_heap_end; 
} 
  24:	b60f0008 	rtsd	r15, 8
  28:	80000000 	or	r0, r0, r0

stat.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <stat>:
_DEFUN (_stat, (file, st),
        const char  *file _AND
        struct stat *st)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

symlink.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <_symlink>:
_DEFUN (_symlink, (path1, path2),
        const char *path1 _AND
        const char *path2)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

times.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <times>:
clock_t
_DEFUN (_times, (buf),
        struct tms *buf)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

unlink.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <unlink>:
int
_DEFUN (_unlink, (name),
        char *name)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

wait.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <wait>:
int
_DEFUN (_wait, (status),
        int  *status)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

write.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <write>:
        int   file  _AND
        char *ptr   _AND
        int   len)
{
  errno = ENOSYS;
   0:	30600058 	addik	r3, r0, 88
   4:	b0000000 	imm	0
   8:	f8600000 	swi	r3, r0, 0
  return -1;
}
   c:	b60f0008 	rtsd	r15, 8
  10:	3060ffff 	addik	r3, r0, -1

_exit.o:     file format elf32-microblaze

Disassembly of section .text:

00000000 <_exit>:

_VOID
_DEFUN (_exit, (rc),
	int rc)
{
   0:	3021ffe4 	addik	r1, r1, -28
   4:	b8000000 	bri	0		// 4