Skip to content

building llvm compiler-rt(?) fails when compiler using fortify headers #45

Description

@nekopsykose
FAILED: lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/eprintf.c.o 
/builddir/llvm-bootstrap-17.0.6/build/./bin/clang --target=x86_64-chimera-linux-musl -DVISIBILITY_HIDDEN  -Wformat -Werror=format-security -ftrivial-auto-var-init=zero -fstack-clash-protection -O2 -pipe -ffile-prefix-map=/builddir/llvm-bootstrap-17.0.6=. -fPIC -O3 -DNDEBUG -m32 -fno-lto -std=c11 -fno-builtin -fvisibility=hidden -fomit-frame-pointer -DCOMPILER_RT_HAS_FLOAT16 -MD -MT lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/eprintf.c.o -MF lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/eprintf.c.o.d -o lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/eprintf.c.o -c /builddir/llvm-bootstrap-17.0.6/compiler-rt/lib/builtins/eprintf.c
In file included from /builddir/llvm-bootstrap-17.0.6/compiler-rt/lib/builtins/eprintf.c:10:
/usr/include/fortify/stdio.h:150:47: error: 'diagnose_as_builtin' attribute parameter types do not match: parameter 2 of function '__orig_vsnprintf' has type 'size_t' (aka 'unsigned long'), but parameter 2 of function '__builtin_vsnprintf' has type 'unsigned int'
  150 | __diagnose_as_builtin(__builtin_vsnprintf, 1, 2, 3, 4)
      |                                               ^
1 error generated.
[105/310] Building C object lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/udivsi3.c.o
[106/310] Building C object lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/udivti3.c.o
[107/310] Building C object lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/clear_cache.c.o
[108/310] Building C object lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/i386/fp_mode.c.o
[109/310] Building C object lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/umodsi3.c.o
[110/310] Building C object lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/enable_execute_stack.c.o
[111/310] Building C object lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/emutls.c.o
FAILED: lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/emutls.c.o 
/builddir/llvm-bootstrap-17.0.6/build/./bin/clang --target=x86_64-chimera-linux-musl -DVISIBILITY_HIDDEN  -Wformat -Werror=format-security -ftrivial-auto-var-init=zero -fstack-clash-protection -O2 -pipe -ffile-prefix-map=/builddir/llvm-bootstrap-17.0.6=. -fPIC -O3 -DNDEBUG -m32 -fno-lto -std=c11 -fno-builtin -fvisibility=hidden -fomit-frame-pointer -DCOMPILER_RT_HAS_FLOAT16 -MD -MT lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/emutls.c.o -MF lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/emutls.c.o.d -o lib/builtins/CMakeFiles/clang_rt.builtins-i386.dir/emutls.c.o -c /builddir/llvm-bootstrap-17.0.6/compiler-rt/lib/builtins/emutls.c
In file included from /builddir/llvm-bootstrap-17.0.6/compiler-rt/lib/builtins/emutls.c:11:
/usr/include/fortify/string.h:45:47: error: 'diagnose_as_builtin' attribute parameter types do not match: parameter 3 of function '__orig_memcpy' has type 'size_t' (aka 'unsigned long'), but parameter 3 of function '__builtin_memcpy' has type 'unsigned int'
   45 | __diagnose_as_builtin(__builtin_memcpy, 1, 2, 3)
      |                                               ^
/usr/include/fortify/string.h:70:48: error: 'diagnose_as_builtin' attribute parameter types do not match: parameter 3 of function '__orig_memmove' has type 'size_t' (aka 'unsigned long'), but parameter 3 of function '__builtin_memmove' has type 'unsigned int'
   70 | __diagnose_as_builtin(__builtin_memmove, 1, 2, 3)
      |                                                ^
/usr/include/fortify/string.h:89:47: error: 'diagnose_as_builtin' attribute parameter types do not match: parameter 3 of function '__orig_memset' has type 'size_t' (aka 'unsigned long'), but parameter 3 of function '__builtin_memset' has type 'unsigned int'
   89 | __diagnose_as_builtin(__builtin_memset, 1, 2, 3)
      |                                               ^
/usr/include/fortify/string.h:107:47: error: 'diagnose_as_builtin' attribute parameter types do not match: parameter 3 of function '__orig_memchr' has type 'size_t' (aka 'unsigned long'), but parameter 3 of function '__builtin_memchr' has type 'unsigned int'
  107 | __diagnose_as_builtin(__builtin_memchr, 1, 2, 3)
      |                                               ^
/usr/include/fortify/string.h:262:48: error: 'diagnose_as_builtin' attribute parameter types do not match: parameter 3 of function '__orig_strncat' has type 'size_t' (aka 'unsigned long'), but parameter 3 of function '__builtin_strncat' has type 'unsigned int'
  262 | __diagnose_as_builtin(__builtin_strncat, 1, 2, 3)
      |                                                ^
/usr/include/fortify/string.h:285:48: error: 'diagnose_as_builtin' attribute parameter types do not match: parameter 3 of function '__orig_strncpy' has type 'size_t' (aka 'unsigned long'), but parameter 3 of function '__builtin_strncpy' has type 'unsigned int'
  285 | __diagnose_as_builtin(__builtin_strncpy, 1, 2, 3)
      |                                                ^
6 errors generated.

trying to reproduce normally with -fno-builtin or similar doesn't repro, so there is probably something funny in the compiler-rt build

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions