Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Dec 2020 08:38:31 +0000 (UTC)
From:      Ryan Libby <rlibby@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r368789 - head/libexec/rtld-elf/rtld-libc
Message-ID:  <202012190838.0BJ8cVJ3064816@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rlibby
Date: Sat Dec 19 08:38:31 2020
New Revision: 368789
URL: https://svnweb.freebsd.org/changeset/base/368789

Log:
  rtld-elf: link udivmoddi4 from compiler_rt
  
  This fixes the gcc9 build of rtld-elf32 on amd64, which needed an
  implementation of udivmoddi4.
  
  rtld-elf uses certain functions normally found in libc, and so it
  includes certain files from libc in its own build.  It has two
  mechanisms to include files from libc: one that rebuilds source files in
  the rtld-elf environment, and one that extracts object files from a
  purpose-built no-SSP PIC archive.
  
  In addition to libc functions, rtld-elf may need to link functions
  normally found in libcompiler_rt (formerly libgcc).  Now, add an ability
  to rebuild libcompiler_rt source files in the rtld-elf environment.  We
  don't yet have a need for an object file extraction mechanism.
  
  libcompiler_rt could also supply udivdi3 and umoddi3, but leave them
  alone for now.
  
  Reviewed by:	arichardson, kib
  Sponsored by:	Dell EMC Isilon
  Differential Revision:	https://reviews.freebsd.org/D27665

Modified:
  head/libexec/rtld-elf/rtld-libc/Makefile.inc

Modified: head/libexec/rtld-elf/rtld-libc/Makefile.inc
==============================================================================
--- head/libexec/rtld-elf/rtld-libc/Makefile.inc	Sat Dec 19 08:38:27 2020	(r368788)
+++ head/libexec/rtld-elf/rtld-libc/Makefile.inc	Sat Dec 19 08:38:31 2020	(r368789)
@@ -51,8 +51,12 @@ _libc_other_objects= sigsetjmp lstat stat fstat fstata
     getdirentries _getdirentries _close _fcntl _open _openat _read \
     _sigprocmask _write readlink __realpathat _setjmp setjmp setjmperr
 
+# Allow building files from libcompiler_rt.  Beware, there are some name
+# collisions between libcompiler_rt files and libc files.
+CRTSRC=		${SRCTOP}/contrib/llvm-project/compiler-rt/lib/builtins
+.PATH:		${CRTSRC}
 
-# Finally add additional architecture-dependent libc dependencies
+# Finally add additional architecture-dependent dependencies
 .if ${LIBC_ARCH} == "arm"
 # ARM needs aeabi_unwind_cpp for _setjmp
 _libc_other_objects+=aeabi_unwind_cpp
@@ -60,6 +64,7 @@ _libc_other_objects+=aeabi_unwind_cpp
 # __udivdi3 is needed by kvprintf() in rtld_printf.c
 # i386 also needs i386_set_gsbase for allocate_initial_tls()
 _libc_other_objects+=umoddi3 udivdi3 qdivrem i386_set_gsbase
+SRCS+= udivmoddi4.c
 .elif ${LIBC_ARCH} == "powerpc" || ${LIBC_ARCH} == "powerpcspe"
 # ppc needs __syncicache for reloc.c and __umoddi3+__udivdi3 for rtld_printf.c
 _libc_other_objects+=syncicache umoddi3 udivdi3 qdivrem



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202012190838.0BJ8cVJ3064816>