Reduce Bazel compiler flags Cuts out most of the Bazel toolchain flags and only specifies the bare-minimum set of flags. Also, adds wrapper linker flags for functions the SDK wraps.
diff --git a/src/rp2_common/pico_bit_ops/BUILD.bazel b/src/rp2_common/pico_bit_ops/BUILD.bazel index ccb14f6..0bdad0f 100644 --- a/src/rp2_common/pico_bit_ops/BUILD.bazel +++ b/src/rp2_common/pico_bit_ops/BUILD.bazel
@@ -9,4 +9,18 @@ "//src/rp2_common/pico_platform:pico_platform", ], srcs = ["bit_ops_aeabi.S"], + linkopts = [ + "-Wl,--wrap=__clzsi2", + "-Wl,--wrap=__clzsi2", + "-Wl,--wrap=__clzdi2", + "-Wl,--wrap=__ctzsi2", + "-Wl,--wrap=__ctzdi2", + "-Wl,--wrap=__popcountsi2", + "-Wl,--wrap=__popcountdi2", + "-Wl,--wrap=__clz", + "-Wl,--wrap=__clzl", + "-Wl,--wrap=__clzsi2", + "-Wl,--wrap=__clzll", + ], + alwayslink=True, # Ensures the wrapped symbols are linked in. )
diff --git a/src/rp2_common/pico_divider/BUILD.bazel b/src/rp2_common/pico_divider/BUILD.bazel index 2b94262..1cc2a7f 100644 --- a/src/rp2_common/pico_divider/BUILD.bazel +++ b/src/rp2_common/pico_divider/BUILD.bazel
@@ -10,4 +10,13 @@ "//src/rp2_common/pico_platform:pico_platform", ], srcs = ["divider.S"], + linkopts = [ + "-Wl,--wrap=__aeabi_idiv", + "-Wl,--wrap=__aeabi_idivmod", + "-Wl,--wrap=__aeabi_ldivmod", + "-Wl,--wrap=__aeabi_uidiv", + "-Wl,--wrap=__aeabi_uidivmod", + "-Wl,--wrap=__aeabi_uldivmod", + ], + alwayslink=True, # Ensures the wrapped symbols are linked in. )
diff --git a/src/rp2_common/pico_double/BUILD.bazel b/src/rp2_common/pico_double/BUILD.bazel index a6a25e9..df1914f 100644 --- a/src/rp2_common/pico_double/BUILD.bazel +++ b/src/rp2_common/pico_double/BUILD.bazel
@@ -19,4 +19,68 @@ "double_none.S", "double_v1_rom_shim.S", ], + linkopts = [ + "-Wl,--wrap=__aeabi_dadd", + "-Wl,--wrap=__aeabi_ddiv", + "-Wl,--wrap=__aeabi_dmul", + "-Wl,--wrap=__aeabi_drsub", + "-Wl,--wrap=__aeabi_dsub", + "-Wl,--wrap=__aeabi_cdcmpeq", + "-Wl,--wrap=__aeabi_cdrcmple", + "-Wl,--wrap=__aeabi_cdcmple", + "-Wl,--wrap=__aeabi_dcmpeq", + "-Wl,--wrap=__aeabi_dcmplt", + "-Wl,--wrap=__aeabi_dcmple", + "-Wl,--wrap=__aeabi_dcmpge", + "-Wl,--wrap=__aeabi_dcmpgt", + "-Wl,--wrap=__aeabi_dcmpun", + "-Wl,--wrap=__aeabi_i2d", + "-Wl,--wrap=__aeabi_l2d", + "-Wl,--wrap=__aeabi_ui2d", + "-Wl,--wrap=__aeabi_ul2d", + "-Wl,--wrap=__aeabi_d2iz", + "-Wl,--wrap=__aeabi_d2lz", + "-Wl,--wrap=__aeabi_d2uiz", + "-Wl,--wrap=__aeabi_d2ulz", + "-Wl,--wrap=__aeabi_d2f", + "-Wl,--wrap=sqrt", + "-Wl,--wrap=cos", + "-Wl,--wrap=sin", + "-Wl,--wrap=tan", + "-Wl,--wrap=atan2", + "-Wl,--wrap=exp", + "-Wl,--wrap=log", + "-Wl,--wrap=ldexp", + "-Wl,--wrap=copysign", + "-Wl,--wrap=trunc", + "-Wl,--wrap=floor", + "-Wl,--wrap=ceil", + "-Wl,--wrap=round", + "-Wl,--wrap=sincos", + "-Wl,--wrap=asin", + "-Wl,--wrap=acos", + "-Wl,--wrap=atan", + "-Wl,--wrap=sinh", + "-Wl,--wrap=cosh", + "-Wl,--wrap=tanh", + "-Wl,--wrap=asinh", + "-Wl,--wrap=acosh", + "-Wl,--wrap=atanh", + "-Wl,--wrap=exp2", + "-Wl,--wrap=log2", + "-Wl,--wrap=exp10", + "-Wl,--wrap=log10", + "-Wl,--wrap=pow", + "-Wl,--wrap=powint", + "-Wl,--wrap=hypot", + "-Wl,--wrap=cbrt", + "-Wl,--wrap=fmod", + "-Wl,--wrap=drem", + "-Wl,--wrap=remainder", + "-Wl,--wrap=remquo", + "-Wl,--wrap=expm1", + "-Wl,--wrap=log1p", + "-Wl,--wrap=fma", + ], + alwayslink=True, # Ensures the wrapped symbols are linked in. )
diff --git a/src/rp2_common/pico_float/BUILD.bazel b/src/rp2_common/pico_float/BUILD.bazel index f36fe4a..e016b01 100644 --- a/src/rp2_common/pico_float/BUILD.bazel +++ b/src/rp2_common/pico_float/BUILD.bazel
@@ -19,4 +19,68 @@ "float_none.S", "float_v1_rom_shim.S", ], + linkopts = [ + "-Wl,--wrap=__aeabi_fadd", + "-Wl,--wrap=__aeabi_fdiv", + "-Wl,--wrap=__aeabi_fmul", + "-Wl,--wrap=__aeabi_frsub", + "-Wl,--wrap=__aeabi_fsub", + "-Wl,--wrap=__aeabi_cfcmpeq", + "-Wl,--wrap=__aeabi_cfrcmple", + "-Wl,--wrap=__aeabi_cfcmple", + "-Wl,--wrap=__aeabi_fcmpeq", + "-Wl,--wrap=__aeabi_fcmplt", + "-Wl,--wrap=__aeabi_fcmple", + "-Wl,--wrap=__aeabi_fcmpge", + "-Wl,--wrap=__aeabi_fcmpgt", + "-Wl,--wrap=__aeabi_fcmpun", + "-Wl,--wrap=__aeabi_i2f", + "-Wl,--wrap=__aeabi_l2f", + "-Wl,--wrap=__aeabi_ui2f", + "-Wl,--wrap=__aeabi_ul2f", + "-Wl,--wrap=__aeabi_f2iz", + "-Wl,--wrap=__aeabi_f2lz", + "-Wl,--wrap=__aeabi_f2uiz", + "-Wl,--wrap=__aeabi_f2ulz", + "-Wl,--wrap=__aeabi_f2d", + "-Wl,--wrap=sqrtf", + "-Wl,--wrap=cosf", + "-Wl,--wrap=sinf", + "-Wl,--wrap=tanf", + "-Wl,--wrap=atan2f", + "-Wl,--wrap=expf", + "-Wl,--wrap=logf", + "-Wl,--wrap=ldexpf", + "-Wl,--wrap=copysignf", + "-Wl,--wrap=truncf", + "-Wl,--wrap=floorf", + "-Wl,--wrap=ceilf", + "-Wl,--wrap=roundf", + "-Wl,--wrap=sincosf", + "-Wl,--wrap=asinf", + "-Wl,--wrap=acosf", + "-Wl,--wrap=atanf", + "-Wl,--wrap=sinhf", + "-Wl,--wrap=coshf", + "-Wl,--wrap=tanhf", + "-Wl,--wrap=asinhf", + "-Wl,--wrap=acoshf", + "-Wl,--wrap=atanhf", + "-Wl,--wrap=exp2f", + "-Wl,--wrap=log2f", + "-Wl,--wrap=exp10f", + "-Wl,--wrap=log10f", + "-Wl,--wrap=powf", + "-Wl,--wrap=powintf", + "-Wl,--wrap=hypotf", + "-Wl,--wrap=cbrtf", + "-Wl,--wrap=fmodf", + "-Wl,--wrap=dremf", + "-Wl,--wrap=remainderf", + "-Wl,--wrap=remquof", + "-Wl,--wrap=expm1f", + "-Wl,--wrap=log1pf", + "-Wl,--wrap=fmaf", + ], + alwayslink=True, # Ensures the wrapped symbols are linked in. )
diff --git a/src/rp2_common/pico_int64_ops/BUILD.bazel b/src/rp2_common/pico_int64_ops/BUILD.bazel index 91cae7c..c2b3cf8 100644 --- a/src/rp2_common/pico_int64_ops/BUILD.bazel +++ b/src/rp2_common/pico_int64_ops/BUILD.bazel
@@ -11,4 +11,6 @@ "//src/rp2_common/pico_platform:pico_platform", ], srcs = ["pico_int64_ops_aeabi.S"], + linkopts = ["-Wl,--wrap=__aeabi_lmul"], + alwayslink=True, # Ensures the wrapped symbols are linked in. )
diff --git a/src/rp2_common/pico_malloc/BUILD.bazel b/src/rp2_common/pico_malloc/BUILD.bazel index 36a3ba8..00aeb07 100644 --- a/src/rp2_common/pico_malloc/BUILD.bazel +++ b/src/rp2_common/pico_malloc/BUILD.bazel
@@ -11,4 +11,11 @@ "//src/common/pico_sync:pico_sync", ], srcs = ["pico_malloc.c"], + linkopts = [ + "--linkopts=malloc", + "--linkopts=calloc", + "--linkopts=realloc", + "--linkopts=free", + ], + alwayslink=True, # Ensures the wrapped symbols are linked in. )
diff --git a/src/rp2_common/pico_mem_ops/BUILD.bazel b/src/rp2_common/pico_mem_ops/BUILD.bazel index b351e0f..0851f7f 100644 --- a/src/rp2_common/pico_mem_ops/BUILD.bazel +++ b/src/rp2_common/pico_mem_ops/BUILD.bazel
@@ -15,4 +15,15 @@ "mem_ops.c", "mem_ops_aeabi.S", ], + linkopts = [ + "-Wl,--wrap=memcpy", + "-Wl,--wrap=memset", + "-Wl,--wrap=__aeabi_memcpy", + "-Wl,--wrap=__aeabi_memset", + "-Wl,--wrap=__aeabi_memcpy4", + "-Wl,--wrap=__aeabi_memset4", + "-Wl,--wrap=__aeabi_memcpy8", + "-Wl,--wrap=__aeabi_memset8", + ], + alwayslink=True, # Ensures the wrapped symbols are linked in. )
diff --git a/src/rp2_common/pico_printf/BUILD.bazel b/src/rp2_common/pico_printf/BUILD.bazel index f0b81e2..c0665ac 100644 --- a/src/rp2_common/pico_printf/BUILD.bazel +++ b/src/rp2_common/pico_printf/BUILD.bazel
@@ -13,6 +13,13 @@ ], srcs = [ "printf.c", - "printf_none.S", ], + linkopts = [ + "-Wl,--wrap=sprintf", + "-Wl,--wrap=snprintf", + "-Wl,--wrap=vsnprintf", + ], + alwayslink=True, # Ensures the wrapped symbols are linked in. ) + +# TODO: Support printf_none.S.
diff --git a/src/rp2_common/pico_stdio/BUILD.bazel b/src/rp2_common/pico_stdio/BUILD.bazel index ed10694..94698ed 100644 --- a/src/rp2_common/pico_stdio/BUILD.bazel +++ b/src/rp2_common/pico_stdio/BUILD.bazel
@@ -36,6 +36,13 @@ "//bazel/constraint:stdio_uart": ["//src/rp2_common/pico_stdio_uart:pico_stdio_uart"], "//bazel/constraint:stdio_usb": ["//src/rp2_common/pico_stdio_usb:pico_stdio_usb"], }), - copts = ["-Wno-unused-function"], + linkopts = [ + "-Wl,--wrap=printf", + "-Wl,--wrap=vprintf", + "-Wl,--wrap=puts", + "-Wl,--wrap=putchar", + "-Wl,--wrap=getchar", + ], + alwayslink=True, # Ensures the wrapped symbols are linked in. srcs = ["stdio.c"], )