Merge "Refactor the bp file to avoid arch variant in cc_genrule."
diff --git a/libc/Android.bp b/libc/Android.bp
index cf7e82c..8ff80e5 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -1759,6 +1759,15 @@
keep_symbols: true,
},
},
+ riscv64: {
+ version_script: ":libc.riscv64.map",
+
+ // Leave the symbols in the shared library so that stack unwinders can produce
+ // meaningful name resolution.
+ strip: {
+ keep_symbols: true,
+ },
+ },
x86: {
// TODO: This is to work around b/24465209. Remove after root cause is fixed.
pack_relocations: false,
@@ -1834,6 +1843,14 @@
}
genrule {
+ name: "libc.riscv64.map",
+ out: ["libc.riscv64.map"],
+ srcs: ["libc.map.txt"],
+ tools: ["generate-version-script"],
+ cmd: "$(location generate-version-script) riscv64 $(in) $(out)",
+}
+
+genrule {
name: "libc.x86.map",
out: ["libc.x86.map"],
srcs: ["libc.map.txt"],
@@ -2032,6 +2049,9 @@
arm64: {
version_script: ":libstdc++.arm64.map",
},
+ riscv64: {
+ version_script: ":libstdc++.riscv64.map",
+ },
x86: {
pack_relocations: false,
ldflags: ["-Wl,--hash-style=both"],
@@ -2060,6 +2080,14 @@
}
genrule {
+ name: "libstdc++.riscv64.map",
+ out: ["libstdc++.riscv64.map"],
+ srcs: ["libstdc++.map.txt"],
+ tools: ["generate-version-script"],
+ cmd: "$(location generate-version-script) riscv64 $(in) $(out)",
+}
+
+genrule {
name: "libstdc++.x86.map",
out: ["libstdc++.x86.map"],
srcs: ["libstdc++.map.txt"],
diff --git a/libc/arch-common/bionic/crtbegin.c b/libc/arch-common/bionic/crtbegin.c
index 9b8ad4e..b87db64 100644
--- a/libc/arch-common/bionic/crtbegin.c
+++ b/libc/arch-common/bionic/crtbegin.c
@@ -56,6 +56,8 @@
__asm__(PRE
"xorl %ebp,%ebp; movl %esp,%eax; andl $~0xf,%esp; subl $12,%esp; pushl %eax;"
"call _start_main" POST);
+#elif defined(__riscv)
+__asm__(PRE "li fp,0; li ra,0; mv a0,sp; tail _start_main" POST);
#elif defined(__x86_64__)
__asm__(PRE "xorl %ebp, %ebp; movq %rsp,%rdi; andq $~0xf,%rsp; callq _start_main" POST);
#else