public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
From: Jeff Johnston <jjohnstn@redhat.com>
To: Yihan Pang <pyihan1@vt.edu>
Cc: Rob Lyerly <rlyerly@vt.edu>, Newlib <newlib@sourceware.org>
Subject: Re: Newlib on Sparc64?
Date: Fri, 23 Jun 2017 20:52:00 -0000	[thread overview]
Message-ID: <CAOox84sdbPj-R1AG9zW-vQwjSTt0N=zJj6bUAo1CshRCF6r-LA@mail.gmail.com> (raw)
In-Reply-To: <CA+2_MPEB39Hos5VrD-V7wiA6Dur=YQK87hXqR23d7eF_ShcJSg@mail.gmail.com>

The difference is what level of syscalls and C library functions will
be available.

The basic newlib uses a minimal set of syscalls and provides C89
functionality++  (there are C99, Posix, and SYSV
functions as well).  Linux support provides/requires more library
functions/syscalls.  There is a Linux port in newlib but it only
supports x86 and at the moment
it is probably out of date as it requires some system glibc headers to
be present which likely have changed.

Whether your sparc64-elf executable will run or not depends on what
functions and syscalls you require.  Looking in libgloss, there is
a sparc directory that appears to provide a lot of syscall stubs (i.e.
syscalls that simply return failure).  If you need some
of these to work, you may have to write some assembler to access the
sparc Linux syscalls, but the good news is that there aren't many
syscalls in the basic set and you might not need all of them.

If all your function and syscall needs are met, the sparc64-elf
executable should run fine on sparc Linux.

-- Jeff J.

