Get --ftrace working on aarch64

This change implements a new approach to function call logging, that's
based on the GCC flag: -fpatchable-function-entry. Read the commentary
in build/config.mk to learn how it works.
This commit is contained in:
Justine Tunney 2023-06-05 23:35:31 -07:00
parent 5b908bc756
commit eb40cb371d
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
934 changed files with 2259 additions and 1268 deletions

View file

@ -69,7 +69,7 @@ o/$(MODE)/test/libc/intrin/lock_test.com.dbg: \
@$(APELINK)
$(TEST_LIBC_INTRIN_OBJS): private \
OVERRIDE_CFLAGS += \
CFLAGS += \
-fno-builtin
.PHONY: o/$(MODE)/test/libc/intrin

View file

@ -77,7 +77,7 @@ o/$(MODE)/test/libc/runtime/getenv_test.com.runs: \
@HELLO=THERE build/runit $@ $<
o/$(MODE)/test/libc/runtime/itsatrap_test.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
-fno-sanitize=all \
-ftrapv

View file

@ -63,7 +63,7 @@ o/$(MODE)/test/libc/str/str.pkg: \
$(foreach x,$(TEST_LIBC_STR_DIRECTDEPS),$($(x)_A).pkg)
o/$(MODE)/test/libc/str/tpenc_test.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
$(TRADITIONAL)
o/$(MODE)/test/libc/str/%.com.dbg: \
@ -80,7 +80,7 @@ $(TEST_LIBC_STR_OBJS): private \
-fno-builtin
o/$(MODE)/test/libc/str/memmove_test.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
-O2 -D_FORTIFY_SOURCE=2
.PHONY: o/$(MODE)/test/libc/str

View file

@ -56,7 +56,7 @@ o/$(MODE)/test/libc/thread/%.com.dbg: \
@$(APELINK)
o/$(MODE)/test/libc/thread/pthread_create_test.o: \
private OVERRIDE_CPPFLAGS += \
private CPPFLAGS += \
-DSTACK_FRAME_UNLIMITED
.PHONY: o/$(MODE)/test/libc/thread

View file

@ -58,7 +58,7 @@ o/$(MODE)/test/libc/tinymath/%.com.dbg: \
@$(APELINK)
$(TEST_LIBC_TINYMATH_OBJS): private \
OVERRIDE_CFLAGS += \
CFLAGS += \
-fno-builtin
.PHONY: o/$(MODE)/test/libc/tinymath

View file

@ -16,9 +16,9 @@
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
*/
#include "tool/build/lib/asmdown.h"
#include "libc/str/str.h"
#include "libc/testlib/testlib.h"
#include "tool/build/lib/asmdown.h"
TEST(ParseAsmdown, test) {
struct Asmdown *ad;
@ -30,8 +30,9 @@ TEST(ParseAsmdown, test) {
/\n\
/ @param xmm0 has double in lower half\n\
/ @return xmm0 has result in lower half\n\
fabs: .leafprologue\n\
.profilable\n\
.ftrace1\n\
fabs: .ftrace2\n\
.leafprologue\n\
mov $0x7fffffffffffffff,%rax\n\
movq %xmm0,%rdx\n\
and %rax,%rdx\n\
@ -67,7 +68,7 @@ tinymath_acos:\n\
EXPECT_STREQ("xmm0 has result in lower half",
ad->symbols.p[0].javadown->tags.p[1].text);
EXPECT_EQ(17, ad->symbols.p[1].line);
EXPECT_EQ(18, ad->symbols.p[1].line);
EXPECT_STREQ("tinymath_acos", ad->symbols.p[1].name);
EXPECT_FALSE(ad->symbols.p[1].javadown->isfileoverview);
EXPECT_STREQ("Returns arc cosine of 𝑥.", ad->symbols.p[1].javadown->title);