Message ID | yddeg2etalu.fsf@CeBiTec.Uni-Bielefeld.DE |
---|---|
State | New |
Headers | show |
Rainer, Unfortunately this permutation still fails to bootstrap on darwin15... libtool: compile: /sw/src/fink.build/gcc7-7.0.0-1/darwin_objdir/./gcc/xgcc -shared-libgcc -B/sw/src/fink.build/gcc7-7.0.0-1/darwin_objdir/./gcc -nostdinc++ -L/sw/src/fink.build/gcc7-7.0.0-1/darwin_objdir/x86_64-apple-darwin15.6.0/libstdc++-v3/src -L/sw/src/fink.build/gcc7-7.0.0-1/darwin_objdir/x86_64-apple-darwin15.6.0/libstdc++-v3/src/.libs -L/sw/src/fink.build/gcc7-7.0.0-1/darwin_objdir/x86_64-apple-darwin15.6.0/libstdc++-v3/libsupc++/.libs -B/sw/lib/gcc7/x86_64-apple-darwin15.6.0/bin/ -B/sw/lib/gcc7/x86_64-apple-darwin15.6.0/lib/ -isystem /sw/lib/gcc7/x86_64-apple-darwin15.6.0/include -isystem /sw/lib/gcc7/x86_64-apple-darwin15.6.0/sys-include -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DHAVE_RPC_XDR_H=0 -DHAVE_TIRPC_RPC_XDR_H=0 -I. -I../../../../gcc-7-20161114/libsanitizer/sanitizer_common -I.. -I ../../../../gcc-7-20161114/libsanitizer/include -isystem ../../../../gcc-7-20161114/libsanitizer/include/system -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -I../../libstdc++-v3/include -I../../libstdc++-v3/include/x86_64-apple-darwin15.6.0 -I../../../../gcc-7-20161114/libsanitizer/../libstdc++-v3/libsupc++ -std=gnu++11 -g -O2 -MT sanitizer_mac.lo -MD -MP -MF .deps/sanitizer_mac.Tpo -c ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc -fno-common -DPIC -o .libs/sanitizer_mac.o ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:497:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] os_trace("Address Sanitizer reported a failure."); ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:497:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:497:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:500:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] os_trace("Undefined Behavior Sanitizer reported a failure."); ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:500:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:500:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:503:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] os_trace("Thread Sanitizer reported a failure."); ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:503:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:503:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:505:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] os_trace("Sanitizer tool reported a failure."); ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:505:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:505:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:508:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] os_trace("Consult syslog for more information."); ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:508:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:508:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] In file included from ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:39:0: ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc: In function ‘void __sanitizer::LogFullErrorReport(const char*)’: ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:497:7: error: ‘_Static_assert’ was not declared in this scope os_trace("Address Sanitizer reported a failure."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:497:7: note: suggested alternative: ‘__cpp_static_assert’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:497:7: error: ‘_os_trace_with_buffer’ was not declared in this scope os_trace("Address Sanitizer reported a failure."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:497:7: note: suggested alternative: ‘os_trace_with_payload’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:500:7: error: ‘_Static_assert’ was not declared in this scope os_trace("Undefined Behavior Sanitizer reported a failure."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:500:7: note: suggested alternative: ‘__cpp_static_assert’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:500:7: error: ‘_os_trace_with_buffer’ was not declared in this scope os_trace("Undefined Behavior Sanitizer reported a failure."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:500:7: note: suggested alternative: ‘os_trace_with_payload’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:503:7: error: ‘_Static_assert’ was not declared in this scope os_trace("Thread Sanitizer reported a failure."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:503:7: note: suggested alternative: ‘__cpp_static_assert’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:503:7: error: ‘_os_trace_with_buffer’ was not declared in this scope os_trace("Thread Sanitizer reported a failure."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:503:7: note: suggested alternative: ‘os_trace_with_payload’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:505:7: error: ‘_Static_assert’ was not declared in this scope os_trace("Sanitizer tool reported a failure."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:505:7: note: suggested alternative: ‘__cpp_static_assert’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:505:7: error: ‘_os_trace_with_buffer’ was not declared in this scope os_trace("Sanitizer tool reported a failure."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:505:7: note: suggested alternative: ‘os_trace_with_payload’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:508:7: error: ‘_Static_assert’ was not declared in this scope os_trace("Consult syslog for more information."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:508:7: note: suggested alternative: ‘__cpp_static_assert’ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:508:7: error: ‘_os_trace_with_buffer’ was not declared in this scope os_trace("Consult syslog for more information."); ^ ../../../../gcc-7-20161114/libsanitizer/sanitizer_common/sanitizer_mac.cc:508:7: note: suggested alternative: ‘os_trace_with_payload’ make[4]: *** [sanitizer_mac.lo] Error 1 make[3]: *** [all-recursive] Error 1 make[2]: *** [all] Error 2 make[1]: *** [all-target-libsanitizer] Error 2 make: *** [all] Error 2 Jack On Mon, Nov 14, 2016 at 9:11 AM, Rainer Orth <ro@cebitec.uni-bielefeld.de> wrote: > Hi Jack, > >> > On darwin15, the proposed patch is insufficient to restore the bootstrap >> > (after running genfixes in the fixincludes directory) unless I also apply >> > the previously proposed change... >> >> no wonder: it's only been tested on darwin16. Care to explain what >> error you're seeing? >> >> The failure that I see on darwin15 using your proposed patches and executing >> genfixes in fixincludes before the build is... > > the actual errors are ... > >> In file included from >> ../../../../gcc-7-20161113/libsanitizer/sanitizer_common/sanitizer_mac.cc:39:0: >> /sw/src/fink.build/gcc7-7.0.0-1/darwin_objdir/gcc/include-fixed/os/trace.h:56:47: >> error: attributes are not allowed on a function-definition >> _os_trace_verify_printf(const char *msg, ...) __attribute__((format(printf, 1, 2))) >> ^~~~~~~~~~~~~ > > I've added a new fix to just remove that attribute. One could try and > add a declaration with the attribute if need be, but I've avoid that > trouble for now. > >> /sw/src/fink.build/gcc7-7.0.0-1/darwin_objdir/gcc/include-fixed/os/trace.h:715:109: >> error: ‘os_trace_payload_t’ has not been declared >> _os_trace_with_buffer(void *dso, const char *message, uint8_t type, const void >> *buffer, size_t buffer_size, os_trace_payload_ payload); >> ^~~~~~~~~~~~~~~~~ > > This one isn't caught so far because 10.11 has > > __OSX_AVAILABLE(10.10) __IOS_AVAILABLE(8.0) __WATCHOS_AVAILABLE(1.0) __TVOS_AVAILABLE(9.0) > > instead of > > __API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) > > I've updated the corresponding fix to deal with this variation and > augmented the testcase accordingly. > > Hopefully the new patch works for you. > > Rainer > > -- > ----------------------------------------------------------------------------- > Rainer Orth, Center for Biotechnology, Bielefeld University > >
# HG changeset patch # Parent c9e06f02a0d86f769e4c4720ddfc0938c76bcb20 Fix macOS 10.12 <AvailabilityInternal.h> and <os/trace.h> (PR sanitizer/78267) diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -1338,6 +1338,32 @@ fix = { }; /* + * macOS 10.12 <AvailabilityInternal.h> uses __attribute__((availability)) + * unconditionally. + */ +fix = { + hackname = darwin_availabilityinternal; + mach = "*-*-darwin*"; + files = AvailabilityInternal.h; + select = "#define[ \t]+(__API_[ADU]\\([^)]*\\)).*"; + c_fix = format; + c_fix_arg = <<- _EOFix_ + #if defined(__has_attribute) + #if __has_attribute(availability) + %0 + #else + #define %1 + #endif + #else + #define %1 + #endif + _EOFix_; + + test_text = "#define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x)))\n" + "#define __API_D(msg,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg)))"; +}; + +/* * For the AAB_darwin7_9_long_double_funcs fix to be useful, * you have to not use "" includes. */ @@ -1410,6 +1436,62 @@ fix = { }; /* + * Mac OS X 10.11 <os/trace.h> uses attribute on function definition. + */ +fix = { + hackname = darwin_os_trace_1; + mach = "*-*-darwin*"; + files = os/trace.h; + select = "^(_os_trace_verify_printf.*) (__attribute__.*)"; + c_fix = format; + c_fix_arg = "%1"; + test_text = "_os_trace_verify_printf(const char *msg, ...) __attribute__((format(printf, 1, 2)))"; +}; + +/* + * Mac OS X 10.1[012] <os/trace.h> os_trace_payload_t typedef uses Blocks + * extension without guard. + */ +fix = { + hackname = darwin_os_trace_2; + mach = "*-*-darwin*"; + files = os/trace.h; + select = "typedef.*\\^os_trace_payload_t.*"; + c_fix = format; + c_fix_arg = "#if __BLOCKS__\n%0\n#endif"; + test_text = "typedef void (^os_trace_payload_t)(xpc_object_t xdict);"; +}; + +/* + * In Mac OS X 10.1[012] <os/trace.h>, need to guard users of + * os_trace_payload_t typedef, too. + */ +fix = { + hackname = darwin_os_trace_3; + mach = "*-*-darwin*"; + files = os/trace.h; + select = <<- _EOSelect_ + __(API|OSX)_.* + OS_EXPORT.* + .* + _os_trace.*os_trace_payload_t payload); + _EOSelect_; + c_fix = format; + c_fix_arg = "#if __BLOCKS__\n%0\n#endif"; + test_text = <<- _EOText_ + __API_AVAILABLE(macosx(10.10), ios(8.0), watchos(2.0), tvos(8.0)) + OS_EXPORT OS_NOTHROW OS_NOT_TAIL_CALLED + void + _os_trace_with_buffer(void *dso, const char *message, uint8_t type, const void *buffer, size_t buffer_size, os_trace_payload_t payload); + + __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0) + OS_EXPORT OS_NOTHROW + void + _os_trace_internal(void *dso, uint8_t type, const char *format, const uint8_t *buf, size_t buf_size, os_trace_payload_t payload); + _EOText_; +}; + +/* * __private_extern__ doesn't exist in FSF GCC. Even if it did, * why would you ever put it in a system header file? */ @@ -2638,7 +2720,6 @@ fix = { c-fix-arg = "# define UINT_%164_MAX __UINT64_MAX__"; test-text = "# define UINT_FAST64_MAX ULLONG_MAX\n" "# define UINT_LEAST64_MAX ULLONG_MAX\n"; - _EOFix_; }; /* diff --git a/fixincludes/tests/base/AvailabilityInternal.h b/fixincludes/tests/base/AvailabilityInternal.h new file mode 100644 --- /dev/null +++ b/fixincludes/tests/base/AvailabilityInternal.h @@ -0,0 +1,31 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/AvailabilityInternal.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( DARWIN_AVAILABILITYINTERNAL_CHECK ) +#if defined(__has_attribute) + #if __has_attribute(availability) +#define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x))) + #else + #define __API_A(x) + #endif +#else + #define __API_A(x) +#endif +#if defined(__has_attribute) + #if __has_attribute(availability) +#define __API_D(msg,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg))) + #else + #define __API_D(msg,x) + #endif +#else + #define __API_D(msg,x) +#endif +#endif /* DARWIN_AVAILABILITYINTERNAL_CHECK */ diff --git a/fixincludes/tests/base/os/trace.h b/fixincludes/tests/base/os/trace.h new file mode 100644 --- /dev/null +++ b/fixincludes/tests/base/os/trace.h @@ -0,0 +1,38 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/os/trace.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( DARWIN_OS_TRACE_1_CHECK ) +_os_trace_verify_printf(const char *msg, ...) +#endif /* DARWIN_OS_TRACE_1_CHECK */ + + +#if defined( DARWIN_OS_TRACE_2_CHECK ) +#if __BLOCKS__ +typedef void (^os_trace_payload_t)(xpc_object_t xdict); +#endif +#endif /* DARWIN_OS_TRACE_2_CHECK */ + + +#if defined( DARWIN_OS_TRACE_3_CHECK ) +#if __BLOCKS__ +__API_AVAILABLE(macosx(10.10), ios(8.0), watchos(2.0), tvos(8.0)) +OS_EXPORT OS_NOTHROW OS_NOT_TAIL_CALLED +void +_os_trace_with_buffer(void *dso, const char *message, uint8_t type, const void *buffer, size_t buffer_size, os_trace_payload_t payload); +#endif + +#if __BLOCKS__ +__OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_10_0) +OS_EXPORT OS_NOTHROW +void +_os_trace_internal(void *dso, uint8_t type, const char *format, const uint8_t *buf, size_t buf_size, os_trace_payload_t payload); +#endif +#endif /* DARWIN_OS_TRACE_3_CHECK */