cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
68 lines
1.6 KiB
C
68 lines
1.6 KiB
C
// RUN: %clang_cc1 -emit-llvm -triple i386-linux-gnu -o - %s | FileCheck %s
|
|
|
|
// CHECK: declare extern_weak void @test1_f()
|
|
void test1_f(void);
|
|
static void test1_g(void) __attribute__((weakref("test1_f")));
|
|
void test1_h(void) {
|
|
test1_g();
|
|
}
|
|
|
|
// CHECK-LABEL: define dso_local void @test2_f()
|
|
void test2_f(void) {}
|
|
static void test2_g(void) __attribute__((weakref("test2_f")));
|
|
void test2_h(void) {
|
|
test2_g();
|
|
}
|
|
|
|
// CHECK: declare void @test3_f()
|
|
void test3_f(void);
|
|
static void test3_g(void) __attribute__((weakref("test3_f")));
|
|
void test3_foo(void) {
|
|
test3_f();
|
|
}
|
|
void test3_h(void) {
|
|
test3_g();
|
|
}
|
|
|
|
// CHECK-LABEL: define dso_local void @test4_f()
|
|
void test4_f(void);
|
|
static void test4_g(void) __attribute__((weakref("test4_f")));
|
|
void test4_h(void) {
|
|
test4_g();
|
|
}
|
|
void test4_f(void) {}
|
|
|
|
// CHECK: declare void @test5_f()
|
|
void test5_f(void);
|
|
static void test5_g(void) __attribute__((weakref("test5_f")));
|
|
void test5_h(void) {
|
|
test5_g();
|
|
}
|
|
void test5_foo(void) {
|
|
test5_f();
|
|
}
|
|
|
|
// CHECK: declare extern_weak void @test6_f()
|
|
void test6_f(void) __attribute__((weak));
|
|
static void test6_g(void) __attribute__((weakref("test6_f")));
|
|
void test6_h(void) {
|
|
test6_g();
|
|
}
|
|
void test6_foo(void) {
|
|
test6_f();
|
|
}
|
|
|
|
// CHECK: declare extern_weak void @test8_f()
|
|
static void test8_g(void) __attribute__((weakref("test8_f")));
|
|
void test8_h(void) {
|
|
if (test8_g)
|
|
test8_g();
|
|
}
|
|
// CHECK: declare extern_weak void @test7_f()
|
|
void test7_f(void);
|
|
static void test7_g(void) __attribute__((weakref("test7_f")));
|
|
static void *const test7_zed = (void *) &test7_g;
|
|
void* test7_h(void) {
|
|
return test7_zed;
|
|
}
|