37 lines · plain
1$ cat main.cpp2#include <stdio.h>3 4static void Foo(void)5{6 typedef struct {7 int x1;8 int x2;9 } FOO_VAR_TYPE;10 static FOO_VAR_TYPE MyDummyVar __attribute__((aligned(4), used, section("TAD_VIRTUAL, TAD_DUMMY_DATA"), nocommon));11 printf("Foo called");12}13 14int main()15{16 Foo();17 return 1;18}19 20$ clang++ -O2 -g main.cpp -c -o main.o21$ clang++ main.o -o main.out22 23RUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/keep_func/main.out -o %t.omit.dSYM24RUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/keep_func/main.out -o %t.keep.dSYM -keep-function-for-static25RUN: llvm-dwarfdump %t.omit.dSYM | FileCheck %s --check-prefix OMIT26RUN: llvm-dwarfdump %t.keep.dSYM | FileCheck %s --check-prefix KEEP27 28KEEP: DW_AT_name ("MyDummyVar")29KEEP: DW_AT_name ("FOO_VAR_TYPE")30KEEP: DW_AT_name ("x1")31KEEP: DW_AT_name ("x2")32 33OMIT-NOT: DW_AT_name ("MyDummyVar")34OMIT-NOT: DW_AT_name ("FOO_VAR_TYPE")35OMIT-NOT: DW_AT_name ("x1")36OMIT-NOT: DW_AT_name ("x2")37