[llvm-dev] Port to other Operating Systems

A. D. Sharpe via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 11 15:05:39 PDT 2016


On 10/11/2016 4:41 PM, Bruce Hoult wrote:
> On Ubuntu 16.04 I just did:
>
> nm -D -u /usr/lib/llvm-3.8/bin/clang | grep -v llvm | grep -v LLVM | 
> grep -v _Z
>
> I got 53 results:
>
>                  U abort
>                  U asctime
>                  U calloc
>                  U chdir
>                  U close
>                  U ConvertUTF8toUTF16
>                  U ConvertUTF8toUTF32
>                  U __cxa_atexit
>                  U __cxa_guard_acquire
>                  U __cxa_guard_release
>                  U __cxa_pure_virtual
>                  U __errno_location
>                  U exit
>                  U __fprintf_chk
>                  U free
>                  U getenv
>                  U getNumBytesForUTF8
>                  U getuid
>                  w __gmon_start__
>                  U isLegalUTF8Sequence
>                  w _ITM_deregisterTMCloneTable
>                  w _ITM_registerTMCloneTable
>                  w _Jv_RegisterClasses
>                  U __libc_start_main
>                  U localtime
>                  U malloc
>                  U memchr
>                  U memcmp
>                  U memcpy
>                  U __memcpy_chk
>                  U memmove
>                  U memset
>                  U __popcountdi2
>                  U __printf_chk
>                  w __pthread_key_create
>                  U qsort
>                  U realloc
>                  U __realpath_chk
>                  U __snprintf_chk
>                  U __stack_chk_fail
>                  U stderr
>                  U strchr
>                  U strcmp
>                  U strdup
>                  U strlen
>                  U strncmp
>                  U strpbrk
>                  U strrchr
>                  U strstr
>                  U strtol
>                  U strtoul
>                  U time
>                  U __xstat
>
> Some of those are still provided in llvm itself (e.g. the UTF8 stuff) 
> but most of the rest are dead standard C library things -- not even 
> POSIX. Without thinking about it too much, the least portable and 
> hardest to fake look like time, localtime, and getuid. Which means: 
> not very hard.
>
> Build system is another matter entirely...
>
> That's clang, but I don't expect an optimizer to be very system 
> dependent :-)
Thank you. Do you have an idea of which specific files I need to look 
into for porting hosts & targets? Is there a central set of files, or is 
the implementation spread out across the source tree?


-- 
Regards,

Apollo D. Sharpe, Sr.



More information about the llvm-dev mailing list