On Fri, Jun 23, 2017 at 3:37 PM, Yihan Pang <pyihan1@vt.edu> wrote:
> Hi Jeff,
> I have some follow up questions. What is the difference between the
> Linux version and ELF version of newlib? We want our application to
> run on sparc Linux, if we built one using sparc64-elf tool-chain, will
> the application be able to run on sparc Linux?
>
> Best,
> Yihan Pang
>
> On Wed, Jun 21, 2017 at 4:20 PM, Jeff Johnston <jjohnstn@redhat.com> wrote:
>> Newlib does not support building for sparc64 linux.
>>
>> You could try sparc64-elf assuming you have, or can build, the
>> sparc64-elf toolchain.  You would then need to specify
>> --target=sparc64-elf on your newlib configure call.
>>
>> -- Jeff J.
>>
>> On Wed, Jun 21, 2017 at 4:06 PM, Yihan Pang <pyihan1@vt.edu> wrote:
>>> Hi All,
>>>
>>> I am trying to use newlib on a SPARC S7 server that is running Oracle
>>> Linux 6 OS. However, when I finished running the configuring script,
>>> and execute the make command, it print out nothing to be done for all,
>>> all-target. I checked the newlib folders and there is a sparc folder
>>> under newlib/libc/machine/ so I assumed I don't need to port it
>>> manually.
>>>
>>> My question is does newlib currently support sparc64 or not, if so do
>>> I have to manually port it?
>>>
>>> Below is my configure script output and make command output
>>>
>>> [yihan@localhost nlib_build]$ ../newlib-2.5.0/configure
>>> checking build system type... sparc64-unknown-linux-gnu
>>> checking host system type... sparc64-unknown-linux-gnu
>>> checking target system type... sparc64-unknown-linux-gnu
>>> checking for a BSD-compatible install... /usr/bin/install -c
>>> checking whether ln works... yes
>>> checking whether ln -s works... yes
>>> checking for a sed that does not truncate output... /bin/sed
>>> checking for gawk... gawk
>>> checking for gcc... gcc
>>> checking for C compiler default output file name... a.out
>>> checking whether the C compiler works... yes
>>> checking whether we are cross compiling... no
>>> checking for suffix of executables...
>>> checking for suffix of object files... o
>>> checking whether we are using the GNU C compiler... yes
>>> checking whether gcc accepts -g... yes
>>> checking for gcc option to accept ISO C89... none needed
>>> checking for g++... g++
>>> checking whether we are using the GNU C++ compiler... yes
>>> checking whether g++ accepts -g... yes
>>> checking whether g++ accepts -static-libstdc++ -static-libgcc... yes
>>> checking for gnatbind... no
>>> checking for gnatmake... no
>>> checking whether compiler driver understands Ada... no
>>> checking how to compare bootstrapped objects... cmp
>>> --ignore-initial=16 $$f1 $$f2
>>> checking for objdir... .libs
>>> checking for isl 0.16, 0.15, or deprecated 0.14... yes
>>> checking for isl 0.16 or 0.15... yes
>>> checking for default BUILD_CONFIG...
>>> checking for --enable-vtable-verify... no
>>> checking for bison... bison -y
>>> checking for bison... bison
>>> checking for gm4... no
>>> checking for gnum4... no
>>> checking for m4... m4
>>> checking for flex... flex
>>> checking for flex... flex
>>> checking for makeinfo... no
>>> /home/yihan/newlib-2.5.0/missing: line 81: makeinfo: command not found
>>> checking for expect... expect
>>> checking for runtest... runtest
>>> checking for ar... ar
>>> checking for as... as
>>> checking for dlltool... no
>>> checking for ld... (cached)
>>> /opt/rh/devtoolset-3/root/usr/libexec/gcc/sparc64-redhat-linux/4.9.2/ld
>>> checking for lipo... no
>>> checking for nm... nm
>>> checking for ranlib... ranlib
>>> checking for strip... strip
>>> checking for windres... no
>>> checking for windmc... no
>>> checking for objcopy... objcopy
>>> checking for objdump... objdump
>>> checking for readelf... readelf
>>> checking for cc... cc
>>> checking for c++... c++
>>> checking for gcc... gcc
>>> checking for gcj... no
>>> checking for gfortran... gfortran
>>> checking for gccgo... no
>>> checking for ar... ar
>>> checking for as... as
>>> checking for dlltool... no
>>> checking for ld... ld
>>> checking for lipo... no
>>> checking for nm... nm
>>> checking for objcopy... objcopy
>>> checking for objdump... objdump
>>> checking for ranlib... ranlib
>>> checking for readelf... readelf
>>> checking for strip... strip
>>> checking for windres... no
>>> checking for windmc... no
>>> checking where to find the target ar... host tool
>>> checking where to find the target as... host tool
>>> checking where to find the target cc... host tool
>>> checking where to find the target c++... host tool
>>> checking where to find the target c++ for libstdc++... host tool
>>> checking where to find the target dlltool... host tool
>>> checking where to find the target gcc... host tool
>>> checking where to find the target gcj... host tool
>>> checking where to find the target gfortran... host tool
>>> checking where to find the target gccgo... host tool
>>> checking where to find the target ld... host tool
>>> checking where to find the target lipo... host tool
>>> checking where to find the target nm... host tool
>>> checking where to find the target objcopy... host tool
>>> checking where to find the target objdump... host tool
>>> checking where to find the target ranlib... host tool
>>> checking where to find the target readelf... host tool
>>> checking where to find the target strip... host tool
>>> checking where to find the target windres... host tool
>>> checking where to find the target windmc... host tool
>>> checking whether to enable maintainer-specific portions of Makefiles... no
>>> configure: creating ./config.status
>>> config.status: creating Makefile
>>> [yihan@localhost nlib_build]$ make
>>> make[1]: Entering directory `/home/yihan/nlib_build'
>>> mkdir -p -- ./etc
>>> Configuring in ./etc
>>> configure: creating cache ./config.cache
>>> checking for a BSD-compatible install... /usr/bin/install -c
>>> configure: updating cache ./config.cache
>>> configure: creating ./config.status
>>> config.status: creating Makefile
>>> make[2]: Entering directory `/home/yihan/nlib_build/etc'
>>> make[2]: Nothing to be done for `all'.
>>> make[2]: Leaving directory `/home/yihan/nlib_build/etc'
>>> make[1]: Nothing to be done for `all-target'.
>>> make[1]: Leaving directory `/home/yihan/nlib_build'
>>>
>>>
>>>
>>> Thanks,
>>> Yihan Pang

  reply	other threads:[~2017-06-23 20:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-21 20:06 Yihan Pang
2017-06-21 20:20 ` Jeff Johnston
2017-06-23 19:37   ` Yihan Pang
2017-06-23 20:52     ` Jeff Johnston [this message]
  -- strict thread matches above, loose matches on Subject: below --
2003-01-14 14:59 newlib on sparc64? Josh Fryman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAOox84sdbPj-R1AG9zW-vQwjSTt0N=zJj6bUAo1CshRCF6r-LA@mail.gmail.com' \
    --to=jjohnstn@redhat.com \
    --cc=newlib@sourceware.org \
    --cc=pyihan1@vt.edu \
    --cc=rlyerly@vt.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).