[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH 1/2] Makefile.uk: Fix link issues on arm64



Hi Julien,

On 23.12.19, 19:06, "Minios-devel on behalf of Julien Grall" 
<minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of julien@xxxxxxx> wrote:

    Hi,
    
    Title: how about "Makefile.uk: arm64: Add -D_HAVE_LONG_DOUBLE in the 
    cflags"?

Agreed, the commit title and message definitely needs reworking.
    
    On 20/12/2019 05:54, Jia He wrote:
    > Without this patch, when starting helloworld app with newlib on arm
    > kvm plat, it will report a link error as follows:
    > apps/helloworld.newlib/build/helloworld_kvm-arm64.o: In function 
`wcstold_l':
    > 
apps/helloworld.newlib/build/libnewlibc/origin/newlib-2.5.0.20170922/newlib/libc/stdlib/wcstold.c:77:
 undefined reference to `strtold_l'
    > 
apps/helloworld.newlib/build/libnewlibc/origin/newlib-2.5.0.20170922/newlib/libc/stdlib/wcstold.c:77:(.text+0x7c4e4):
 relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol 
`strtold_l'
    > 
    > I once did configure and build of newlib from uptream, this macro is
    > defined on my Thunderx2 armv8a server (Unbuntu 18.04 + gcc version 7.4.0)
    
    This message gives me the error but does not explain the root cause. So 
    it is not clear why -D_HAVE_LONG_DOUBLE solves the problem below.

newlib's strtold.c compile-guards the definition of strtold_l (and other 
related functions) with the _HAVE_LONG_DOUBLE macro, this is why setting that 
flag fixes the linker error.
    
    But it feels slightly supicious to me that newlib would try to build 
    wcstold.c but not strtold.c (where strtold_l is included). So what is 
    the exact problem?

I think this has more to do with a mistake when porting newlib to Unikraft 
(i.e., in our Makefile.uk, which this patch fixes) than with newlib (i.e., 
newlib's build system correctly includes strtold_l by setting 
_HAVE_LONG_DOUBLE).

Hope this clarifies things.

-- Felipe
    
    > 
    > Signed-off-by: Jia He <justin.he@xxxxxxx>
    > ---
    >   Makefile.uk | 5 ++++-
    >   1 file changed, 4 insertions(+), 1 deletion(-)
    > 
    > diff --git a/Makefile.uk b/Makefile.uk
    > index 17d8d7a..377815c 100644
    > --- a/Makefile.uk
    > +++ b/Makefile.uk
    > @@ -85,9 +85,12 @@ LIBNEWLIB_GLOBAL_FLAGS-y  += -DMISSING_SYSCALL_NAMES 
-DMALLOC_PROVIDED
    >   LIBNEWLIB_GLOBAL_FLAGS-y  += -D_POSIX_REALTIME_SIGNALS
    >   LIBNEWLIB_GLOBAL_FLAGS-$(CONFIG_LIBNEWLIBC_WANT_IO_C99_FORMATS) += 
-D_WANT_IO_C99_FORMATS
    >   LIBNEWLIB_GLOBAL_FLAGS-$(CONFIG_LIBNEWLIBC_LINUX_ERRNO_EXTENSIONS) += 
-D__LINUX_ERRNO_EXTENSIONS__
    > +ifeq ($(CONFIG_ARCH_ARM_64),y)
    > +LIBNEWLIB_GLOBAL_FLAGS-y  += -D_HAVE_LONG_DOUBLE
    > +endif
    >   ifeq ($(CONFIG_ARCH_X86_64),y)
    > -LIBNEWLIB_GLOBAL_FLAGS-y  += -D_LDBL_EQ_DBL
    >   LIBNEWLIB_GLOBAL_FLAGS-y  += -D_HAVE_LONG_DOUBLE
    > +LIBNEWLIB_GLOBAL_FLAGS-y  += -D_LDBL_EQ_DBL
    
    This looks a spurious change.
    
    >   endif
    >   
    >   CFLAGS-y   += $(LIBNEWLIB_GLOBAL_FLAGS-y)
    > 
    
    Cheers,
    
    -- 
    Julien Grall
    
    _______________________________________________
    Minios-devel mailing list
    Minios-devel@xxxxxxxxxxxxxxxxxxxx
    https://lists.xenproject.org/mailman/listinfo/minios-devel

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.